/* SurpriseCalendar Main Styles */
/* "Warm Gift" redesign 2026-07-08 — Creme, Ziegelrot, warmes Charcoal (Kunden-Mockup) */

/* ============================================
   HEADER — Script-Logo links, Nav zentriert, Icons rechts
   ============================================ */

.site-header {
  position: sticky;
  top: 0;
  z-index: 10001;
  background: var(--color-bg);
  border-bottom: 1px solid rgba(var(--color-text-rgb), 0.08);
}

.header-nav {
  display: grid;
  /* Desktop: Logo | Nav | Icons. Der Hamburger ist display:none und wird
     nicht platziert; mobil rückt er in Spalte 1 (s. Media Query). */
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-2) var(--space-4);
  position: relative;
}

/* Script-Wortmarke (Mockup: zweizeiliges rotes Script + Tagline) */
.logo {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  text-decoration: none;
  padding: var(--space-1) 0;
}

/* Offizielles Bild-Logo im Header (2026-07-08). Die .logo-script-Textmarke
   bleibt für den Footer (dunkler Grund — schwarze Logo-Schrift wäre dort unleserlich). */
.logo-img {
  display: block;
  height: 60px;
  width: auto;
  transition: opacity var(--transition-fast);
}

.logo:hover .logo-img {
  opacity: 0.85;
}

.logo-script {
  display: flex;
  flex-direction: column;
  font-family: var(--font-script);
  font-weight: 400;
  color: var(--color-primary-text);
  font-size: 1.45rem;
  line-height: 0.9;
  transition: color var(--transition-fast);
}

.logo-script-l2 {
  margin-left: 1.15em;
  margin-top: 0.04em;
}

.logo:hover .logo-script {
  color: var(--color-primary-dark);
}

.logo-tagline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-subheading);
  font-size: 0.5rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--color-primary-text);
  white-space: nowrap;
}

.logo-tagline::before,
.logo-tagline::after {
  content: '';
  display: inline-block;
  width: 10px;
  height: 1px;
  background: currentColor;
}

/* Sprachumschalter (i18n 2026-07-08): DE / EN rechts neben den Header-Icons */
.lang-switch {
  display: flex;
  align-items: center;
  gap: 2px;
  font-family: var(--font-subheading);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.lang-switch-link {
  color: var(--color-text);
  opacity: 0.55;
  text-decoration: none;
  padding: 6px 3px;
}

.lang-switch-link:hover {
  opacity: 0.85;
}

.lang-switch-link.active {
  color: var(--color-primary-text);
  opacity: 1;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.lang-switch-sep {
  opacity: 0.35;
}

/* Navigation Links — zentriert, aktive Seite mit roter Unterstreichung */
.nav-links {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(var(--space-4), 3vw, var(--space-10));
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav-links li a {
  display: inline-block;
  position: relative;
  padding: var(--space-2) 0;
  color: var(--color-text);
  font-family: var(--font-subheading);
  font-weight: 500;
  font-size: 0.95rem;
  transition: color var(--transition-fast);
  text-decoration: none;
}

.nav-links li a:hover {
  color: var(--color-primary-text);
}

/* aria-current wird von main.js (initActiveNav) gesetzt */
.nav-links li a[aria-current="page"]::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  border-radius: 1px;
  background: var(--color-primary);
}

/* Icon-Gruppe rechts (Account + Warenkorb) */
.header-icons {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.header-icon-link {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  color: var(--color-text);
  transition: all var(--transition-fast);
}

.header-icon-link svg {
  width: 22px;
  height: 22px;
}

.header-icon-link:hover {
  color: var(--color-primary-text);
  background: rgba(var(--color-primary-rgb), 0.08);
}

/* Cart Link with Badge */
.cart-link {
  position: relative;
}

.cart-count {
  position: absolute;
  top: 2px;
  right: 0;
  background: var(--color-primary);
  color: white;
  font-size: 0.65rem;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  border-radius: var(--radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--color-bg);
}

/* Hamburger Menu Button */
.mobile-menu-btn {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 32px;
  height: 32px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
  z-index: 10;
}

.mobile-menu-btn span {
  display: block;
  width: 100%;
  height: 2px;
  background: var(--color-text);
  border-radius: 2px;
  transition: all 0.3s;
}

.mobile-menu-btn.active span:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.mobile-menu-btn.active span:nth-child(2) {
  opacity: 0;
}

.mobile-menu-btn.active span:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

/* Mobile Navigation — Mockup mobil: Hamburger links, Logo mittig, Icons rechts */
@media (max-width: 767px) {
  .mobile-menu-btn {
    display: flex;
  }

  .header-nav {
    grid-template-columns: 44px 1fr auto;
  }

  .logo {
    justify-self: center;
  }

  .logo-img {
    height: 48px;
  }

  .logo-script {
    font-size: 1.25rem;
  }

  .nav-links {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    background: var(--color-bg);
    border-bottom: 1px solid rgba(var(--color-text-rgb), 0.08);
    box-shadow: 0 10px 30px rgba(62, 45, 24, 0.12);
    padding: var(--space-4);
    gap: var(--space-2);
  }

  .nav-links.active {
    display: flex;
  }

  .nav-links li a {
    padding: var(--space-3) var(--space-4);
    width: 100%;
  }

  .nav-links li a[aria-current="page"]::after {
    left: var(--space-4);
    right: auto;
    width: 24px;
    bottom: var(--space-2);
  }
}

/* ============================================
   HERO — vollflächiges, sprachabhängiges Bild (2026-07-15).
   Headline/Beschreibung/USPs sind im Bild eingebacken; h1 + Subline bleiben
   als .sr-only im DOM (SEO/Screenreader), das ganze Bild verlinkt auf
   #konfigurator. Die frühere Copy/Visual-Grid-Karte inkl. Kalender-Mock
   liegt in der Git-History (bis 2026-07-15).
   ============================================ */

.hero-main {
  padding: var(--space-6) 0 var(--space-2);
}

.hero-card {
  background: var(--color-bg-warm);
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.hero-card-link {
  display: block;
  position: relative; /* Anker für das CTA-Overlay */
}

.hero-card-image {
  display: block;
  width: 100%;
  height: auto;
}

/* CTA auf dem Hero-Bild: flacher roter Button nach Design-System (Poppins 600,
   UPPERCASE, radius 8). Prozentual in der freien Bodenfläche links neben dem
   Welpen verankert (Bild 1700×1246: Lücke zwischen Geschenkbox ~53% und Hund
   ~67%); Größe skaliert fluid mit dem Viewport. */
.hero-cta-overlay {
  position: absolute;
  left: 60%;
  bottom: 9%;
  transform: translateX(-50%);
  background: var(--color-primary);
  color: #ffffff;
  font-family: var(--font-subheading);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  border-radius: 8px;
  padding: clamp(7px, 1.1vw, 14px) clamp(13px, 1.9vw, 26px);
  font-size: clamp(0.7rem, 1.35vw, 1rem);
  box-shadow: 0 6px 16px rgba(62, 45, 24, 0.28);
  transition: background-color var(--transition-fast), transform var(--transition-fast);
}

.hero-card-link:hover .hero-cta-overlay,
.hero-card-link:focus-visible .hero-cta-overlay {
  background: var(--color-primary-dark);
  transform: translateX(-50%) translateY(-1px);
}

/* 2026-09-25: Auf FullHD (und 1366×768-Laptops) füllte die 1168 px breite
   Hero-Karte (856 px hoch) den ganzen ersten Viewport — „alles viel zu groß".
   Ab Tablet-Querformat wird die Karte auf 900 px gedeckelt UND an die
   Viewport-Höhe gebunden (Bild 1700×1246 ≙ Faktor 1.3644; 200 px = Header +
   Abstände), damit Hero samt CTA in den ersten Viewport passt. Untergrenze
   600 px, damit der eingebackene Text lesbar bleibt. Der CTA skaliert weiter
   mit vw (clamp), nicht mit der Karte. */
@media (min-width: 769px) {
  .hero-card--image {
    max-width: clamp(600px, calc((100vh - 200px) * 1.3644), 900px);
    margin-left: auto;
    margin-right: auto;
  }
}

/* Screenreader-only: visuell unsichtbar, für assistive Technologien voll da */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ============================================
   SECTION TITLE — Serifen-Titel mit rotem Strich-Ornament + Linie·Punkt·Linie
   ============================================ */

.section-title {
  text-align: center;
  font-family: var(--font-heading);
  font-size: var(--font-size-3xl);
  font-weight: 700;
  color: var(--color-text);
  margin-bottom: var(--space-10);
}

.section-title::before {
  /* drei kleine rote Striche (Mockup-Ornament über dem Titel) */
  content: '';
  display: block;
  width: 26px;
  height: 15px;
  margin: 0 auto var(--space-2);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 15'%3E%3Cg stroke='%23B23A31' stroke-width='2' stroke-linecap='round' fill='none'%3E%3Cpath d='M13 2v7'/%3E%3Cpath d='M4 4.5l4.5 5.5'/%3E%3Cpath d='M22 4.5L17.5 10'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}

.section-title::after {
  /* Linie · Punkt · Linie */
  content: '';
  display: block;
  width: 72px;
  height: 7px;
  margin: var(--space-3) auto 0;
  background:
    radial-gradient(circle at center, var(--color-primary) 0 3px, transparent 3.5px) center / 7px 7px no-repeat,
    linear-gradient(var(--color-primary), var(--color-primary)) left center / 26px 1px no-repeat,
    linear-gradient(var(--color-primary), var(--color-primary)) right center / 26px 1px no-repeat;
}

/* ============================================
   SO FUNKTIONIERT'S — 4 Outline-Kreise mit gestrichelten Connectoren
   ============================================ */

.how-it-works {
  padding: var(--space-16) 0 var(--space-8);
}

.hiw-steps {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: var(--space-2);
  max-width: 900px;
  margin: 0 auto;
}

/* Die vier Kacheln sind seit 2026-09-08 <a href="#konfigurator"> (gleiche Seite;
   scroll-behavior: smooth kommt aus dem Design-System). Optik bleibt, dazu
   Hover-/Fokus-Feedback: Kreis füllt sich ziegelrot, Icon wird creme. */
.hiw-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  flex: 0 0 auto;
  width: 9.5rem;
  text-align: center;
  color: inherit;          /* nicht das globale a { color: primary } — das Label bleibt Charcoal */
  text-decoration: none;
  cursor: pointer;
  border-radius: 12px;     /* Form des Fokusrings */
}

.hiw-step:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 4px;
}

.hiw-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 92px;
  height: 92px;
  border-radius: 50%;
  border: 1px solid var(--color-accent);
  background: #FBF8F2;
  color: var(--color-primary-text);
  transition: background var(--transition-fast), border-color var(--transition-fast),
    color var(--transition-fast), transform var(--transition-fast);
}

.hiw-step:hover .hiw-icon,
.hiw-step:focus-visible .hiw-icon {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #FBF8F2;
  transform: translateY(-2px);
}

.hiw-step:hover .hiw-label,
.hiw-step:focus-visible .hiw-label {
  color: var(--color-primary-dark);
}

.hiw-icon svg {
  width: 38px;
  height: 38px;
}

.hiw-label {
  font-family: var(--font-subheading);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--color-text);
}

.hiw-connector {
  flex: 1 1 0;
  max-width: 90px;
  border-top: 2px dashed var(--color-accent-dark);
  margin-top: 46px; /* vertikal mittig zum 92px-Kreis */
}

@media (max-width: 640px) {
  .hiw-steps {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6) var(--space-2);
    justify-items: center;
  }

  .hiw-connector {
    display: none;
  }
}

/* Sprungziel der Schritt-Kacheln und des Hero-CTAs: der Modus-Umschalter soll
   unter dem Sticky-Header (~85 px: 60-px-Logo + Innenabstände) frei stehen,
   nicht darunter verschwinden. */
#konfigurator {
  scroll-margin-top: 6rem;
}

/* Legacy Hero (Verlaufs-Banner) — von keiner Seite mehr genutzt, Klasse bleibt
   für ältere Inhalte definiert */
.hero {
  background: var(--gradient-hero);
  color: var(--color-text);
  padding: var(--space-20) 0;
  text-align: center;
}

.hero h1 {
  font-size: var(--font-size-5xl);
  font-weight: 700;
  margin-bottom: var(--space-4);
}

.hero-subtitle {
  font-size: var(--font-size-xl);
  opacity: 0.9;
  max-width: 600px;
  margin: 0 auto var(--space-8);
}

.hero-cta {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}

/* Features Section */
.features {
  padding: var(--space-20) 0;
}

.features h2 {
  text-align: center;
  font-size: var(--font-size-3xl);
  margin-bottom: var(--space-12);
}

.features-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-8);
}

.feature-card {
  background: var(--color-bg-white);
  padding: var(--space-8);
  border-radius: var(--radius-xl);
  text-align: center;
  box-shadow: var(--shadow-md);
}

.feature-icon {
  font-size: 3rem;
  display: block;
  margin-bottom: var(--space-4);
}

.feature-card h3 {
  margin-bottom: var(--space-2);
}

.feature-card p {
  color: var(--color-text-muted);
}

/* Configurator */
.configurator-section {
  padding: var(--space-8) 0;
}

.configurator-layout {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-8);
  min-height: 80vh;
}

@media (max-width: 1024px) {
  .configurator-layout {
    grid-template-columns: 1fr;
  }
}

.configurator-preview {
  background: var(--color-bg-white);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  box-shadow: var(--shadow-md);
}

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: var(--space-2);
  aspect-ratio: 4/3;
}

.calendar-door {
  background: var(--gradient-primary);
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: var(--font-size-xl);
  font-weight: 700;
  cursor: pointer;
  transition: all var(--transition-fast);
  position: relative;
  overflow: hidden;
}

.calendar-door:hover {
  transform: scale(1.05);
}

.calendar-door.has-image {
  background-size: cover;
  background-position: center;
}

.calendar-door.has-image::before {
  content: attr(data-day);
  position: absolute;
  bottom: 4px;
  right: 4px;
  background: rgba(0, 0, 0, 0.7);
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-sm);
}

.configurator-controls {
  background: var(--color-bg-white);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  box-shadow: var(--shadow-md);
}

.configurator-controls h2 {
  margin-bottom: var(--space-6);
}

.configurator-controls h3 {
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-3);
}

.upload-section,
.title-section {
  margin-bottom: var(--space-6);
}

.upload-dropzone {
  border: 2px dashed var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  text-align: center;
  transition: all var(--transition-fast);
  cursor: pointer;
}

.upload-dropzone:hover,
.upload-dropzone.dragover {
  border-color: var(--color-primary);
  background: rgba(var(--color-primary-rgb), 0.05);
}

.upload-label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  color: var(--color-text-muted);
  cursor: pointer;
}

.upload-icon {
  font-size: 2rem;
}

.uploaded-images {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-4);
}

.uploaded-images .thumb {
  width: 60px;
  height: 60px;
  border-radius: var(--radius-md);
  -o-object-fit: cover;
     object-fit: cover;
  border: 2px solid transparent;
  cursor: pointer;
}

.uploaded-images .thumb:hover {
  border-color: var(--color-primary);
}

.configurator-actions {
  display: flex;
  gap: var(--space-4);
  margin-top: var(--space-8);
}

.configurator-actions .btn {
  flex: 1;
}

/* ============================================
   FOOTER — solide dunkle Fläche, Creme-Text ("Warm Gift", kein Glas/Parallax)
   ============================================ */

.site-footer {
  position: relative;
  color: #F5F0E6;
  background: var(--color-bg-dark);
  padding: var(--space-16) 0 var(--space-8);
  margin-top: auto;
  overflow: hidden;
}

.footer-inner {
  max-width: 1100px;
  margin: 0 auto;
}

/* Script-Wortmarke im Footer: helle Rot-Nuance auf dunklem Grund */
.footer-logo-script {
  font-size: 1.5rem;
  color: var(--color-primary-light);
}

/* Offizielles Logo im Footer (Hell-Variante für dunklen Grund, 2026-07-08) */
.footer-logo-img {
  display: block;
  height: 84px;
  width: auto;
  margin-bottom: var(--space-2);
}

.footer-logo-tagline {
  color: rgba(245, 240, 230, 0.6);
  margin-bottom: var(--space-2);
}

.footer-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-8);
  margin-bottom: var(--space-8);
}

@media (max-width: 992px) {
  .footer-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 768px) {
  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .footer-grid {
    grid-template-columns: 1fr;
    text-align: center;
  }
}

.footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
}

@media (max-width: 480px) {
  .footer-brand {
    align-items: center;
  }
}

.footer-brand p {
  color: rgba(245, 240, 230, 0.78);
  font-size: var(--font-size-sm);
}

.footer-links h4 {
  margin-bottom: var(--space-4);
  color: #F5F0E6;
  font-weight: 600;
}

.footer-links ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-links a {
  color: rgba(245, 240, 230, 0.72);
}

.footer-links a:hover {
  color: #ffffff;
}

/* Footer-QR: white surround doubles as the QR quiet zone on the dark footer */
.footer-qr {
  margin-top: var(--space-4);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
}

.footer-qr img {
  width: 104px;
  height: auto;
  background: #ffffff;
  padding: 6px;
  border-radius: var(--radius-md);
}

.footer-qr span {
  font-size: var(--font-size-xs);
  color: rgba(245, 240, 230, 0.6);
  max-width: 160px;
}

.footer-bottom {
  border-top: 1px solid rgba(245, 240, 230, 0.14);
  padding-top: var(--space-8);
  text-align: center;
  color: rgba(245, 240, 230, 0.6);
}

/* Products */
.products-section {
  padding: var(--space-12) 0;
}

.products-section h1 {
  text-align: center;
  margin-bottom: var(--space-8);
}

.products-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-6);
  max-width: 700px;
  margin: 0 auto;
}

@media (max-width: 640px) {
  .products-grid {
    grid-template-columns: 1fr;
  }
}

/* Cart */
.cart-section {
  padding: var(--space-12) 0;
}

.cart-content {
  max-width: 800px;
  margin: 0 auto;
}

.cart-empty {
  text-align: center;
  padding: var(--space-12);
  background: var(--color-bg-white);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
}

.cart-items {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.cart-item {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-4);
  background: var(--color-bg-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  align-items: center;
}

.cart-item-image {
  width: 120px;
  height: 90px;
  flex-shrink: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-bg);
}

.cart-item-image img {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

/* Cart preview thumbnail — captured JPEG from html2canvas */
.cart-preview-container {
  position: relative;
  width: 180px;
  height: 132px;
  overflow: hidden;
  border: 2px solid var(--color-primary);
  border-radius: var(--radius-md);
  background: #fff;
  cursor: pointer;
  transition: box-shadow 0.2s ease;
  flex-shrink: 0;
}

.cart-preview-container:hover {
  box-shadow: var(--shadow-lg);
}

/* Subtle marker shown when the cart image is a fallback (stock/door image),
   not the captured html2canvas snapshot of the design (FMAE-231). */
.cart-preview-pending {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
  font-size: 11px;
  line-height: 1.3;
  text-align: center;
  padding: 3px 4px;
  pointer-events: none;
}

.cart-preview-image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}


/* Text centering utility */
.text-center {
  text-align: center;
}

/* Price details styling */
.cart-item-price-details {
  margin: var(--space-1) 0;
}

.price-excl {
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
}

.price-incl-label {
  font-size: var(--font-size-sm);
  color: var(--color-primary-text);
  font-weight: 600;
}

/* Einkaufsgruppen (2026-08-25): Preisgruppen-Kontext für Geschäftskunden.
   Der Badge erklärt abweichende Preise; der durchgestrichene Listenpreis
   zeigt die Ersparnis. Mobile-first: umbrechend, keine festen Breiten. */
.price-group-badge {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--color-primary);
  background: var(--color-surface-alt, rgba(0, 0, 0, 0.03));
  border-radius: var(--radius-sm, 4px);
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--color-text);
}

.price-group-note {
  font-weight: 400;
  color: var(--color-text-muted);
}

.product-price-standard {
  margin-right: var(--space-2);
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  font-weight: 400;
  text-decoration: line-through;
}


/* Preview Lightbox Modal */
.cart-preview-lightbox {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.85);
  /* Must sit above the sticky site header (z-index 10001), per the CLAUDE.md
     modal convention (>= 10010), else the navbar punches through the overlay. — FMAE-222 */
  z-index: 10010;
  justify-content: center;
  align-items: center;
  padding: var(--space-6);
  box-sizing: border-box;
}

.cart-preview-lightbox.active {
  display: flex;
}

.cart-preview-lightbox-content {
  position: relative;
  width: calc(100% - 32px);
  max-width: 850px;
  height: auto;
  /* cap height so the aspect box can't overflow short/landscape mobile viewports
     (the inner image is object-fit:contain, so it shrinks to fit). FMAE-241 */
  max-height: calc(100vh - 32px);
  /* 33/24 = 330×240-mm-Stanzen-Front (2026-07-22, vorher 30/22) */
  aspect-ratio: 33 / 24;
  background: #fff;
  border-radius: var(--radius-xl);
  overflow: hidden;
  padding: 0;
  border: 2px solid var(--color-primary);
  box-sizing: border-box;
}

.cart-preview-lightbox-close {
  position: absolute;
  top: var(--space-2);
  right: var(--space-2);
  width: 40px;
  height: 40px;
  background: var(--color-bg-white);
  border: none;
  border-radius: 50%;
  font-size: 1.5rem;
  cursor: pointer;
  z-index: 10;
  box-shadow: var(--shadow-md);
}

.cart-preview-lightbox-close:hover {
  background: var(--color-bg);
}

.cart-preview-lightbox-preview {
  /* Fill the entire content area and center the captured image */
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.cart-preview-lightbox-image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

.cart-item-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  background: var(--color-bg);
}

.cart-item-details {
  flex: 1;
  min-width: 0; /* Allow text to wrap */
}

.cart-item-details h3 {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-lg);
  word-wrap: break-word;
}

.cart-item-price {
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  margin: 0;
}

.cart-item-subtotal {
  font-weight: 600;
  color: var(--color-primary-text);
  margin: var(--space-1) 0 0;
}

/* Quantity stepper — 44px touch targets (mobile-first) */
.cart-qty-stepper {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-2) 0;
}

.cart-qty-btn {
  width: 44px;
  height: 44px;
  border: 1px solid var(--color-primary);
  background: var(--color-bg-white);
  color: var(--color-primary-text);
  border-radius: var(--radius-md);
  font-size: var(--font-size-lg);
  line-height: 1;
  cursor: pointer;
  /* rapid tapping is the primary gesture — suppress double-tap zoom (iOS) */
  touch-action: manipulation;
  -moz-user-select: none;
       user-select: none;
  -webkit-user-select: none;
}

/* hover only on devices that actually hover — avoids sticky inverted state after taps */
@media (hover: hover) {
  .cart-qty-btn:hover:not(:disabled) {
    background: var(--color-primary);
    color: #fff;
  }
}

.cart-qty-btn:active:not(:disabled) {
  background: var(--color-primary);
  color: #fff;
}

.cart-qty-btn:disabled {
  opacity: 0.35;
  cursor: default;
}

.cart-qty-value {
  min-width: 2.5em;
  text-align: center;
  font-weight: 600;
  font-size: var(--font-size-lg);
}

.cart-qty-stepper.is-saving {
  opacity: 0.5;
  pointer-events: none;
}

.cart-item-actions {
  display: flex;
  gap: var(--space-2);
  flex-shrink: 0;
}

.cart-summary {
  background: var(--color-bg-white);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
}

.cart-totals {
  margin-bottom: var(--space-6);
}

/* Mobile Cart Responsive */
@media (max-width: 600px) {
  .cart-item {
    flex-direction: column;
    align-items: stretch;
  }
  
  .cart-preview-container {
    width: 100%;
    height: auto;
    /* 33/24 = 330×240-mm-Stanzen-Front (2026-07-22, vorher 30/22) */
    aspect-ratio: 33 / 24;
    max-height: 200px;
  }

  .cart-item-details {
    text-align: center;
  }
  
  .cart-item-actions {
    justify-content: center;
  }
  
  .cart-item-image {
    width: 100%;
    height: 150px;
  }
  
  .cart-summary {
    padding: var(--space-4);
  }
}

/* Checkout */
.checkout-section {
  padding: var(--space-12) 0;
}

.checkout-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-8);
  max-width: 1000px;
  margin: 0 auto;
}

@media (max-width: 768px) {
  .checkout-grid {
    /* minmax(0, …): die Karte darf schmaler werden als ihr Inhalt — mit
       bloßem 1fr drückten die drei Tabs die Kasse bei 320 px auf 350 px
       Breite (horizontales Scrollen, 2026-10-01). */
    grid-template-columns: minmax(0, 1fr);
  }
}

.checkout-info {
  background: var(--color-bg-white);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
}

.checkout-summary {
  background: var(--color-bg-white);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
  height: -moz-fit-content;
  height: fit-content;
}

/* Checkout Tabs */
.checkout-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
  border-bottom: 2px solid var(--color-border);
  padding-bottom: var(--space-2);
}

.checkout-tab {
  padding: var(--space-2) var(--space-4);
  background: none;
  border: none;
  font-size: var(--font-size-sm);
  font-weight: 500;
  color: var(--color-text-muted);
  cursor: pointer;
  border-radius: var(--radius-md) var(--radius-md) 0 0;
  transition: all var(--transition-fast);
}

.checkout-tab:hover {
  color: var(--color-primary-text);
  background: rgba(var(--color-primary-rgb), 0.05);
}

.checkout-tab.active {
  color: var(--color-primary-text);
  border-bottom: 2px solid var(--color-primary);
  margin-bottom: -2px;
}

.checkout-tab-content {
  display: none;
}

.checkout-tab-content.active {
  display: block;
}

.checkout-tab-content h2 {
  font-size: var(--font-size-xl);
  margin-bottom: var(--space-4);
}

/* Logged-in Info */
.logged-in-info {
  background: rgba(47, 122, 80, 0.1);
  border: 1px solid var(--color-success);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  margin-bottom: var(--space-4);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.logged-in-info p {
  margin: 0;
  color: var(--color-success);
}

/* Form Styles */
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}

@media (max-width: 480px) {
  .form-row {
    grid-template-columns: 1fr;
  }
}

.form-error {
  background: rgba(220, 53, 69, 0.1);
  color: #dc3545;
  padding: var(--space-3);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  font-size: var(--font-size-sm);
}

.form-hint {
  text-align: center;
  margin-top: var(--space-4);
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.form-hint a {
  color: var(--color-primary-text);
}

.checkout-note {
  background: rgba(var(--color-primary-rgb), 0.06);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-bottom: var(--space-4);
}

/* Checkout Items */
.checkout-items {
  border-bottom: 1px solid var(--color-border);
  padding-bottom: var(--space-4);
  margin-bottom: var(--space-4);
}

.checkout-item {
  display: flex;
  justify-content: space-between;
  padding: var(--space-2) 0;
}

.checkout-totals {
  margin-bottom: var(--space-6);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  padding: var(--space-2) 0;
  font-size: var(--font-size-sm);
}

.totals-total {
  font-weight: 700;
  font-size: var(--font-size-lg);
  border-top: 2px solid var(--color-text);
  padding-top: var(--space-3);
  margin-top: var(--space-2);
}

/* Gutscheine (2026-10-01): "Gutschein vorhanden?" in der Bestellübersicht der
   Kasse + Rabattzeile in den Summen (Kasse, Warenkorb, Bestelldetail).
   Mobile-first: Eingabe und Button teilen sich die Zeile und brechen unter
   360 px um; keine festen Breiten. */
.totals-row.totals-discount {
  color: var(--color-primary-text);
  font-weight: 600;
}

/* .totals-row ist display:flex — das überstimmt das hidden-Attribut. */
.totals-row[hidden],
.coupon-form[hidden],
.coupon-applied[hidden] {
  display: none;
}

.coupon-box {
  border-bottom: 1px solid var(--color-border);
  padding-bottom: var(--space-4);
  margin-bottom: var(--space-4);
}

.coupon-form label {
  display: block;
  margin-bottom: var(--space-2);
  font-size: var(--font-size-sm);
  font-weight: 600;
}

.coupon-form-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.coupon-form-row input {
  flex: 1 1 10rem;
  min-width: 0;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg-white);
  color: var(--color-text);
  font: inherit;
  text-transform: uppercase;
  box-sizing: border-box;
}

.coupon-form-row input::-moz-placeholder {
  text-transform: none;
}

.coupon-form-row input::placeholder {
  text-transform: none;
}

.coupon-form-row input:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 1px;
}

.coupon-form-row .btn {
  flex: 0 0 auto;
}

.coupon-form .form-error {
  margin: var(--space-2) 0 0;
}

.coupon-applied {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--color-primary);
  background: var(--color-surface-alt, rgba(0, 0, 0, 0.03));
  border-radius: var(--radius-sm, 4px);
  font-size: var(--font-size-sm);
  font-weight: 600;
}

.coupon-remove {
  padding: 0;
  border: 0;
  background: none;
  color: var(--color-text-muted);
  font: inherit;
  font-weight: 400;
  text-decoration: underline;
  cursor: pointer;
}

.coupon-remove:hover,
.coupon-remove:focus-visible {
  color: var(--color-primary-text);
}

.coupon-notice {
  margin: 0 0 var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  background: rgba(var(--color-primary-rgb), 0.06);
  font-size: var(--font-size-sm);
  color: var(--color-text);
}

/* Erlagschein (2026-10-09): Zahlungsart an der Kasse + Adressformular und die
   Zahlungsanweisung (Danke-Seite, Kundenkonto). Nur Tokens — die Zweitmarke
   (dunkel) bekommt ihre Farben über brand-*.css. Mobile-first: Bankdaten und
   QR-Code stehen nebeneinander, solange Platz ist, sonst untereinander. */
.payment-methods {
  border: 0;
  padding: 0;
  margin: 0 0 var(--space-6);
  min-width: 0;
  display: grid;
  gap: var(--space-3);
}

.payment-methods legend {
  padding: 0;
  margin-bottom: var(--space-3);
  font-size: var(--font-size-xl);
  font-weight: 600;
}

.payment-method {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: border-color var(--transition-fast), background var(--transition-fast);
}

.payment-method:hover {
  border-color: rgba(var(--color-primary-rgb), 0.5);
}

.payment-method:has(input:checked) {
  border-color: var(--color-primary);
  background: rgba(var(--color-primary-rgb), 0.05);
}

.payment-method input {
  flex-shrink: 0;
  margin-top: 0.25em;
  accent-color: var(--color-primary);
}

.payment-method-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-width: 0;
}

.payment-method-title {
  font-weight: 600;
  color: var(--color-text);
}

.payment-method-desc {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.checkout-address[hidden],
.checkout-address-billing[hidden] {
  display: none;
}

.checkout-address {
  margin-bottom: var(--space-6);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-border);
}

.checkout-address h2 {
  font-size: var(--font-size-xl);
  margin-bottom: var(--space-4);
}

.checkout-address h3 {
  font-size: var(--font-size-lg);
  margin: var(--space-4) 0;
}

/* PLZ schmal, Ort breit — auch auf dem Handy nebeneinander */
.form-row.form-row--postal {
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.checkout-checkbox {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-2) 0;
  font-size: var(--font-size-sm);
  cursor: pointer;
}

.checkout-checkbox input {
  accent-color: var(--color-primary);
}

.checkout-legal {
  margin: var(--space-4) 0 0;
  font-size: var(--font-size-xs);
  color: var(--color-text-muted);
}

.checkout-legal a {
  color: var(--color-primary-text);
}

.checkout-card.checkout-card--wide {
  max-width: 44rem;
}

.erlagschein-box {
  margin: 0 0 var(--space-6);
  padding: var(--space-5);
  text-align: left;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}

.erlagschein-box__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-lg);
}

.erlagschein-box__due {
  margin: 0 0 var(--space-4);
  font-weight: 600;
  color: var(--color-primary-text);
}

.erlagschein-box__grid {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--space-5);
}

.erlagschein-box__details {
  flex: 1 1 16rem;
  min-width: 0;
  margin: 0;
  display: grid;
  gap: var(--space-3);
}

.erlagschein-box__details > div {
  display: grid;
  gap: 2px;
}

.erlagschein-box__details dt {
  font-size: var(--font-size-xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.erlagschein-box__details dd {
  margin: 0;
  color: var(--color-text);
  overflow-wrap: anywhere;
}

.erlagschein-box__mono {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* design-system.css setzt span { font-family } global — die IBAN erbt sonst nicht */
.erlagschein-box__mono span {
  font-family: inherit;
}

.erlagschein-copy {
  padding: 2px var(--space-2);
  font-family: var(--font-body);
  font-size: var(--font-size-xs);
  color: var(--color-text);
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  cursor: pointer;
}

.erlagschein-copy:hover,
.erlagschein-copy:focus-visible {
  border-color: var(--color-primary);
}

.erlagschein-box__qr {
  flex: 0 0 auto;
  margin: 0 auto;
  text-align: center;
}

/* Das PNG bringt Weiß + Ruhezone mit — scannbar auch auf dunklem Grund. */
.erlagschein-box__qr img {
  width: 180px;
  max-width: 100%;
  height: auto;
  image-rendering: pixelated;
  border-radius: var(--radius-sm);
}

.erlagschein-box__qr figcaption {
  max-width: 180px;
  margin: var(--space-2) auto 0;
  font-size: var(--font-size-xs);
  color: var(--color-text-muted);
}

.erlagschein-box__hint {
  margin: var(--space-4) 0 0;
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.order-detail-erlagschein {
  margin: var(--space-4) 0 var(--space-6);
}

.order-detail-erlagschein__note {
  margin: 0 0 var(--space-3);
  color: var(--color-text);
}

/* ============================================
   ACCOUNT & AUTH PAGES
   ============================================ */

.auth-section {
  padding: var(--space-12) 0;
  min-height: 60vh;
  display: flex;
  align-items: center;
}

.auth-card {
  background: var(--color-bg-white);
  padding: var(--space-8);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  max-width: 480px;
  margin: 0 auto;
}

.auth-card h1 {
  text-align: center;
  margin-bottom: var(--space-2);
  color: var(--color-primary-text);
}

.auth-subtitle {
  text-align: center;
  color: var(--color-text-muted);
  margin-bottom: var(--space-6);
}

.auth-form .form-group {
  margin-bottom: var(--space-4);
}

.auth-form label {
  display: block;
  margin-bottom: var(--space-1);
  font-weight: 500;
  color: var(--color-text);
}

.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"] {
  width: 100%;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--font-size-base);
  transition: border-color var(--transition-fast);
}

.auth-form input:focus {
  outline: none;
  border-color: var(--color-primary);
}

.auth-form input:disabled {
  background: var(--color-bg);
  cursor: not-allowed;
}

.auth-form small {
  display: block;
  margin-top: var(--space-1);
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.auth-form hr {
  margin: var(--space-8) 0;
  border: none;
  border-top: 1px solid var(--color-border);
}

.auth-form h3 {
  margin-bottom: var(--space-4);
  color: var(--color-text);
}

.form-success {
  background: rgba(47, 122, 80, 0.1);
  color: var(--color-success);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  font-size: var(--font-size-sm);
}

.auth-links {
  text-align: center;
  margin-top: var(--space-6);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-border);
}

.auth-links a {
  color: var(--color-primary-text);
  font-size: var(--font-size-sm);
}

.auth-links .divider {
  margin: 0 var(--space-2);
  color: var(--color-text-muted);
}

/* Account Dashboard */
.account-section {
  padding: var(--space-12) 0;
  min-height: 60vh;
}

.account-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-8);
  flex-wrap: wrap;
  gap: var(--space-4);
}

.account-header h1 {
  margin: 0;
}

.account-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-6);
  margin-bottom: var(--space-8);
}

.account-card {
  background: var(--color-bg-white);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
}

.account-card h3 {
  margin-bottom: var(--space-3);
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.account-card p {
  color: var(--color-text-muted);
  margin-bottom: var(--space-2);
}

/* Orders List */
.recent-orders h2 {
  margin-bottom: var(--space-4);
}

.orders-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.order-item {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4);
  background: var(--color-bg-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  flex-wrap: wrap;
}

.order-info {
  flex: 1;
  min-width: 150px;
}

.order-number {
  display: block;
  font-weight: 600;
}

.order-date {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.order-total {
  font-weight: 600;
}

.order-status {
  min-width: 100px;
}

.status-badge {
  display: inline-block;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 600;
  text-transform: uppercase;
}

/* warm getönte Status-Pastelle (Redesign 2026-07-08) */
.status-pending { background: #F3E5C3; color: #7A5A12; }
.status-paid { background: #DCEBDD; color: #24603A; }
.status-processing { background: #E3E0D2; color: #4E4A36; }
.status-shipped { background: #E8E2D5; color: #55503F; }
.status-delivered { background: #DCEBDD; color: #24603A; }
.status-cancelled { background: #F2D7D2; color: var(--color-status-cancelled); }

.empty-state {
  text-align: center;
  padding: var(--space-12);
  color: var(--color-text-muted);
}

.empty-state p {
  margin-bottom: var(--space-4);
}

/* Nav Auth Link */
.nav-auth-link {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

/* Nav Dropdown */
.nav-dropdown {
  position: relative;
}

.nav-dropdown-wrapper {
  position: relative;
  /* 2026-07-22: expliziter Basiszustand (vorher setzte nur JS display:flex) —
     Sichtbarkeit steuert initial die Klasse .is-hidden (Anti-Flicker). */
  display: flex;
}

.nav-dropdown-toggle {
  cursor: pointer;
}

.nav-dropdown-toggle::after {
  content: '▼';
  font-size: 0.6em;
  margin-left: var(--space-1);
  transition: transform var(--transition-fast);
}

.nav-dropdown-wrapper.active .nav-dropdown-toggle::after {
  transform: rotate(180deg);
}

.nav-dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  right: 0;
  min-width: 180px;
  background: var(--color-bg-white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  list-style: none;
  padding: var(--space-2) 0;
  margin: var(--space-1) 0 0 0;
  z-index: 10000;
  border: 1px solid rgba(0, 0, 0, 0.1);
}

/* Click-based toggle */
.nav-dropdown-wrapper.active .nav-dropdown-menu {
  display: block;
}

.nav-dropdown-menu li a {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  color: var(--color-text);
  text-decoration: none;
  transition: all var(--transition-fast);
  white-space: nowrap;
}

.nav-dropdown-menu li a:hover {
  background: rgba(var(--color-primary-rgb), 0.08);
  color: var(--color-primary-text);
}

/* ============================================
   FAQ SECTION
   ============================================ */

.faq-section {
  padding: var(--space-16) 0;
  background: var(--color-bg-warm);
  position: relative;
}

/* Titel-Deko kommt über .section-title (siehe oben) — faq-title trägt beide Klassen */

.faq-grid {
  -moz-column-count: 2;
       column-count: 2;
  -moz-column-gap: var(--space-4);
       column-gap: var(--space-4);
  max-width: 900px;
  margin: 0 auto;
}

@media (max-width: 768px) {
  .faq-grid {
    -moz-column-count: 1;
         column-count: 1;
  }
}

.faq-item {
  -moz-column-break-inside: avoid;
       break-inside: avoid;
  margin-bottom: var(--space-4);
  background: var(--color-bg-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow var(--transition-fast);
}

.faq-item:hover {
  box-shadow: var(--shadow-md);
}

.faq-question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: var(--space-4) var(--space-5);
  background: none;
  border: none;
  cursor: pointer;
  font-size: var(--font-size-base);
  font-weight: 600;
  color: var(--color-text);
  text-align: left;
  gap: var(--space-3);
  transition: all var(--transition-fast);
}

.faq-question:hover {
  color: var(--color-primary-text);
}

.faq-question span:first-child {
  flex: 1;
}

.faq-icon {
  font-size: var(--font-size-xl);
  font-weight: 400;
  color: var(--color-primary-text);
  transition: transform var(--transition-fast);
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.faq-question[aria-expanded="true"] .faq-icon {
  transform: rotate(45deg);
}

.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out, padding 0.3s ease-out;
}

.faq-question[aria-expanded="true"] + .faq-answer {
  max-height: 200px;
  padding: 0 var(--space-5) var(--space-4);
}

.faq-answer p {
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  line-height: 1.7;
  margin: 0;
}

/* Order Detail Page Styles */
.order-detail-card {
  background: white;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-soft);
  padding: var(--space-6);
  margin-bottom: var(--space-6);
}

.order-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--color-neutral-200);
  margin-bottom: var(--space-5);
}

.order-detail-info h2 {
  margin: 0 0 var(--space-2) 0;
  color: var(--color-text-heading);
}

.order-detail-info .order-date {
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
}

.order-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-6);
  margin-bottom: var(--space-5);
}

@media (max-width: 640px) {
  .order-detail-grid {
    grid-template-columns: 1fr;
  }
}

.order-detail-section h3 {
  font-size: var(--font-size-md);
  color: var(--color-text-heading);
  margin: 0 0 var(--space-3) 0;
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--color-neutral-100);
}

.address-block p {
  margin: var(--space-1) 0;
  color: var(--color-text-body);
}

.address-block .address-name {
  font-weight: var(--weight-semibold);
  color: var(--color-text-heading);
}

.no-address {
  color: var(--color-text-muted);
  font-style: italic;
}

.order-items-list {
  background: var(--color-neutral-50);
  border-radius: var(--radius-md);
  overflow: hidden;
}

.order-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-4);
  border-bottom: 1px solid var(--color-neutral-200);
}

.order-item-row:last-child {
  border-bottom: none;
}

.order-item-details {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

/* Bestelldetail: Design-Vorschau wie im Warenkorb (2026-07-22).
   Die spezifischere Regel hält die Thumbnail-Größe auch gegen die
   mobile .cart-item-image-Regel (width:100%) stabil. */
.order-item-row .order-item-preview {
  cursor: zoom-in;
  margin-right: var(--space-4);
}
.order-item-row .cart-item-image {
  width: 120px;
  height: 90px;
}
.order-item-row .order-item-details {
  flex: 1;
}

/* Komposit-Vorschau für Alt-Bestellungen ohne Capture (2026-07-22):
   Hintergrundbild + stanzexaktes Türchen-Overlay ([data-slot]-Geometrie aus
   configurator.css). Im 120px-Thumbnail dünne Ränder ohne Nummern; in der
   Lightbox (geklonter Knoten) volle Türchen-Optik. */
.order-preview-composite {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.order-preview-composite .order-preview-bg {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/* Mini-Chips im 120px-Thumbnail. Spezifität (0,3,0) ist Pflicht: die SPÄTER
   ladende configurator.css setzt .gbc-static-door .gbc-door-number (0,2,0)
   mit 1.5em — bei gleicher Spezifität gewann sie und die Nummern erschienen
   riesig (Bug 2026-07-22 abends). */
.order-item-preview .gbc-static-door .gbc-door-number {
  font-size: 0.5rem;
  font-weight: 600;
  padding: 1px 4px;
  border-radius: 2px;
}

.cart-preview-lightbox-preview .order-preview-composite {
  width: 100%;
  height: 100%;
  aspect-ratio: 33 / 24;
}

.order-item-details .item-name {
  font-weight: var(--weight-medium);
  color: var(--color-text-heading);
}

.order-item-details .item-quantity {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.order-item-price {
  font-weight: var(--weight-semibold);
  color: var(--color-text-heading);
}

.order-detail-totals {
  background: var(--color-neutral-50);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  margin-top: var(--space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  padding: var(--space-2) 0;
  color: var(--color-text-body);
}

.totals-row.total {
  font-weight: var(--weight-bold);
  font-size: var(--font-size-lg);
  color: var(--color-text-heading);
  border-top: 2px solid var(--color-neutral-300);
  margin-top: var(--space-2);
  padding-top: var(--space-3);
}

.payment-status {
  margin-top: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  text-align: center;
  font-weight: var(--weight-medium);
}

.payment-status.paid {
  background: var(--color-success-bg);
  color: var(--color-success);
}

.order-detail-actions {
  display: flex;
  gap: var(--space-3);
  margin-top: var(--space-5);
  padding-top: var(--space-5);
  border-top: 1px solid var(--color-neutral-200);
}

@media (max-width: 480px) {
  .order-detail-actions {
    flex-direction: column;
  }
  
  .order-detail-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* Make order items clickable */
.order-item {
  cursor: pointer;
  transition: background-color 0.2s;
}

.order-item:hover {
  background-color: var(--color-neutral-50);
}

.order-item-link {
  display: block;
  text-decoration: none;
  color: inherit;
}

/* ─────────────────────────────────────────────────────────────────────────────
   PWA chrome — update toast + install affordance
   Built by static/js/pwa.js (createElement + textContent only). Mobile-first.
   z-index sits above the sticky header (10001) but below modals (10010), so an
   open modal is never covered by a passive banner.
   ───────────────────────────────────────────────────────────────────────────── */

.pwa-toast,
.pwa-install-banner {
  position: fixed;
  left: 50%;
  bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  transform: translateX(-50%);
  z-index: 10005;
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: calc(100% - 32px);
  width: -moz-max-content;
  width: max-content;
  box-sizing: border-box;
  padding: 12px 16px;
  border-radius: 14px;
  background: var(--color-bg-white); /* Token statt #fff (2026-10-07) */
  color: var(--color-text, #2d3748);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
  border: 1px solid var(--color-border, #e2e8f0);
  font-size: 0.95rem;
  animation: pwa-fade 0.2s ease-out;
}

/* Opacity-only so the entrance never fights the X-centering transform, which
   differs between the desktop (translateX(-50%)) and mobile (full-width) layouts. */
@keyframes pwa-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.pwa-toast__text,
.pwa-install-banner__text {
  flex: 1 1 auto;
  min-width: 0;
}

.pwa-toast__btn,
.pwa-install-banner__btn {
  flex: 0 0 auto;
  cursor: pointer;
  border: none;
  font-weight: 600;
  font-size: 0.9rem;
  color: #fff;
  background: var(--color-primary, #B23A31);
  padding: 8px 16px;
  border-radius: 10px;
}

/* SurpriseCalendar (2026-10-02): the Samsung-Internet hint uses an <a> (intent://
   link to Chrome) — keep it white; the global a:hover (design-system.css) would
   otherwise turn the label dark red on red after a tap (sticky hover on touch). */
a.pwa-install-banner__btn,
a.pwa-install-banner__btn:hover {
  color: #fff;
  text-decoration: none;
}

/* Its text is too long for one row next to the link: in a single row the text
   was squeezed into a ~100-px column and the banner grew 220–290 px tall on
   phones. Stacked: text on its own row, link + ✕ below. */
.pwa-install-banner--stacked {
  flex-wrap: wrap;
}

.pwa-install-banner--stacked .pwa-install-banner__text {
  flex-basis: 100%;
}

.pwa-install-banner--stacked .pwa-install-banner__close {
  margin-left: auto;
}

.pwa-toast__close,
.pwa-install-banner__close {
  flex: 0 0 auto;
  cursor: pointer;
  border: none;
  background: transparent;
  color: var(--color-text-muted, #718096);
  font-size: 1rem;
  line-height: 1;
  padding: 6px;
}

/* On small screens span the width with side margins (CLAUDE.md modal rules). */
@media (max-width: 480px) {
  .pwa-toast,
  .pwa-install-banner {
    left: 16px;
    right: 16px;
    transform: none;
    width: auto;
    max-width: none;
  }
}

/* SurpriseCalendar (2026-09-12): Banner weg, solange ein Konfigurator-Modal
   offen ist. Auf dem Handy sind die Modale Vollbild und ihr Bestätigen-Button
   sitzt unten — genau unter dem Banner: "Text übernehmen" und "In den
   Warenkorb" waren so per Tipp nicht erreichbar (Puppeteer-Nachweis:
   elementFromPoint auf dem Button = .pwa-install-banner__text). ModalManager
   setzt body.modal-open; das Vorschau-Modal wird direkt per style.display
   geöffnet — daher zusätzlich :has() auf das sichtbare .gbc-modal. */
body.modal-open .pwa-install-banner,
body:has(.gbc-modal[style*="display: flex"]) .pwa-install-banner {
  display: none !important;
}

/* ============================================
   Utility: serverseitig gerenderter Initialzustand (Anti-Flicker, 2026-07-22).
   !important, weil einzelne Basisregeln (z. B. .floating-cart-badge in
   floating-cart.css) NACH dieser Datei laden. JS (updateAuthUI/
   updateCartCount) togglet die Klasse und bleibt damit die Autorität.
   ============================================ */
.is-hidden {
  display: none !important;
}

/* ============================================
   Stripe-Testmodus-Banner (2026-08-05).
   Sichtbar für ALLE Besucher, solange mandanten.stripe_test_mode aktiv ist
   (Wartungsfenster-Konzept). Bewusst NICHT sticky — der Site-Header bleibt
   das einzige Sticky-Element, die z-index-Kette (10001/10010) bleibt
   unangetastet. Gerendert von layout.templ (testModeOn(ctx)).
   ============================================ */
.testmode-banner {
  width: 100%;
  box-sizing: border-box;
  padding: 10px 16px;
  background: repeating-linear-gradient(
    45deg,
    #ffcc00,
    #ffcc00 24px,
    #f0be00 24px,
    #f0be00 48px
  );
  color: #1a1a1a;
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  text-align: center;
}

/* ============================================
   Shop-Erweiterung (SurpriseCalendar 2026-09-12): Füllungen, Zusatzartikel,
   Produktseite mit LMIV-Angaben, Kind-Positionen im Warenkorb, Paket-Hinweis,
   Sendungen im Kundenkonto.
   ============================================ */
.products-group-title {
  text-align: center;
  margin: var(--space-12) 0 var(--space-2);
}

.products-group-note {
  text-align: center;
  color: var(--color-text-muted);
  max-width: 620px;
  margin: 0 auto var(--space-6);
}

.products-grid--wide {
  max-width: 1000px;
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 900px) {
  .products-grid--wide {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 640px) {
  .products-grid--wide {
    grid-template-columns: 1fr;
  }
}

.product-card__link {
  display: block;
}

.product-info h3 a {
  color: inherit;
  text-decoration: none;
}

.product-baseprice,
.product-delivery,
.product-filling-note {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin: 0 0 var(--space-2);
}

.product-food-hint {
  font-size: var(--font-size-sm);
  margin: 0 0 var(--space-2);
}

.product-buy {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-2) 0;
}

.product-qty {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
}

.product-qty-input {
  width: 4.5em;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font: inherit;
}

.product-buy .btn.is-added {
  background: var(--color-success);
  border-color: var(--color-success);
}

/* Produktseite */
.product-detail-section {
  padding: var(--space-8) 0 var(--space-12);
}

.product-detail__back {
  display: inline-block;
  margin-bottom: var(--space-4);
  color: var(--color-text-muted);
  text-decoration: none;
}

.product-detail__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: var(--space-8);
  align-items: start;
}

@media (max-width: 768px) {
  .product-detail__grid {
    grid-template-columns: 1fr;
  }
}

.product-detail__media img {
  width: 100%;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.product-detail__media .product-image-placeholder {
  min-height: 240px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 4rem;
  background: var(--color-bg-warm);
  border-radius: var(--radius-lg);
}

.product-detail__info h1 {
  margin-top: 0;
}

.product-detail__description {
  margin: var(--space-4) 0;
}

.lmiv {
  margin-top: var(--space-6);
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
}

.lmiv h2 {
  font-size: var(--font-size-lg);
  margin: 0 0 var(--space-3);
}

.lmiv table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
}

.lmiv th,
.lmiv td {
  text-align: left;
  vertical-align: top;
  padding: 6px 8px 6px 0;
  border-bottom: 1px solid var(--color-border);
}

.lmiv th {
  width: 34%;
  color: var(--color-text-muted);
  font-weight: 600;
}

.lmiv tr:last-child th,
.lmiv tr:last-child td {
  border-bottom: none;
}

/* Warenkorb: Kind-Positionen + Paket-Hinweis */
.cart-item--child {
  margin-left: var(--space-8);
  background: var(--color-bg-warm);
}

@media (max-width: 480px) {
  .cart-item--child {
    margin-left: var(--space-4);
  }
}

.cart-item-child-note {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin: var(--space-2) 0;
}

.cart-parcels-note {
  background: var(--color-bg-white);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-4);
  margin: 0 0 var(--space-6);
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
}

.cart-parcels-note strong {
  color: var(--color-text);
}

/* Kundenkonto: Sendungen */
.order-sendungen-note {
  color: var(--color-text-muted);
  margin: 0 0 var(--space-3);
}

.order-sendungen {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
}

.order-sendungen th,
.order-sendungen td {
  text-align: left;
  padding: 8px 6px;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
}

.order-sendungen small {
  color: var(--color-text-muted);
}

.status-badge.sendung-versendet,
.status-badge.sendung-zugestellt {
  background: var(--color-success-bg, #E7F2EA);
  color: var(--color-success);
}

.status-badge.sendung-problem {
  background: #fdecea;
  color: var(--color-error);
}

.status-badge.sendung-storniert {
  background: var(--color-bg-warm);
  color: var(--color-text-muted);
}

@media (max-width: 600px) {
  .order-sendungen thead {
    display: none;
  }

  .order-sendungen tr {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 8px;
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-border);
  }

  .order-sendungen td {
    border: none;
    padding: 2px 0;
  }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jc3MvbWFpbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLHdGQUF3Rjs7QUFFeEY7O2lEQUVpRDs7QUFFakQ7RUFDRSxnQkFBZ0I7RUFDaEIsTUFBTTtFQUNOLGNBQWM7RUFDZCwyQkFBMkI7RUFDM0IsMERBQTBEO0FBQzVEOztBQUVBO0VBQ0UsYUFBYTtFQUNiO29FQUNrRTtFQUNsRSxvQ0FBb0M7RUFDcEMsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixzQ0FBc0M7RUFDdEMsa0JBQWtCO0FBQ3BCOztBQUVBLG1FQUFtRTtBQUNuRTtFQUNFLG9CQUFvQjtFQUNwQixzQkFBc0I7RUFDdEIsbUJBQW1CO0VBQ25CLFFBQVE7RUFDUixxQkFBcUI7RUFDckIseUJBQXlCO0FBQzNCOztBQUVBO3lGQUN5RjtBQUN6RjtFQUNFLGNBQWM7RUFDZCxZQUFZO0VBQ1osV0FBVztFQUNYLDBDQUEwQztBQUM1Qzs7QUFFQTtFQUNFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsK0JBQStCO0VBQy9CLGdCQUFnQjtFQUNoQixnQ0FBZ0M7RUFDaEMsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQix3Q0FBd0M7QUFDMUM7O0FBRUE7RUFDRSxtQkFBbUI7RUFDbkIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsZ0NBQWdDO0FBQ2xDOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQixRQUFRO0VBQ1IsbUNBQW1DO0VBQ25DLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QixnQ0FBZ0M7RUFDaEMsbUJBQW1CO0FBQ3JCOztBQUVBOztFQUVFLFdBQVc7RUFDWCxxQkFBcUI7RUFDckIsV0FBVztFQUNYLFdBQVc7RUFDWCx3QkFBd0I7QUFDMUI7O0FBRUEsOEVBQThFO0FBQzlFO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixR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RUFDMUIsOEJBQThCO0VBQzlCLDhCQUE4QjtBQUNoQzs7QUFFQTtFQUNFLHdCQUF3QjtBQUMxQjs7QUFFQSwyQkFBMkI7QUFDM0I7RUFDRSw4QkFBOEI7RUFDOUIsMEJBQTBCO0FBQzVCOztBQUVBO0VBQ0UsV0FBVztFQUNYLHlCQUF5QjtFQUN6Qiw4QkFBOEI7QUFDaEM7O0FBRUE7O0VBRUUsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQiw0Q0FBNEM7RUFDNUMsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsOEJBQThCO0FBQ2hDOztBQUVBOztFQUVFLDRDQUE0QztFQUM1QywyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRSxtQkFBbUI7RUFDbkIseUJBQXlCO0FBQzNCOztBQUVBO0VBQ0UsZ0NBQWdDO0VBQ2hDLDhCQUE4QjtBQUNoQzs7QUFFQTtFQUNFO0lBQ0UsYUFBYTtFQUNmOztFQUVBO0lBQ0UsYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1oseUJBQXlCO0lBQ3pCLDRDQUE0QztFQUM5Qzs7RUFFQTtJQUNFLFlBQVk7SUFDWixjQUFjO0VBQ2hCO0FBQ0YiLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTdXJwcmlzZUNhbGVuZGFyIE1haW4gU3R5bGVzICovXG4vKiBcIldhcm0gR2lmdFwiIHJlZGVzaWduIDIwMjYtMDctMDgg4oCUIENyZW1lLCBaaWVnZWxyb3QsIHdhcm1lcyBDaGFyY29hbCAoS3VuZGVuLU1vY2t1cCkgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFQURFUiDigJQgU2NyaXB0LUxvZ28gbGlua3MsIE5hdiB6ZW50cmllcnQsIEljb25zIHJlY2h0c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNpdGUtaGVhZGVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiAxMDAwMTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci10ZXh0LXJnYiksIDAuMDgpO1xufVxuXG4uaGVhZGVyLW5hdiB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC8qIERlc2t0b3A6IExvZ28gfCBOYXYgfCBJY29ucy4gRGVyIEhhbWJ1cmdlciBpc3QgZGlzcGxheTpub25lIHVuZCB3aXJkXG4gICAgIG5pY2h0IHBsYXR6aWVydDsgbW9iaWwgcsO8Y2t0IGVyIGluIFNwYWx0ZSAxIChzLiBNZWRpYSBRdWVyeSkuICovXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogU2NyaXB0LVdvcnRtYXJrZSAoTW9ja3VwOiB6d2VpemVpbGlnZXMgcm90ZXMgU2NyaXB0ICsgVGFnbGluZSkgKi9cbi5sb2dvIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogM3B4O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIDA7XG59XG5cbi8qIE9mZml6aWVsbGVzIEJpbGQtTG9nbyBpbSBIZWFkZXIgKDIwMjYtMDctMDgpLiBEaWUgLmxvZ28tc2NyaXB0LVRleHRtYXJrZVxuICAgYmxlaWJ0IGbDvHIgZGVuIEZvb3RlciAoZHVua2xlciBHcnVuZCDigJQgc2Nod2FyemUgTG9nby1TY2hyaWZ0IHfDpHJlIGRvcnQgdW5sZXNlcmxpY2gpLiAqL1xuLmxvZ28taW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogNjBweDtcbiAgd2lkdGg6IGF1dG87XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmxvZ286aG92ZXIgLmxvZ28taW1nIHtcbiAgb3BhY2l0eTogMC44NTtcbn1cblxuLmxvZ28tc2NyaXB0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2NyaXB0KTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG4gIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDAuOTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmxvZ28tc2NyaXB0LWwyIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMTVlbTtcbiAgbWFyZ2luLXRvcDogMC4wNGVtO1xufVxuXG4ubG9nbzpob3ZlciAubG9nby1zY3JpcHQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKTtcbn1cblxuLmxvZ28tdGFnbGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDZweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gIGZvbnQtc2l6ZTogMC41cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4yMmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmxvZ28tdGFnbGluZTo6YmVmb3JlLFxuLmxvZ28tdGFnbGluZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbn1cblxuLyogU3ByYWNodW1zY2hhbHRlciAoaTE4biAyMDI2LTA3LTA4KTogREUgLyBFTiByZWNodHMgbmViZW4gZGVuIEhlYWRlci1JY29ucyAqL1xuLmxhbmctc3dpdGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAycHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN1YmhlYWRpbmcpO1xuICBmb250LXNpemU6IDAuNzhyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG59XG5cbi5sYW5nLXN3aXRjaC1saW5rIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICBvcGFjaXR5OiAwLjU1O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHBhZGRpbmc6IDZweCAzcHg7XG59XG5cbi5sYW5nLXN3aXRjaC1saW5rOmhvdmVyIHtcbiAgb3BhY2l0eTogMC44NTtcbn1cblxuLmxhbmctc3dpdGNoLWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG4gIG9wYWNpdHk6IDE7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDNweDtcbn1cblxuLmxhbmctc3dpdGNoLXNlcCB7XG4gIG9wYWNpdHk6IDAuMzU7XG59XG5cbi8qIE5hdmlnYXRpb24gTGlua3Mg4oCUIHplbnRyaWVydCwgYWt0aXZlIFNlaXRlIG1pdCByb3RlciBVbnRlcnN0cmVpY2h1bmcgKi9cbi5uYXYtbGlua3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiBjbGFtcCh2YXIoLS1zcGFjZS00KSwgM3Z3LCB2YXIoLS1zcGFjZS0xMCkpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5uYXYtbGlua3MgbGkgYSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN1YmhlYWRpbmcpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDAuOTVyZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm5hdi1saW5rcyBsaSBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG59XG5cbi8qIGFyaWEtY3VycmVudCB3aXJkIHZvbiBtYWluLmpzIChpbml0QWN0aXZlTmF2KSBnZXNldHp0ICovXG4ubmF2LWxpbmtzIGxpIGFbYXJpYS1jdXJyZW50PVwicGFnZVwiXTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBoZWlnaHQ6IDJweDtcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLyogSWNvbi1HcnVwcGUgcmVjaHRzIChBY2NvdW50ICsgV2FyZW5rb3JiKSAqL1xuLmhlYWRlci1pY29ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5oZWFkZXItaWNvbi1saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDQ0cHg7XG4gIGhlaWdodDogNDRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uaGVhZGVyLWljb24tbGluayBzdmcge1xuICB3aWR0aDogMjJweDtcbiAgaGVpZ2h0OiAyMnB4O1xufVxuXG4uaGVhZGVyLWljb24tbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4wOCk7XG59XG5cbi8qIENhcnQgTGluayB3aXRoIEJhZGdlICovXG4uY2FydC1saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2FydC1jb3VudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAycHg7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDAuNjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIG1pbi13aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi8qIEhhbWJ1cmdlciBNZW51IEJ1dHRvbiAqL1xuLm1vYmlsZS1tZW51LWJ0biB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDVweDtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDZweDtcbiAgei1pbmRleDogMTA7XG59XG5cbi5tb2JpbGUtbWVudS1idG4gc3BhbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXRleHQpO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xufVxuXG4ubW9iaWxlLW1lbnUtYnRuLmFjdGl2ZSBzcGFuOm50aC1jaGlsZCgxKSB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCA1cHgpO1xufVxuXG4ubW9iaWxlLW1lbnUtYnRuLmFjdGl2ZSBzcGFuOm50aC1jaGlsZCgyKSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5tb2JpbGUtbWVudS1idG4uYWN0aXZlIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcbn1cblxuLyogTW9iaWxlIE5hdmlnYXRpb24g4oCUIE1vY2t1cCBtb2JpbDogSGFtYnVyZ2VyIGxpbmtzLCBMb2dvIG1pdHRpZywgSWNvbnMgcmVjaHRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLm1vYmlsZS1tZW51LWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5oZWFkZXItbmF2IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQ0cHggMWZyIGF1dG87XG4gIH1cblxuICAubG9nbyB7XG4gICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gIH1cblxuICAubG9nby1pbWcge1xuICAgIGhlaWdodDogNDhweDtcbiAgfVxuXG4gIC5sb2dvLXNjcmlwdCB7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICB9XG5cbiAgLm5hdi1saW5rcyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItdGV4dC1yZ2IpLCAwLjA4KTtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDYyLCA0NSwgMjQsIDAuMTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cblxuICAubmF2LWxpbmtzLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5uYXYtbGlua3MgbGkgYSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAubmF2LWxpbmtzIGxpIGFbYXJpYS1jdXJyZW50PVwicGFnZVwiXTo6YWZ0ZXIge1xuICAgIGxlZnQ6IHZhcigtLXNwYWNlLTQpO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFUk8g4oCUIHZvbGxmbMOkY2hpZ2VzLCBzcHJhY2hhYmjDpG5naWdlcyBCaWxkICgyMDI2LTA3LTE1KS5cbiAgIEhlYWRsaW5lL0Jlc2NocmVpYnVuZy9VU1BzIHNpbmQgaW0gQmlsZCBlaW5nZWJhY2tlbjsgaDEgKyBTdWJsaW5lIGJsZWliZW5cbiAgIGFscyAuc3Itb25seSBpbSBET00gKFNFTy9TY3JlZW5yZWFkZXIpLCBkYXMgZ2FuemUgQmlsZCB2ZXJsaW5rdCBhdWZcbiAgICNrb25maWd1cmF0b3IuIERpZSBmcsO8aGVyZSBDb3B5L1Zpc3VhbC1HcmlkLUthcnRlIGlua2wuIEthbGVuZGVyLU1vY2tcbiAgIGxpZWd0IGluIGRlciBHaXQtSGlzdG9yeSAoYmlzIDIwMjYtMDctMTUpLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmhlcm8tbWFpbiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDAgdmFyKC0tc3BhY2UtMik7XG59XG5cbi5oZXJvLWNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13YXJtKTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmhlcm8tY2FyZC1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogQW5rZXIgZsO8ciBkYXMgQ1RBLU92ZXJsYXkgKi9cbn1cblxuLmhlcm8tY2FyZC1pbWFnZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKiBDVEEgYXVmIGRlbSBIZXJvLUJpbGQ6IGZsYWNoZXIgcm90ZXIgQnV0dG9uIG5hY2ggRGVzaWduLVN5c3RlbSAoUG9wcGlucyA2MDAsXG4gICBVUFBFUkNBU0UsIHJhZGl1cyA4KS4gUHJvemVudHVhbCBpbiBkZXIgZnJlaWVuIEJvZGVuZmzDpGNoZSBsaW5rcyBuZWJlbiBkZW1cbiAgIFdlbHBlbiB2ZXJhbmtlcnQgKEJpbGQgMTcwMMOXMTI0NjogTMO8Y2tlIHp3aXNjaGVuIEdlc2NoZW5rYm94IH41MyUgdW5kIEh1bmRcbiAgIH42NyUpOyBHcsO2w59lIHNrYWxpZXJ0IGZsdWlkIG1pdCBkZW0gVmlld3BvcnQuICovXG4uaGVyby1jdGEtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNjAlO1xuICBib3R0b206IDklO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogY2xhbXAoN3B4LCAxLjF2dywgMTRweCkgY2xhbXAoMTNweCwgMS45dncsIDI2cHgpO1xuICBmb250LXNpemU6IGNsYW1wKDAuN3JlbSwgMS4zNXZ3LCAxcmVtKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDYyLCA0NSwgMjQsIDAuMjgpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uaGVyby1jYXJkLWxpbms6aG92ZXIgLmhlcm8tY3RhLW92ZXJsYXksXG4uaGVyby1jYXJkLWxpbms6Zm9jdXMtdmlzaWJsZSAuaGVyby1jdGEtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFyayk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiAyMDI2LTA5LTI1OiBBdWYgRnVsbEhEICh1bmQgMTM2NsOXNzY4LUxhcHRvcHMpIGbDvGxsdGUgZGllIDExNjggcHggYnJlaXRlXG4gICBIZXJvLUthcnRlICg4NTYgcHggaG9jaCkgZGVuIGdhbnplbiBlcnN0ZW4gVmlld3BvcnQg4oCUIOKAnmFsbGVzIHZpZWwgenUgZ3Jvw59cIi5cbiAgIEFiIFRhYmxldC1RdWVyZm9ybWF0IHdpcmQgZGllIEthcnRlIGF1ZiA5MDAgcHggZ2VkZWNrZWx0IFVORCBhbiBkaWVcbiAgIFZpZXdwb3J0LUjDtmhlIGdlYnVuZGVuIChCaWxkIDE3MDDDlzEyNDYg4omZIEZha3RvciAxLjM2NDQ7IDIwMCBweCA9IEhlYWRlciArXG4gICBBYnN0w6RuZGUpLCBkYW1pdCBIZXJvIHNhbXQgQ1RBIGluIGRlbiBlcnN0ZW4gVmlld3BvcnQgcGFzc3QuIFVudGVyZ3JlbnplXG4gICA2MDAgcHgsIGRhbWl0IGRlciBlaW5nZWJhY2tlbmUgVGV4dCBsZXNiYXIgYmxlaWJ0LiBEZXIgQ1RBIHNrYWxpZXJ0IHdlaXRlclxuICAgbWl0IHZ3IChjbGFtcCksIG5pY2h0IG1pdCBkZXIgS2FydGUuICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgLmhlcm8tY2FyZC0taW1hZ2Uge1xuICAgIG1heC13aWR0aDogY2xhbXAoNjAwcHgsIGNhbGMoKDEwMHZoIC0gMjAwcHgpICogMS4zNjQ0KSwgOTAwcHgpO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxufVxuXG4vKiBTY3JlZW5yZWFkZXItb25seTogdmlzdWVsbCB1bnNpY2h0YmFyLCBmw7xyIGFzc2lzdGl2ZSBUZWNobm9sb2dpZW4gdm9sbCBkYSAqL1xuLnNyLW9ubHkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNFQ1RJT04gVElUTEUg4oCUIFNlcmlmZW4tVGl0ZWwgbWl0IHJvdGVtIFN0cmljaC1Pcm5hbWVudCArIExpbmllwrdQdW5rdMK3TGluaWVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zZWN0aW9uLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtM3hsKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMCk7XG59XG5cbi5zZWN0aW9uLXRpdGxlOjpiZWZvcmUge1xuICAvKiBkcmVpIGtsZWluZSByb3RlIFN0cmljaGUgKE1vY2t1cC1Pcm5hbWVudCDDvGJlciBkZW0gVGl0ZWwpICovXG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDI2cHg7XG4gIGhlaWdodDogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3BhY2UtMik7XG4gIGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjYgMTUnJTNFJTNDZyBzdHJva2U9JyUyM0IyM0EzMScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBkPSdNMTMgMnY3Jy8lM0UlM0NwYXRoIGQ9J000IDQuNWw0LjUgNS41Jy8lM0UlM0NwYXRoIGQ9J00yMiA0LjVMMTcuNSAxMCcvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpIGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xufVxuXG4uc2VjdGlvbi10aXRsZTo6YWZ0ZXIge1xuICAvKiBMaW5pZSDCtyBQdW5rdCDCtyBMaW5pZSAqL1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA3MnB4O1xuICBoZWlnaHQ6IDdweDtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0zKSBhdXRvIDA7XG4gIGJhY2tncm91bmQ6XG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsIHZhcigtLWNvbG9yLXByaW1hcnkpIDAgM3B4LCB0cmFuc3BhcmVudCAzLjVweCkgY2VudGVyIC8gN3B4IDdweCBuby1yZXBlYXQsXG4gICAgbGluZWFyLWdyYWRpZW50KHZhcigtLWNvbG9yLXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5KSkgbGVmdCBjZW50ZXIgLyAyNnB4IDFweCBuby1yZXBlYXQsXG4gICAgbGluZWFyLWdyYWRpZW50KHZhcigtLWNvbG9yLXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5KSkgcmlnaHQgY2VudGVyIC8gMjZweCAxcHggbm8tcmVwZWF0O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU08gRlVOS1RJT05JRVJUJ1Mg4oCUIDQgT3V0bGluZS1LcmVpc2UgbWl0IGdlc3RyaWNoZWx0ZW4gQ29ubmVjdG9yZW5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ob3ctaXQtd29ya3Mge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xNikgMCB2YXIoLS1zcGFjZS04KTtcbn1cblxuLmhpdy1zdGVwcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWF4LXdpZHRoOiA5MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi8qIERpZSB2aWVyIEthY2hlbG4gc2luZCBzZWl0IDIwMjYtMDktMDggPGEgaHJlZj1cIiNrb25maWd1cmF0b3JcIj4gKGdsZWljaGUgU2VpdGU7XG4gICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aCBrb21tdCBhdXMgZGVtIERlc2lnbi1TeXN0ZW0pLiBPcHRpayBibGVpYnQsIGRhenVcbiAgIEhvdmVyLS9Gb2t1cy1GZWVkYmFjazogS3JlaXMgZsO8bGx0IHNpY2ggemllZ2Vscm90LCBJY29uIHdpcmQgY3JlbWUuICovXG4uaGl3LXN0ZXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IDkuNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogaW5oZXJpdDsgICAgICAgICAgLyogbmljaHQgZGFzIGdsb2JhbGUgYSB7IGNvbG9yOiBwcmltYXJ5IH0g4oCUIGRhcyBMYWJlbCBibGVpYnQgQ2hhcmNvYWwgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7ICAgICAvKiBGb3JtIGRlcyBGb2t1c3JpbmdzICovXG59XG5cbi5oaXctc3RlcDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBvdXRsaW5lLW9mZnNldDogNHB4O1xufVxuXG4uaGl3LWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDkycHg7XG4gIGhlaWdodDogOTJweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1hY2NlbnQpO1xuICBiYWNrZ3JvdW5kOiAjRkJGOEYyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSxcbiAgICBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmhpdy1zdGVwOmhvdmVyIC5oaXctaWNvbixcbi5oaXctc3RlcDpmb2N1cy12aXNpYmxlIC5oaXctaWNvbiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogI0ZCRjhGMjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4uaGl3LXN0ZXA6aG92ZXIgLmhpdy1sYWJlbCxcbi5oaXctc3RlcDpmb2N1cy12aXNpYmxlIC5oaXctbGFiZWwge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKTtcbn1cblxuLmhpdy1pY29uIHN2ZyB7XG4gIHdpZHRoOiAzOHB4O1xuICBoZWlnaHQ6IDM4cHg7XG59XG5cbi5oaXctbGFiZWwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5oaXctY29ubmVjdG9yIHtcbiAgZmxleDogMSAxIDA7XG4gIG1heC13aWR0aDogOTBweDtcbiAgYm9yZGVyLXRvcDogMnB4IGRhc2hlZCB2YXIoLS1jb2xvci1hY2NlbnQtZGFyayk7XG4gIG1hcmdpbi10b3A6IDQ2cHg7IC8qIHZlcnRpa2FsIG1pdHRpZyB6dW0gOTJweC1LcmVpcyAqL1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLmhpdy1zdGVwcyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KSB2YXIoLS1zcGFjZS0yKTtcbiAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAuaGl3LWNvbm5lY3RvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKiBTcHJ1bmd6aWVsIGRlciBTY2hyaXR0LUthY2hlbG4gdW5kIGRlcyBIZXJvLUNUQXM6IGRlciBNb2R1cy1VbXNjaGFsdGVyIHNvbGxcbiAgIHVudGVyIGRlbSBTdGlja3ktSGVhZGVyICh+ODUgcHg6IDYwLXB4LUxvZ28gKyBJbm5lbmFic3TDpG5kZSkgZnJlaSBzdGVoZW4sXG4gICBuaWNodCBkYXJ1bnRlciB2ZXJzY2h3aW5kZW4uICovXG4ja29uZmlndXJhdG9yIHtcbiAgc2Nyb2xsLW1hcmdpbi10b3A6IDZyZW07XG59XG5cbi8qIExlZ2FjeSBIZXJvIChWZXJsYXVmcy1CYW5uZXIpIOKAlCB2b24ga2VpbmVyIFNlaXRlIG1laHIgZ2VudXR6dCwgS2xhc3NlIGJsZWlidFxuICAgZsO8ciDDpGx0ZXJlIEluaGFsdGUgZGVmaW5pZXJ0ICovXG4uaGVybyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LWhlcm8pO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIwKSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5oZXJvIGgxIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNXhsKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5oZXJvLXN1YnRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBvcGFjaXR5OiAwLjk7XG4gIG1heC13aWR0aDogNjAwcHg7XG4gIG1hcmdpbjogMCBhdXRvIHZhcigtLXNwYWNlLTgpO1xufVxuXG4uaGVyby1jdGEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4vKiBGZWF0dXJlcyBTZWN0aW9uICovXG4uZmVhdHVyZXMge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yMCkgMDtcbn1cblxuLmZlYXR1cmVzIGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7XG59XG5cbi5mZWF0dXJlcy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi5mZWF0dXJlLWNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5mZWF0dXJlLWljb24ge1xuICBmb250LXNpemU6IDNyZW07XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmZlYXR1cmUtY2FyZCBoMyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZmVhdHVyZS1jYXJkIHAge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi8qIENvbmZpZ3VyYXRvciAqL1xuLmNvbmZpZ3VyYXRvci1zZWN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCkgMDtcbn1cblxuLmNvbmZpZ3VyYXRvci1sYXlvdXQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDJmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1pbi1oZWlnaHQ6IDgwdmg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmNvbmZpZ3VyYXRvci1sYXlvdXQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5jb25maWd1cmF0b3ItcHJldmlldyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5jYWxlbmRhci1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgYXNwZWN0LXJhdGlvOiA0LzM7XG59XG5cbi5jYWxlbmRhci1kb29yIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uY2FsZW5kYXItZG9vcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5jYWxlbmRhci1kb29yLmhhcy1pbWFnZSB7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbn1cblxuLmNhbGVuZGFyLWRvb3IuaGFzLWltYWdlOjpiZWZvcmUge1xuICBjb250ZW50OiBhdHRyKGRhdGEtZGF5KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDRweDtcbiAgcmlnaHQ6IDRweDtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICBwYWRkaW5nOiAycHggOHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG59XG5cbi5jb25maWd1cmF0b3ItY29udHJvbHMge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4uY29uZmlndXJhdG9yLWNvbnRyb2xzIGgyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5jb25maWd1cmF0b3ItY29udHJvbHMgaDMge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xufVxuXG4udXBsb2FkLXNlY3Rpb24sXG4udGl0bGUtc2VjdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4udXBsb2FkLWRyb3B6b25lIHtcbiAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi51cGxvYWQtZHJvcHpvbmU6aG92ZXIsXG4udXBsb2FkLWRyb3B6b25lLmRyYWdvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMDUpO1xufVxuXG4udXBsb2FkLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi51cGxvYWQtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbn1cblxuLnVwbG9hZGVkLWltYWdlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi51cGxvYWRlZC1pbWFnZXMgLnRodW1iIHtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi51cGxvYWRlZC1pbWFnZXMgLnRodW1iOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLmNvbmZpZ3VyYXRvci1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi5jb25maWd1cmF0b3ItYWN0aW9ucyAuYnRuIHtcbiAgZmxleDogMTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZPT1RFUiDigJQgc29saWRlIGR1bmtsZSBGbMOkY2hlLCBDcmVtZS1UZXh0IChcIldhcm0gR2lmdFwiLCBrZWluIEdsYXMvUGFyYWxsYXgpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2l0ZS1mb290ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGNvbG9yOiAjRjVGMEU2O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy1kYXJrKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTYpIDAgdmFyKC0tc3BhY2UtOCk7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5mb290ZXItaW5uZXIge1xuICBtYXgtd2lkdGg6IDExMDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi8qIFNjcmlwdC1Xb3J0bWFya2UgaW0gRm9vdGVyOiBoZWxsZSBSb3QtTnVhbmNlIGF1ZiBkdW5rbGVtIEdydW5kICovXG4uZm9vdGVyLWxvZ28tc2NyaXB0IHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbn1cblxuLyogT2ZmaXppZWxsZXMgTG9nbyBpbSBGb290ZXIgKEhlbGwtVmFyaWFudGUgZsO8ciBkdW5rbGVuIEdydW5kLCAyMDI2LTA3LTA4KSAqL1xuLmZvb3Rlci1sb2dvLWltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDg0cHg7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmZvb3Rlci1sb2dvLXRhZ2xpbmUge1xuICBjb2xvcjogcmdiYSgyNDUsIDI0MCwgMjMwLCAwLjYpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmZvb3Rlci1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuICAuZm9vdGVyLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmZvb3Rlci1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuLmZvb3Rlci1icmFuZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmZvb3Rlci1icmFuZCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4uZm9vdGVyLWJyYW5kIHAge1xuICBjb2xvcjogcmdiYSgyNDUsIDI0MCwgMjMwLCAwLjc4KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xufVxuXG4uZm9vdGVyLWxpbmtzIGg0IHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGNvbG9yOiAjRjVGMEU2O1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uZm9vdGVyLWxpbmtzIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmZvb3Rlci1saW5rcyBhIHtcbiAgY29sb3I6IHJnYmEoMjQ1LCAyNDAsIDIzMCwgMC43Mik7XG59XG5cbi5mb290ZXItbGlua3MgYTpob3ZlciB7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4vKiBGb290ZXItUVI6IHdoaXRlIHN1cnJvdW5kIGRvdWJsZXMgYXMgdGhlIFFSIHF1aWV0IHpvbmUgb24gdGhlIGRhcmsgZm9vdGVyICovXG4uZm9vdGVyLXFyIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZm9vdGVyLXFyIGltZyB7XG4gIHdpZHRoOiAxMDRweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBwYWRkaW5nOiA2cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG59XG5cbi5mb290ZXItcXIgc3BhbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgY29sb3I6IHJnYmEoMjQ1LCAyNDAsIDIzMCwgMC42KTtcbiAgbWF4LXdpZHRoOiAxNjBweDtcbn1cblxuLmZvb3Rlci1ib3R0b20ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNDUsIDI0MCwgMjMwLCAwLjE0KTtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiByZ2JhKDI0NSwgMjQwLCAyMzAsIDAuNik7XG59XG5cbi8qIFByb2R1Y3RzICovXG4ucHJvZHVjdHMtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xufVxuXG4ucHJvZHVjdHMtc2VjdGlvbiBoMSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi5wcm9kdWN0cy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgbWF4LXdpZHRoOiA3MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdHMtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLyogQ2FydCAqL1xuLmNhcnQtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xufVxuXG4uY2FydC1jb250ZW50IHtcbiAgbWF4LXdpZHRoOiA4MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5jYXJ0LWVtcHR5IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xMik7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmNhcnQtaXRlbXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmNhcnQtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jYXJ0LWl0ZW0taW1hZ2Uge1xuICB3aWR0aDogMTIwcHg7XG4gIGhlaWdodDogOTBweDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnKTtcbn1cblxuLmNhcnQtaXRlbS1pbWFnZSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb250YWluO1xufVxuXG4vKiBDYXJ0IHByZXZpZXcgdGh1bWJuYWlsIOKAlCBjYXB0dXJlZCBKUEVHIGZyb20gaHRtbDJjYW52YXMgKi9cbi5jYXJ0LXByZXZpZXctY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTgwcHg7XG4gIGhlaWdodDogMTMycHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmNhcnQtcHJldmlldy1jb250YWluZXI6aG92ZXIge1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4vKiBTdWJ0bGUgbWFya2VyIHNob3duIHdoZW4gdGhlIGNhcnQgaW1hZ2UgaXMgYSBmYWxsYmFjayAoc3RvY2svZG9vciBpbWFnZSksXG4gICBub3QgdGhlIGNhcHR1cmVkIGh0bWwyY2FudmFzIHNuYXBzaG90IG9mIHRoZSBkZXNpZ24gKEZNQUUtMjMxKS4gKi9cbi5jYXJ0LXByZXZpZXctcGVuZGluZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsaW5lLWhlaWdodDogMS4zO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDNweCA0cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY2FydC1wcmV2aWV3LWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuLyogVGV4dCBjZW50ZXJpbmcgdXRpbGl0eSAqL1xuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBQcmljZSBkZXRhaWxzIHN0eWxpbmcgKi9cbi5jYXJ0LWl0ZW0tcHJpY2UtZGV0YWlscyB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMSkgMDtcbn1cblxuLnByaWNlLWV4Y2wge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLnByaWNlLWluY2wtbGFiZWwge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4vKiBFaW5rYXVmc2dydXBwZW4gKDIwMjYtMDgtMjUpOiBQcmVpc2dydXBwZW4tS29udGV4dCBmw7xyIEdlc2Now6RmdHNrdW5kZW4uXG4gICBEZXIgQmFkZ2UgZXJrbMOkcnQgYWJ3ZWljaGVuZGUgUHJlaXNlOyBkZXIgZHVyY2hnZXN0cmljaGVuZSBMaXN0ZW5wcmVpc1xuICAgemVpZ3QgZGllIEVyc3Bhcm5pcy4gTW9iaWxlLWZpcnN0OiB1bWJyZWNoZW5kLCBrZWluZSBmZXN0ZW4gQnJlaXRlbi4gKi9cbi5wcmljZS1ncm91cC1iYWRnZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtYWx0LCByZ2JhKDAsIDAsIDAsIDAuMDMpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtLCA0cHgpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLnByaWNlLWdyb3VwLW5vdGUge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5wcm9kdWN0LXByaWNlLXN0YW5kYXJkIHtcbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xufVxuXG5cbi8qIFByZXZpZXcgTGlnaHRib3ggTW9kYWwgKi9cbi5jYXJ0LXByZXZpZXctbGlnaHRib3gge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjg1KTtcbiAgLyogTXVzdCBzaXQgYWJvdmUgdGhlIHN0aWNreSBzaXRlIGhlYWRlciAoei1pbmRleCAxMDAwMSksIHBlciB0aGUgQ0xBVURFLm1kXG4gICAgIG1vZGFsIGNvbnZlbnRpb24gKD49IDEwMDEwKSwgZWxzZSB0aGUgbmF2YmFyIHB1bmNoZXMgdGhyb3VnaCB0aGUgb3ZlcmxheS4g4oCUIEZNQUUtMjIyICovXG4gIHotaW5kZXg6IDEwMDEwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5jYXJ0LXByZXZpZXctbGlnaHRib3guYWN0aXZlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmNhcnQtcHJldmlldy1saWdodGJveC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMzJweCk7XG4gIG1heC13aWR0aDogODUwcHg7XG4gIGhlaWdodDogYXV0bztcbiAgLyogY2FwIGhlaWdodCBzbyB0aGUgYXNwZWN0IGJveCBjYW4ndCBvdmVyZmxvdyBzaG9ydC9sYW5kc2NhcGUgbW9iaWxlIHZpZXdwb3J0c1xuICAgICAodGhlIGlubmVyIGltYWdlIGlzIG9iamVjdC1maXQ6Y29udGFpbiwgc28gaXQgc2hyaW5rcyB0byBmaXQpLiBGTUFFLTI0MSAqL1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzJweCk7XG4gIC8qIDMzLzI0ID0gMzMww5cyNDAtbW0tU3Rhbnplbi1Gcm9udCAoMjAyNi0wNy0yMiwgdm9yaGVyIDMwLzIyKSAqL1xuICBhc3BlY3QtcmF0aW86IDMzIC8gMjQ7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uY2FydC1wcmV2aWV3LWxpZ2h0Ym94LWNsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IHZhcigtLXNwYWNlLTIpO1xuICByaWdodDogdmFyKC0tc3BhY2UtMik7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDEwO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4uY2FydC1wcmV2aWV3LWxpZ2h0Ym94LWNsb3NlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xufVxuXG4uY2FydC1wcmV2aWV3LWxpZ2h0Ym94LXByZXZpZXcge1xuICAvKiBGaWxsIHRoZSBlbnRpcmUgY29udGVudCBhcmVhIGFuZCBjZW50ZXIgdGhlIGNhcHR1cmVkIGltYWdlICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNhcnQtcHJldmlldy1saWdodGJveC1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2FydC1pdGVtLXBsYWNlaG9sZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xufVxuXG4uY2FydC1pdGVtLWRldGFpbHMge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8qIEFsbG93IHRleHQgdG8gd3JhcCAqL1xufVxuXG4uY2FydC1pdGVtLWRldGFpbHMgaDMge1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi5jYXJ0LWl0ZW0tcHJpY2Uge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY2FydC1pdGVtLXN1YnRvdGFsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMSkgMCAwO1xufVxuXG4vKiBRdWFudGl0eSBzdGVwcGVyIOKAlCA0NHB4IHRvdWNoIHRhcmdldHMgKG1vYmlsZS1maXJzdCkgKi9cbi5jYXJ0LXF0eS1zdGVwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMikgMDtcbn1cblxuLmNhcnQtcXR5LWJ0biB7XG4gIHdpZHRoOiA0NHB4O1xuICBoZWlnaHQ6IDQ0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIHJhcGlkIHRhcHBpbmcgaXMgdGhlIHByaW1hcnkgZ2VzdHVyZSDigJQgc3VwcHJlc3MgZG91YmxlLXRhcCB6b29tIChpT1MpICovXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyogaG92ZXIgb25seSBvbiBkZXZpY2VzIHRoYXQgYWN0dWFsbHkgaG92ZXIg4oCUIGF2b2lkcyBzdGlja3kgaW52ZXJ0ZWQgc3RhdGUgYWZ0ZXIgdGFwcyAqL1xuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgLmNhcnQtcXR5LWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLmNhcnQtcXR5LWJ0bjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5jYXJ0LXF0eS1idG46ZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjM1O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5jYXJ0LXF0eS12YWx1ZSB7XG4gIG1pbi13aWR0aDogMi41ZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG4uY2FydC1xdHktc3RlcHBlci5pcy1zYXZpbmcge1xuICBvcGFjaXR5OiAwLjU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY2FydC1pdGVtLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmNhcnQtc3VtbWFyeSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5jYXJ0LXRvdGFscyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBNb2JpbGUgQ2FydCBSZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLmNhcnQtaXRlbSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuICBcbiAgLmNhcnQtcHJldmlldy1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAvKiAzMy8yNCA9IDMzMMOXMjQwLW1tLVN0YW56ZW4tRnJvbnQgKDIwMjYtMDctMjIsIHZvcmhlciAzMC8yMikgKi9cbiAgICBhc3BlY3QtcmF0aW86IDMzIC8gMjQ7XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gIH1cblxuICAuY2FydC1pdGVtLWRldGFpbHMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICBcbiAgLmNhcnQtaXRlbS1hY3Rpb25zIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICBcbiAgLmNhcnQtaXRlbS1pbWFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgfVxuICBcbiAgLmNhcnQtc3VtbWFyeSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbn1cblxuLyogQ2hlY2tvdXQgKi9cbi5jaGVja291dC1zZWN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIDA7XG59XG5cbi5jaGVja291dC1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuY2hlY2tvdXQtZ3JpZCB7XG4gICAgLyogbWlubWF4KDAsIOKApik6IGRpZSBLYXJ0ZSBkYXJmIHNjaG1hbGVyIHdlcmRlbiBhbHMgaWhyIEluaGFsdCDigJQgbWl0XG4gICAgICAgYmxvw59lbSAxZnIgZHLDvGNrdGVuIGRpZSBkcmVpIFRhYnMgZGllIEthc3NlIGJlaSAzMjAgcHggYXVmIDM1MCBweFxuICAgICAgIEJyZWl0ZSAoaG9yaXpvbnRhbGVzIFNjcm9sbGVuLCAyMDI2LTEwLTAxKS4gKi9cbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICB9XG59XG5cbi5jaGVja291dC1pbmZvIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmNoZWNrb3V0LXN1bW1hcnkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xufVxuXG4vKiBDaGVja291dCBUYWJzICovXG4uY2hlY2tvdXQtdGFicyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5jaGVja291dC10YWIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpIHZhcigtLXJhZGl1cy1tZCkgMCAwO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmNoZWNrb3V0LXRhYjpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4wNSk7XG59XG5cbi5jaGVja291dC10YWIuYWN0aXZlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogLTJweDtcbn1cblxuLmNoZWNrb3V0LXRhYi1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNoZWNrb3V0LXRhYi1jb250ZW50LmFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2hlY2tvdXQtdGFiLWNvbnRlbnQgaDIge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBMb2dnZWQtaW4gSW5mbyAqL1xuLmxvZ2dlZC1pbi1pbmZvIHtcbiAgYmFja2dyb3VuZDogcmdiYSg0NywgMTIyLCA4MCwgMC4xKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4ubG9nZ2VkLWluLWluZm8gcCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xufVxuXG4vKiBGb3JtIFN0eWxlcyAqL1xuLmZvcm0tcm93IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmZvcm0tcm93IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuXG4uZm9ybS1lcnJvciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjIwLCA1MywgNjksIDAuMSk7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLmZvcm0taGludCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uZm9ybS1oaW50IGEge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbn1cblxuLmNoZWNrb3V0LW5vdGUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4wNik7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIENoZWNrb3V0IEl0ZW1zICovXG4uY2hlY2tvdXQtaXRlbXMge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmNoZWNrb3V0LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5jaGVja291dC10b3RhbHMge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLnRvdGFscy1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLnRvdGFscy10b3RhbCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXRleHQpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBHdXRzY2hlaW5lICgyMDI2LTEwLTAxKTogXCJHdXRzY2hlaW4gdm9yaGFuZGVuP1wiIGluIGRlciBCZXN0ZWxsw7xiZXJzaWNodCBkZXJcbiAgIEthc3NlICsgUmFiYXR0emVpbGUgaW4gZGVuIFN1bW1lbiAoS2Fzc2UsIFdhcmVua29yYiwgQmVzdGVsbGRldGFpbCkuXG4gICBNb2JpbGUtZmlyc3Q6IEVpbmdhYmUgdW5kIEJ1dHRvbiB0ZWlsZW4gc2ljaCBkaWUgWmVpbGUgdW5kIGJyZWNoZW4gdW50ZXJcbiAgIDM2MCBweCB1bTsga2VpbmUgZmVzdGVuIEJyZWl0ZW4uICovXG4udG90YWxzLXJvdy50b3RhbHMtZGlzY291bnQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogLnRvdGFscy1yb3cgaXN0IGRpc3BsYXk6ZmxleCDigJQgZGFzIMO8YmVyc3RpbW10IGRhcyBoaWRkZW4tQXR0cmlidXQuICovXG4udG90YWxzLXJvd1toaWRkZW5dLFxuLmNvdXBvbi1mb3JtW2hpZGRlbl0sXG4uY291cG9uLWFwcGxpZWRbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5jb3Vwb24tYm94IHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5jb3Vwb24tZm9ybSBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uY291cG9uLWZvcm0tcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uY291cG9uLWZvcm0tcm93IGlucHV0IHtcbiAgZmxleDogMSAxIDEwcmVtO1xuICBtaW4td2lkdGg6IDA7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgZm9udDogaW5oZXJpdDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLmNvdXBvbi1mb3JtLXJvdyBpbnB1dDo6cGxhY2Vob2xkZXIge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmNvdXBvbi1mb3JtLXJvdyBpbnB1dDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBvdXRsaW5lLW9mZnNldDogMXB4O1xufVxuXG4uY291cG9uLWZvcm0tcm93IC5idG4ge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuLmNvdXBvbi1mb3JtIC5mb3JtLWVycm9yIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0yKSAwIDA7XG59XG5cbi5jb3Vwb24tYXBwbGllZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWFsdCwgcmdiYSgwLCAwLCAwLCAwLjAzKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSwgNHB4KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uY291cG9uLXJlbW92ZSB7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXdlaWdodDogNDAwO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY291cG9uLXJlbW92ZTpob3Zlcixcbi5jb3Vwb24tcmVtb3ZlOmZvY3VzLXZpc2libGUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbn1cblxuLmNvdXBvbi1ub3RpY2Uge1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0zKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA2KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi8qIEVybGFnc2NoZWluICgyMDI2LTEwLTA5KTogWmFobHVuZ3NhcnQgYW4gZGVyIEthc3NlICsgQWRyZXNzZm9ybXVsYXIgdW5kIGRpZVxuICAgWmFobHVuZ3NhbndlaXN1bmcgKERhbmtlLVNlaXRlLCBLdW5kZW5rb250bykuIE51ciBUb2tlbnMg4oCUIGRpZSBad2VpdG1hcmtlXG4gICAoZHVua2VsKSBiZWtvbW10IGlocmUgRmFyYmVuIMO8YmVyIGJyYW5kLSouY3NzLiBNb2JpbGUtZmlyc3Q6IEJhbmtkYXRlbiB1bmRcbiAgIFFSLUNvZGUgc3RlaGVuIG5lYmVuZWluYW5kZXIsIHNvbGFuZ2UgUGxhdHogaXN0LCBzb25zdCB1bnRlcmVpbmFuZGVyLiAqL1xuLnBheW1lbnQtbWV0aG9kcyB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtNik7XG4gIG1pbi13aWR0aDogMDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyBsZWdlbmQge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ucGF5bWVudC1tZXRob2Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC41KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kOmhhcyhpbnB1dDpjaGVja2VkKSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kIGlucHV0IHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi10b3A6IDAuMjVlbTtcbiAgYWNjZW50LWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJvZHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5wYXltZW50LW1ldGhvZC10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWRlc2Mge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLmNoZWNrb3V0LWFkZHJlc3NbaGlkZGVuXSxcbi5jaGVja291dC1hZGRyZXNzLWJpbGxpbmdbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5jaGVja291dC1hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5jaGVja291dC1hZGRyZXNzIGgyIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmNoZWNrb3V0LWFkZHJlc3MgaDMge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgMDtcbn1cblxuLyogUExaIHNjaG1hbCwgT3J0IGJyZWl0IOKAlCBhdWNoIGF1ZiBkZW0gSGFuZHkgbmViZW5laW5hbmRlciAqL1xuLmZvcm0tcm93LmZvcm0tcm93LS1wb3N0YWwge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIG1pbm1heCgwLCAyZnIpO1xufVxuXG4uY2hlY2tvdXQtY2hlY2tib3gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTIpIDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY2hlY2tvdXQtY2hlY2tib3ggaW5wdXQge1xuICBhY2NlbnQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uY2hlY2tvdXQtbGVnYWwge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDAgMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5jaGVja291dC1sZWdhbCBhIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG59XG5cbi5jaGVja291dC1jYXJkLmNoZWNrb3V0LWNhcmQtLXdpZGUge1xuICBtYXgtd2lkdGg6IDQ0cmVtO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94IHtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTUpO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG59XG5cbi5lcmxhZ3NjaGVpbi1ib3hfX3RpdGxlIHtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtMSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbn1cblxuLmVybGFnc2NoZWluLWJveF9fZHVlIHtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbn1cblxuLmVybGFnc2NoZWluLWJveF9fZGV0YWlscyB7XG4gIGZsZXg6IDEgMSAxNnJlbTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5lcmxhZ3NjaGVpbi1ib3hfX2RldGFpbHMgPiBkaXYge1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IDJweDtcbn1cblxuLmVybGFnc2NoZWluLWJveF9fZGV0YWlscyBkdCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19kZXRhaWxzIGRkIHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19tb25vIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2U7XG59XG5cbi8qIGRlc2lnbi1zeXN0ZW0uY3NzIHNldHp0IHNwYW4geyBmb250LWZhbWlseSB9IGdsb2JhbCDigJQgZGllIElCQU4gZXJidCBzb25zdCBuaWNodCAqL1xuLmVybGFnc2NoZWluLWJveF9fbW9ubyBzcGFuIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi5lcmxhZ3NjaGVpbi1jb3B5IHtcbiAgcGFkZGluZzogMnB4IHZhcigtLXNwYWNlLTIpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZXJsYWdzY2hlaW4tY29weTpob3Zlcixcbi5lcmxhZ3NjaGVpbi1jb3B5OmZvY3VzLXZpc2libGUge1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19xciB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBEYXMgUE5HIGJyaW5ndCBXZWnDnyArIFJ1aGV6b25lIG1pdCDigJQgc2Nhbm5iYXIgYXVjaCBhdWYgZHVua2xlbSBHcnVuZC4gKi9cbi5lcmxhZ3NjaGVpbi1ib3hfX3FyIGltZyB7XG4gIHdpZHRoOiAxODBweDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19xciBmaWdjYXB0aW9uIHtcbiAgbWF4LXdpZHRoOiAxODBweDtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0yKSBhdXRvIDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uZXJsYWdzY2hlaW4tYm94X19oaW50IHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwIDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4ub3JkZXItZGV0YWlsLWVybGFnc2NoZWluIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwIHZhcigtLXNwYWNlLTYpO1xufVxuXG4ub3JkZXItZGV0YWlsLWVybGFnc2NoZWluX19ub3RlIHtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtMyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ09VTlQgJiBBVVRIIFBBR0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYXV0aC1zZWN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIDA7XG4gIG1pbi1oZWlnaHQ6IDYwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5hdXRoLWNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICBtYXgtd2lkdGg6IDQ4MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmF1dGgtY2FyZCBoMSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xufVxuXG4uYXV0aC1zdWJ0aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmF1dGgtZm9ybSAuZm9ybS1ncm91cCB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uYXV0aC1mb3JtIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5hdXRoLWZvcm0gaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uYXV0aC1mb3JtIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5hdXRoLWZvcm0gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5hdXRoLWZvcm0gaW5wdXQ6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uYXV0aC1mb3JtIGlucHV0OmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uYXV0aC1mb3JtIHNtYWxsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTEpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLmF1dGgtZm9ybSBociB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtOCkgMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLmF1dGgtZm9ybSBoMyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5mb3JtLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDQ3LCAxMjIsIDgwLCAwLjEpO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xufVxuXG4uYXV0aC1saW5rcyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5hdXRoLWxpbmtzIGEge1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xufVxuXG4uYXV0aC1saW5rcyAuZGl2aWRlciB7XG4gIG1hcmdpbjogMCB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4vKiBBY2NvdW50IERhc2hib2FyZCAqL1xuLmFjY291bnQtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xuICBtaW4taGVpZ2h0OiA2MHZoO1xufVxuXG4uYWNjb3VudC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5hY2NvdW50LWhlYWRlciBoMSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmFjY291bnQtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLmFjY291bnQtY2FyZCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5hY2NvdW50LWNhcmQgaDMge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmFjY291bnQtY2FyZCBwIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogT3JkZXJzIExpc3QgKi9cbi5yZWNlbnQtb3JkZXJzIGgyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5vcmRlcnMtbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5vcmRlci1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4ub3JkZXItaW5mbyB7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMTUwcHg7XG59XG5cbi5vcmRlci1udW1iZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLm9yZGVyLWRhdGUge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLm9yZGVyLXRvdGFsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLm9yZGVyLXN0YXR1cyB7XG4gIG1pbi13aWR0aDogMTAwcHg7XG59XG5cbi5zdGF0dXMtYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLyogd2FybSBnZXTDtm50ZSBTdGF0dXMtUGFzdGVsbGUgKFJlZGVzaWduIDIwMjYtMDctMDgpICovXG4uc3RhdHVzLXBlbmRpbmcgeyBiYWNrZ3JvdW5kOiAjRjNFNUMzOyBjb2xvcjogIzdBNUExMjsgfVxuLnN0YXR1cy1wYWlkIHsgYmFja2dyb3VuZDogI0RDRUJERDsgY29sb3I6ICMyNDYwM0E7IH1cbi5zdGF0dXMtcHJvY2Vzc2luZyB7IGJhY2tncm91bmQ6ICNFM0UwRDI7IGNvbG9yOiAjNEU0QTM2OyB9XG4uc3RhdHVzLXNoaXBwZWQgeyBiYWNrZ3JvdW5kOiAjRThFMkQ1OyBjb2xvcjogIzU1NTAzRjsgfVxuLnN0YXR1cy1kZWxpdmVyZWQgeyBiYWNrZ3JvdW5kOiAjRENFQkREOyBjb2xvcjogIzI0NjAzQTsgfVxuLnN0YXR1cy1jYW5jZWxsZWQgeyBiYWNrZ3JvdW5kOiAjRjJEN0QyOyBjb2xvcjogdmFyKC0tY29sb3Itc3RhdHVzLWNhbmNlbGxlZCk7IH1cblxuLmVtcHR5LXN0YXRlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xMik7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLmVtcHR5LXN0YXRlIHAge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogTmF2IEF1dGggTGluayAqL1xuLm5hdi1hdXRoLWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG4vKiBOYXYgRHJvcGRvd24gKi9cbi5uYXYtZHJvcGRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5uYXYtZHJvcGRvd24td3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogMjAyNi0wNy0yMjogZXhwbGl6aXRlciBCYXNpc3p1c3RhbmQgKHZvcmhlciBzZXR6dGUgbnVyIEpTIGRpc3BsYXk6ZmxleCkg4oCUXG4gICAgIFNpY2h0YmFya2VpdCBzdGV1ZXJ0IGluaXRpYWwgZGllIEtsYXNzZSAuaXMtaGlkZGVuIChBbnRpLUZsaWNrZXIpLiAqL1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubmF2LWRyb3Bkb3duLXRvZ2dsZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm5hdi1kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgY29udGVudDogJ+KWvCc7XG4gIGZvbnQtc2l6ZTogMC42ZW07XG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjZS0xKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5uYXYtZHJvcGRvd24td3JhcHBlci5hY3RpdmUgLm5hdi1kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLm5hdi1kcm9wZG93bi1tZW51IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHJpZ2h0OiAwO1xuICBtaW4td2lkdGg6IDE4MHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMSkgMCAwIDA7XG4gIHotaW5kZXg6IDEwMDAwO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIENsaWNrLWJhc2VkIHRvZ2dsZSAqL1xuLm5hdi1kcm9wZG93bi13cmFwcGVyLmFjdGl2ZSAubmF2LWRyb3Bkb3duLW1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm5hdi1kcm9wZG93bi1tZW51IGxpIGEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubmF2LWRyb3Bkb3duLW1lbnUgbGkgYTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGQVEgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZhcS1zZWN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTYpIDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFRpdGVsLURla28ga29tbXQgw7xiZXIgLnNlY3Rpb24tdGl0bGUgKHNpZWhlIG9iZW4pIOKAlCBmYXEtdGl0bGUgdHLDpGd0IGJlaWRlIEtsYXNzZW4gKi9cblxuLmZhcS1ncmlkIHtcbiAgY29sdW1uLWNvdW50OiAyO1xuICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgbWF4LXdpZHRoOiA5MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZmFxLWdyaWQge1xuICAgIGNvbHVtbi1jb3VudDogMTtcbiAgfVxufVxuXG4uZmFxLWl0ZW0ge1xuICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5mYXEtaXRlbTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5mYXEtcXVlc3Rpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS01KTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZmFxLXF1ZXN0aW9uOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG59XG5cbi5mYXEtcXVlc3Rpb24gc3BhbjpmaXJzdC1jaGlsZCB7XG4gIGZsZXg6IDE7XG59XG5cbi5mYXEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktdGV4dCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5mYXEtcXVlc3Rpb25bYXJpYS1leHBhbmRlZD1cInRydWVcIl0gLmZhcS1pY29uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xufVxuXG4uZmFxLWFuc3dlciB7XG4gIG1heC1oZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcyBlYXNlLW91dCwgcGFkZGluZyAwLjNzIGVhc2Utb3V0O1xufVxuXG4uZmFxLXF1ZXN0aW9uW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdICsgLmZhcS1hbnN3ZXIge1xuICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS01KSB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmZhcS1hbnN3ZXIgcCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBtYXJnaW46IDA7XG59XG5cbi8qIE9yZGVyIERldGFpbCBQYWdlIFN0eWxlcyAqL1xuLm9yZGVyLWRldGFpbC1jYXJkIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zb2Z0KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4ub3JkZXItZGV0YWlsLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS01KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNSk7XG59XG5cbi5vcmRlci1kZXRhaWwtaW5mbyBoMiB7XG4gIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLTIpIDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWhlYWRpbmcpO1xufVxuXG4ub3JkZXItZGV0YWlsLWluZm8gLm9yZGVyLWRhdGUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLm9yZGVyLWRldGFpbC1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAub3JkZXItZGV0YWlsLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5vcmRlci1kZXRhaWwtc2VjdGlvbiBoMyB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLW1kKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaGVhZGluZyk7XG4gIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLTMpIDA7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbn1cblxuLmFkZHJlc3MtYmxvY2sgcCB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMSkgMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbi5hZGRyZXNzLWJsb2NrIC5hZGRyZXNzLW5hbWUge1xuICBmb250LXdlaWdodDogdmFyKC0td2VpZ2h0LXNlbWlib2xkKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaGVhZGluZyk7XG59XG5cbi5uby1hZGRyZXNzIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5vcmRlci1pdGVtcy1saXN0IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC01MCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5vcmRlci1pdGVtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG59XG5cbi5vcmRlci1pdGVtLXJvdzpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLm9yZGVyLWl0ZW0tZGV0YWlscyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi8qIEJlc3RlbGxkZXRhaWw6IERlc2lnbi1Wb3JzY2hhdSB3aWUgaW0gV2FyZW5rb3JiICgyMDI2LTA3LTIyKS5cbiAgIERpZSBzcGV6aWZpc2NoZXJlIFJlZ2VsIGjDpGx0IGRpZSBUaHVtYm5haWwtR3LDtsOfZSBhdWNoIGdlZ2VuIGRpZVxuICAgbW9iaWxlIC5jYXJ0LWl0ZW0taW1hZ2UtUmVnZWwgKHdpZHRoOjEwMCUpIHN0YWJpbC4gKi9cbi5vcmRlci1pdGVtLXJvdyAub3JkZXItaXRlbS1wcmV2aWV3IHtcbiAgY3Vyc29yOiB6b29tLWluO1xuICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNlLTQpO1xufVxuLm9yZGVyLWl0ZW0tcm93IC5jYXJ0LWl0ZW0taW1hZ2Uge1xuICB3aWR0aDogMTIwcHg7XG4gIGhlaWdodDogOTBweDtcbn1cbi5vcmRlci1pdGVtLXJvdyAub3JkZXItaXRlbS1kZXRhaWxzIHtcbiAgZmxleDogMTtcbn1cblxuLyogS29tcG9zaXQtVm9yc2NoYXUgZsO8ciBBbHQtQmVzdGVsbHVuZ2VuIG9obmUgQ2FwdHVyZSAoMjAyNi0wNy0yMik6XG4gICBIaW50ZXJncnVuZGJpbGQgKyBzdGFuemV4YWt0ZXMgVMO8cmNoZW4tT3ZlcmxheSAoW2RhdGEtc2xvdF0tR2VvbWV0cmllIGF1c1xuICAgY29uZmlndXJhdG9yLmNzcykuIEltIDEyMHB4LVRodW1ibmFpbCBkw7xubmUgUsOkbmRlciBvaG5lIE51bW1lcm47IGluIGRlclxuICAgTGlnaHRib3ggKGdla2xvbnRlciBLbm90ZW4pIHZvbGxlIFTDvHJjaGVuLU9wdGlrLiAqL1xuLm9yZGVyLXByZXZpZXctY29tcG9zaXRlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ub3JkZXItcHJldmlldy1jb21wb3NpdGUgLm9yZGVyLXByZXZpZXctYmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi8qIE1pbmktQ2hpcHMgaW0gMTIwcHgtVGh1bWJuYWlsLiBTcGV6aWZpdMOkdCAoMCwzLDApIGlzdCBQZmxpY2h0OiBkaWUgU1DDhFRFUlxuICAgbGFkZW5kZSBjb25maWd1cmF0b3IuY3NzIHNldHp0IC5nYmMtc3RhdGljLWRvb3IgLmdiYy1kb29yLW51bWJlciAoMCwyLDApXG4gICBtaXQgMS41ZW0g4oCUIGJlaSBnbGVpY2hlciBTcGV6aWZpdMOkdCBnZXdhbm4gc2llIHVuZCBkaWUgTnVtbWVybiBlcnNjaGllbmVuXG4gICByaWVzaWcgKEJ1ZyAyMDI2LTA3LTIyIGFiZW5kcykuICovXG4ub3JkZXItaXRlbS1wcmV2aWV3IC5nYmMtc3RhdGljLWRvb3IgLmdiYy1kb29yLW51bWJlciB7XG4gIGZvbnQtc2l6ZTogMC41cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBwYWRkaW5nOiAxcHggNHB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5jYXJ0LXByZXZpZXctbGlnaHRib3gtcHJldmlldyAub3JkZXItcHJldmlldy1jb21wb3NpdGUge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBhc3BlY3QtcmF0aW86IDMzIC8gMjQ7XG59XG5cbi5vcmRlci1pdGVtLWRldGFpbHMgLml0ZW0tbmFtZSB7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtbWVkaXVtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaGVhZGluZyk7XG59XG5cbi5vcmRlci1pdGVtLWRldGFpbHMgLml0ZW0tcXVhbnRpdHkge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLm9yZGVyLWl0ZW0tcHJpY2Uge1xuICBmb250LXdlaWdodDogdmFyKC0td2VpZ2h0LXNlbWlib2xkKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaGVhZGluZyk7XG59XG5cbi5vcmRlci1kZXRhaWwtdG90YWxzIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC01MCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS01KTtcbn1cblxuLnRvdGFscy1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xufVxuXG4udG90YWxzLXJvdy50b3RhbCB7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS13ZWlnaHQtYm9sZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaGVhZGluZyk7XG4gIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTMwMCk7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LXN0YXR1cyB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogdmFyKC0td2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5wYXltZW50LXN0YXR1cy5wYWlkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VjY2Vzcy1iZyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbn1cblxuLm9yZGVyLWRldGFpbC1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNSk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS01KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5vcmRlci1kZXRhaWwtYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICBcbiAgLm9yZGVyLWRldGFpbC1hY3Rpb25zIC5idG4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbi8qIE1ha2Ugb3JkZXIgaXRlbXMgY2xpY2thYmxlICovXG4ub3JkZXItaXRlbSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuXG4ub3JkZXItaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNTApO1xufVxuXG4ub3JkZXItaXRlbS1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgUFdBIGNocm9tZSDigJQgdXBkYXRlIHRvYXN0ICsgaW5zdGFsbCBhZmZvcmRhbmNlXG4gICBCdWlsdCBieSBzdGF0aWMvanMvcHdhLmpzIChjcmVhdGVFbGVtZW50ICsgdGV4dENvbnRlbnQgb25seSkuIE1vYmlsZS1maXJzdC5cbiAgIHotaW5kZXggc2l0cyBhYm92ZSB0aGUgc3RpY2t5IGhlYWRlciAoMTAwMDEpIGJ1dCBiZWxvdyBtb2RhbHMgKDEwMDEwKSwgc28gYW5cbiAgIG9wZW4gbW9kYWwgaXMgbmV2ZXIgY292ZXJlZCBieSBhIHBhc3NpdmUgYmFubmVyLlxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5wd2EtdG9hc3QsXG4ucHdhLWluc3RhbGwtYmFubmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogY2FsYygxNnB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHotaW5kZXg6IDEwMDA1O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEycHg7XG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzJweCk7XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7IC8qIFRva2VuIHN0YXR0ICNmZmYgKDIwMjYtMTAtMDcpICovXG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LCAjMmQzNzQ4KTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xuICBhbmltYXRpb246IHB3YS1mYWRlIDAuMnMgZWFzZS1vdXQ7XG59XG5cbi8qIE9wYWNpdHktb25seSBzbyB0aGUgZW50cmFuY2UgbmV2ZXIgZmlnaHRzIHRoZSBYLWNlbnRlcmluZyB0cmFuc2Zvcm0sIHdoaWNoXG4gICBkaWZmZXJzIGJldHdlZW4gdGhlIGRlc2t0b3AgKHRyYW5zbGF0ZVgoLTUwJSkpIGFuZCBtb2JpbGUgKGZ1bGwtd2lkdGgpIGxheW91dHMuICovXG5Aa2V5ZnJhbWVzIHB3YS1mYWRlIHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgdG8gICB7IG9wYWNpdHk6IDE7IH1cbn1cblxuLnB3YS10b2FzdF9fdGV4dCxcbi5wd2EtaW5zdGFsbC1iYW5uZXJfX3RleHQge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4ucHdhLXRvYXN0X19idG4sXG4ucHdhLWluc3RhbGwtYmFubmVyX19idG4ge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSwgI0IyM0EzMSk7XG4gIHBhZGRpbmc6IDhweCAxNnB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4vKiBTdXJwcmlzZUNhbGVuZGFyICgyMDI2LTEwLTAyKTogdGhlIFNhbXN1bmctSW50ZXJuZXQgaGludCB1c2VzIGFuIDxhPiAoaW50ZW50Oi8vXG4gICBsaW5rIHRvIENocm9tZSkg4oCUIGtlZXAgaXQgd2hpdGU7IHRoZSBnbG9iYWwgYTpob3ZlciAoZGVzaWduLXN5c3RlbS5jc3MpIHdvdWxkXG4gICBvdGhlcndpc2UgdHVybiB0aGUgbGFiZWwgZGFyayByZWQgb24gcmVkIGFmdGVyIGEgdGFwIChzdGlja3kgaG92ZXIgb24gdG91Y2gpLiAqL1xuYS5wd2EtaW5zdGFsbC1iYW5uZXJfX2J0bixcbmEucHdhLWluc3RhbGwtYmFubmVyX19idG46aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vKiBJdHMgdGV4dCBpcyB0b28gbG9uZyBmb3Igb25lIHJvdyBuZXh0IHRvIHRoZSBsaW5rOiBpbiBhIHNpbmdsZSByb3cgdGhlIHRleHRcbiAgIHdhcyBzcXVlZXplZCBpbnRvIGEgfjEwMC1weCBjb2x1bW4gYW5kIHRoZSBiYW5uZXIgZ3JldyAyMjDigJMyOTAgcHggdGFsbCBvblxuICAgcGhvbmVzLiBTdGFja2VkOiB0ZXh0IG9uIGl0cyBvd24gcm93LCBsaW5rICsg4pyVIGJlbG93LiAqL1xuLnB3YS1pbnN0YWxsLWJhbm5lci0tc3RhY2tlZCB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnB3YS1pbnN0YWxsLWJhbm5lci0tc3RhY2tlZCAucHdhLWluc3RhbGwtYmFubmVyX190ZXh0IHtcbiAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLnB3YS1pbnN0YWxsLWJhbm5lci0tc3RhY2tlZCAucHdhLWluc3RhbGwtYmFubmVyX19jbG9zZSB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ucHdhLXRvYXN0X19jbG9zZSxcbi5wd2EtaW5zdGFsbC1iYW5uZXJfX2Nsb3NlIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQsICM3MTgwOTYpO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nOiA2cHg7XG59XG5cbi8qIE9uIHNtYWxsIHNjcmVlbnMgc3BhbiB0aGUgd2lkdGggd2l0aCBzaWRlIG1hcmdpbnMgKENMQVVERS5tZCBtb2RhbCBydWxlcykuICovXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnB3YS10b2FzdCxcbiAgLnB3YS1pbnN0YWxsLWJhbm5lciB7XG4gICAgbGVmdDogMTZweDtcbiAgICByaWdodDogMTZweDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG59XG5cbi8qIFN1cnByaXNlQ2FsZW5kYXIgKDIwMjYtMDktMTIpOiBCYW5uZXIgd2VnLCBzb2xhbmdlIGVpbiBLb25maWd1cmF0b3ItTW9kYWxcbiAgIG9mZmVuIGlzdC4gQXVmIGRlbSBIYW5keSBzaW5kIGRpZSBNb2RhbGUgVm9sbGJpbGQgdW5kIGlociBCZXN0w6R0aWdlbi1CdXR0b25cbiAgIHNpdHp0IHVudGVuIOKAlCBnZW5hdSB1bnRlciBkZW0gQmFubmVyOiBcIlRleHQgw7xiZXJuZWhtZW5cIiB1bmQgXCJJbiBkZW5cbiAgIFdhcmVua29yYlwiIHdhcmVuIHNvIHBlciBUaXBwIG5pY2h0IGVycmVpY2hiYXIgKFB1cHBldGVlci1OYWNod2VpczpcbiAgIGVsZW1lbnRGcm9tUG9pbnQgYXVmIGRlbSBCdXR0b24gPSAucHdhLWluc3RhbGwtYmFubmVyX190ZXh0KS4gTW9kYWxNYW5hZ2VyXG4gICBzZXR6dCBib2R5Lm1vZGFsLW9wZW47IGRhcyBWb3JzY2hhdS1Nb2RhbCB3aXJkIGRpcmVrdCBwZXIgc3R5bGUuZGlzcGxheVxuICAgZ2XDtmZmbmV0IOKAlCBkYWhlciB6dXPDpHR6bGljaCA6aGFzKCkgYXVmIGRhcyBzaWNodGJhcmUgLmdiYy1tb2RhbC4gKi9cbmJvZHkubW9kYWwtb3BlbiAucHdhLWluc3RhbGwtYmFubmVyLFxuYm9keTpoYXMoLmdiYy1tb2RhbFtzdHlsZSo9XCJkaXNwbGF5OiBmbGV4XCJdKSAucHdhLWluc3RhbGwtYmFubmVyIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVXRpbGl0eTogc2VydmVyc2VpdGlnIGdlcmVuZGVydGVyIEluaXRpYWx6dXN0YW5kIChBbnRpLUZsaWNrZXIsIDIwMjYtMDctMjIpLlxuICAgIWltcG9ydGFudCwgd2VpbCBlaW56ZWxuZSBCYXNpc3JlZ2VsbiAoei4gQi4gLmZsb2F0aW5nLWNhcnQtYmFkZ2UgaW5cbiAgIGZsb2F0aW5nLWNhcnQuY3NzKSBOQUNIIGRpZXNlciBEYXRlaSBsYWRlbi4gSlMgKHVwZGF0ZUF1dGhVSS9cbiAgIHVwZGF0ZUNhcnRDb3VudCkgdG9nZ2xldCBkaWUgS2xhc3NlIHVuZCBibGVpYnQgZGFtaXQgZGllIEF1dG9yaXTDpHQuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmlzLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFN0cmlwZS1UZXN0bW9kdXMtQmFubmVyICgyMDI2LTA4LTA1KS5cbiAgIFNpY2h0YmFyIGbDvHIgQUxMRSBCZXN1Y2hlciwgc29sYW5nZSBtYW5kYW50ZW4uc3RyaXBlX3Rlc3RfbW9kZSBha3RpdiBpc3RcbiAgIChXYXJ0dW5nc2ZlbnN0ZXItS29uemVwdCkuIEJld3Vzc3QgTklDSFQgc3RpY2t5IOKAlCBkZXIgU2l0ZS1IZWFkZXIgYmxlaWJ0XG4gICBkYXMgZWluemlnZSBTdGlja3ktRWxlbWVudCwgZGllIHotaW5kZXgtS2V0dGUgKDEwMDAxLzEwMDEwKSBibGVpYnRcbiAgIHVuYW5nZXRhc3RldC4gR2VyZW5kZXJ0IHZvbiBsYXlvdXQudGVtcGwgKHRlc3RNb2RlT24oY3R4KSkuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRlc3Rtb2RlLWJhbm5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgNDVkZWcsXG4gICAgI2ZmY2MwMCxcbiAgICAjZmZjYzAwIDI0cHgsXG4gICAgI2YwYmUwMCAyNHB4LFxuICAgICNmMGJlMDAgNDhweFxuICApO1xuICBjb2xvcjogIzFhMWExYTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTaG9wLUVyd2VpdGVydW5nIChTdXJwcmlzZUNhbGVuZGFyIDIwMjYtMDktMTIpOiBGw7xsbHVuZ2VuLCBadXNhdHphcnRpa2VsLFxuICAgUHJvZHVrdHNlaXRlIG1pdCBMTUlWLUFuZ2FiZW4sIEtpbmQtUG9zaXRpb25lbiBpbSBXYXJlbmtvcmIsIFBha2V0LUhpbndlaXMsXG4gICBTZW5kdW5nZW4gaW0gS3VuZGVua29udG8uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByb2R1Y3RzLWdyb3VwLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTEyKSAwIHZhcigtLXNwYWNlLTIpO1xufVxuXG4ucHJvZHVjdHMtZ3JvdXAtbm90ZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXgtd2lkdGg6IDYyMHB4O1xuICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjZS02KTtcbn1cblxuLnByb2R1Y3RzLWdyaWQtLXdpZGUge1xuICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIC5wcm9kdWN0cy1ncmlkLS13aWRlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdHMtZ3JpZC0td2lkZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLnByb2R1Y3QtY2FyZF9fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucHJvZHVjdC1pbmZvIGgzIGEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4ucHJvZHVjdC1iYXNlcHJpY2UsXG4ucHJvZHVjdC1kZWxpdmVyeSxcbi5wcm9kdWN0LWZpbGxpbmctbm90ZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLnByb2R1Y3QtZm9vZC1oaW50IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLnByb2R1Y3QtYnV5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5wcm9kdWN0LXF0eSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG59XG5cbi5wcm9kdWN0LXF0eS1pbnB1dCB7XG4gIHdpZHRoOiA0LjVlbTtcbiAgcGFkZGluZzogNnB4IDhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgZm9udDogaW5oZXJpdDtcbn1cblxuLnByb2R1Y3QtYnV5IC5idG4uaXMtYWRkZWQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbn1cblxuLyogUHJvZHVrdHNlaXRlICovXG4ucHJvZHVjdC1kZXRhaWwtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpIDAgdmFyKC0tc3BhY2UtMTIpO1xufVxuXG4ucHJvZHVjdC1kZXRhaWxfX2JhY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnByb2R1Y3QtZGV0YWlsX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBtaW5tYXgoMCwgMS4yZnIpO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAucHJvZHVjdC1kZXRhaWxfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5wcm9kdWN0LWRldGFpbF9fbWVkaWEgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5wcm9kdWN0LWRldGFpbF9fbWVkaWEgLnByb2R1Y3QtaW1hZ2UtcGxhY2Vob2xkZXIge1xuICBtaW4taGVpZ2h0OiAyNDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogNHJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2FybSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG59XG5cbi5wcm9kdWN0LWRldGFpbF9faW5mbyBoMSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi5wcm9kdWN0LWRldGFpbF9fZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDA7XG59XG5cbi5sbWl2IHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5sbWl2IGgyIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmxtaXYgdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xufVxuXG4ubG1pdiB0aCxcbi5sbWl2IHRkIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgcGFkZGluZzogNnB4IDhweCA2cHggMDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5sbWl2IHRoIHtcbiAgd2lkdGg6IDM0JTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubG1pdiB0cjpsYXN0LWNoaWxkIHRoLFxuLmxtaXYgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi8qIFdhcmVua29yYjogS2luZC1Qb3NpdGlvbmVuICsgUGFrZXQtSGlud2VpcyAqL1xuLmNhcnQtaXRlbS0tY2hpbGQge1xuICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UtOCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmNhcnQtaXRlbS0tY2hpbGQge1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4uY2FydC1pdGVtLWNoaWxkLW5vdGUge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0yKSAwO1xufVxuXG4uY2FydC1wYXJjZWxzLW5vdGUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtNik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uY2FydC1wYXJjZWxzLW5vdGUgc3Ryb25nIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4vKiBLdW5kZW5rb250bzogU2VuZHVuZ2VuICovXG4ub3JkZXItc2VuZHVuZ2VuLW5vdGUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLTMpO1xufVxuXG4ub3JkZXItc2VuZHVuZ2VuIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLm9yZGVyLXNlbmR1bmdlbiB0aCxcbi5vcmRlci1zZW5kdW5nZW4gdGQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBwYWRkaW5nOiA4cHggNnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLm9yZGVyLXNlbmR1bmdlbiBzbWFsbCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLnN0YXR1cy1iYWRnZS5zZW5kdW5nLXZlcnNlbmRldCxcbi5zdGF0dXMtYmFkZ2Uuc2VuZHVuZy16dWdlc3RlbGx0IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VjY2Vzcy1iZywgI0U3RjJFQSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbn1cblxuLnN0YXR1cy1iYWRnZS5zZW5kdW5nLXByb2JsZW0ge1xuICBiYWNrZ3JvdW5kOiAjZmRlY2VhO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4uc3RhdHVzLWJhZGdlLnNlbmR1bmctc3Rvcm5pZXJ0IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2FybSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gIC5vcmRlci1zZW5kdW5nZW4gdGhlYWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAub3JkZXItc2VuZHVuZ2VuIHRyIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IDRweCA4cHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC5vcmRlci1zZW5kdW5nZW4gdGQge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAycHggMDtcbiAgfVxufVxuIl19 */