/* ==========================================================================
   HubRaiz — Main Stylesheet Entry Point
   Imports all CSS partials in documented architecture order.
   PostCSS + postcss-import bundles this into dist/style.css at build time.
   ========================================================================== */

/* 1. Design tokens — MUST be first; all partials depend on these */

/* ==========================================================================
   1. DESIGN TOKENS
   CSS custom properties organized by role:
   
   ┌─ Palette Primitives ─────────────────────────────────────┐
   │  Surface, Neutral — base color scales                    │
   │  Feed semantic tokens; also consumed directly by some    │
   │  component overrides (especially .dark selector blocks)  │
   └──────────────────────────────────────────────────────────┘
   ┌─ Accent System ──────────────────────────────────────────┐
   │  --accent-primary / --accent-secondary + variants        │
   │  SWAP between default and alt themes                     │
   └──────────────────────────────────────────────────────────┘
   ┌─ Semantic Tokens ────────────────────────────────────────┐
   │  --bg-primary, --text-*, --glass-*, --pill-*, etc.      │
   │  Override in .dark / [alt] / [alt].dark / @media        │
   └──────────────────────────────────────────────────────────┘
   ┌─ Scheme Tokens ──────────────────────────────────────────┐
   │  --scheme-* — context-specific overrides per theme       │
   │  Each defined in :root and overridden per theme block    │
   └──────────────────────────────────────────────────────────┘
   ┌─ Structural Tokens ──────────────────────────────────────┐
   │  --chrome-shadow-*, --glass-inset-*, --ui-surface-*     │
   │  --toggle-*, --drawer-close-*, --btn-inset-*            │
   │  Shadows, highlights, translucent overlays               │
   └──────────────────────────────────────────────────────────┘
   
   Theme structure:
     :root                         → Default (Green) light mode
     .dark                         → Default (Green) dark mode
     [data-color-scheme="alt"]     → Alt (Orange) light mode
     [data-color-scheme="alt"].dark→ Alt (Orange) dark mode
     @media(prefers-color-scheme:dark) → Non-JS dark fallback
   ========================================================================== */

:root {
  color-scheme: light;

  /* Surface palette — base canvas tones for backgrounds & light text on dark */
  --surface-50: #FAF7F2;
  --surface-100: #F5F0E8;
  --surface-200: #EBE3D5;
  --surface-300: #D4C8B4;
  --surface-400: #B8A68E;

  /* Neutral palette — text, borders, and structural tones */
  --neutral-200: #D1BFA8;
  --neutral-300: #B09A7E;
  --neutral-400: #8A7260;
  --neutral-500: #6E5A48;
  --neutral-600: #5C4A3A;
  --neutral-700: #4A3A2E;
  --neutral-800: #3D2E22;
  --neutral-900: #2C1810;

  /* Glass card/panel shadow tokens */
  --card-shadow:       rgba(44, 24, 16, 0.04);
  --card-shadow-hover: rgba(99, 107, 47, 0.08);

  /* Marketplace colors */
  --ml-yellow: #FFE600;
  --ml-yellow-hover: #FFD700;
  --ml-navy: #2D3277;
  --ml-shadow: rgba(255, 230, 0, 0.25);
  --ml-shadow-hover: rgba(255, 230, 0, 0.35);
  --shopee-orange: #EE4D2D;
  --shopee-orange-hover: #D73211;
  --shopee-shadow: rgba(238, 77, 45, 0.25);
  --shopee-shadow-hover: rgba(238, 77, 45, 0.35);

  /* Fonts */
  --font-heading: Georgia, "Times New Roman", Cambria, "Noto Serif", serif;
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-ui: "hubraiz-ui", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  /* Transition presets */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --duration-normal: 0.2s;
  --duration-slow: 0.3s;

  /* Accent system — primary accent with secondary as fallback */
  --accent-primary: #636B2F;
  --accent-primary-hover: #748038;
  --accent-primary-light: rgba(99, 107, 47, 0.15);
  --accent-primary-border: rgba(99, 107, 47, 0.25);
  --accent-primary-shadow: rgba(99, 107, 47, 0.25);

  --accent-secondary: #FF5C00;
  --accent-secondary-light: rgba(255, 92, 0, 0.12);
  --accent-secondary-border: rgba(255, 92, 0, 0.25);

  /* Semantic colors — light mode defaults */
  --bg-primary: #F5F0E8;
  --text-primary: #2C1810;
  --text-secondary: #5C4A3A;
  --text-muted: #725E4C;
  --text-placeholder: rgba(92, 74, 58, 0.4);
  --glass-bg: rgba(255, 255, 255, 0.85);
  --glass-border: rgba(99, 107, 47, 0.15);
  --glass-hover-bg: rgba(255, 255, 255, 0.92);
  --glass-hover-border: rgba(99, 107, 47, 0.2);
  --filter-bar-bg: rgba(250, 247, 242, 0.88);
  --filter-bar-border: rgba(255, 255, 255, 0.5);
  --search-bg: rgba(255, 255, 255, 0.8);
  --search-border: rgba(255, 255, 255, 0.5);
  --search-focus-bg: rgba(255, 255, 255, 0.92);
  --search-focus-border: rgba(99, 107, 47, 0.4);
  --pill-inactive-bg: rgba(255, 255, 255, 0.7);
  --pill-inactive-border: rgba(255, 255, 255, 0.5);
  --pill-inactive-text: #5C4A3A;
  --drawer-panel-bg: rgba(250, 247, 242, 0.92);
  --drawer-border: rgba(255, 255, 255, 0.5);
  --drawer-overlay-bg: rgba(44, 24, 16, 0.4);
  --desc-fade: rgba(255, 255, 255, 0.85);
  --footer-bg: #1A2110;
  --footer-text: #E5DFD4;
  --footer-muted: rgba(200, 190, 175, 0.75);
  --scheme-footer-accent: #A8B854;
  --scheme-footer-icon: rgba(168, 184, 84, 0.6);
  --scheme-footer-border: rgba(168, 184, 84, 0.1);
  --footer-disclaimer: rgba(200, 190, 175, 0.8);

  /* Scheme-specific accent tokens — default (green) theme */
  --scheme-hero-tagline: #636B2F;
  /* Tag, pill, badge tokens use --accent-primary family directly
     so they swap automatically with the active color scheme. */
  --scheme-badge-bg: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-primary-hover) 100%);
  --scheme-scroll-thumb: rgba(99, 107, 47, 0.4);
  --scheme-focus-ring: #636B2F;
  --scheme-hero-logo-bg: rgba(99, 107, 47, 0.08);
  --scheme-hero-logo-bg-dark: rgba(99, 107, 47, 0.2);
  --scheme-hero-trust: #6E5A48;
  --scheme-hero-scroll-color: rgba(99, 107, 47, 0.6);
  --scheme-image-wrap-bg: rgba(235, 227, 213, 0.3);
  --scheme-image-wrap-bg-dark: rgba(44, 24, 16, 0.4);
  --scheme-overlay-gradient: rgba(44, 24, 16, 0.2);
  --scheme-overlay-gradient-dark: rgba(0, 0, 0, 0.2);
  --scheme-search-focus-ring: rgba(99, 107, 47, 0.08);
  --scheme-search-focus-ring-strong: rgba(99, 107, 47, 0.1);
  --scheme-trust-divider: rgba(168, 184, 84, 0.3);
  --scheme-trust-divider-dark: rgba(99, 107, 47, 0.12);
  /* Marketplace badge — subtle accent tint (footer is always dark) */
  --scheme-marketplace-badge-bg: rgba(168, 184, 84, 0.15);
  --scheme-marketplace-badge-border: rgba(168, 184, 84, 0.3);

  /* Tag hierarchy — both use accent-primary-light bg (hero icon style).
     Brand tags: full accent text + full accent border + bold = pops.
     Category tags: faded accent text + faded accent border + normal = recedes.
     No separate -dark tokens needed; accent tokens auto-swap. */
  /* ── Text on accent ────────────────────────────────────────
     Text on solid/filled accent backgrounds (skip link, CTA buttons). */
  --text-on-accent: #FFFFFF;

  /* ── Selection highlight ─────────────────────────────────── */
  --selection-bg-dark: rgba(168, 184, 84, 0.35);

  /* ── Glass morphism inset highlights ────────────────────────
     Subtle top-edge highlight that simulates light reflection
     on glass surfaces in light and dark modes */
  --glass-inset: rgba(255, 255, 255, 0.3);
  --glass-inset-hover: rgba(255, 255, 255, 0.4);
  --glass-inset-dark: rgba(229, 223, 212, 0.05);
  --glass-inset-dark-hover: rgba(229, 223, 212, 0.08);

  /* ── Structural shadows ─────────────────────────────────────
     Warm-tinted drop shadows for UI chrome (panels, drawers, FABs).
     Light mode uses warm brown base; dark mode uses pure black. */
  --chrome-shadow-sm: rgba(44, 24, 16, 0.05);
  --chrome-shadow-md: rgba(44, 24, 16, 0.08);
  --chrome-shadow-lg: rgba(44, 24, 16, 0.12);
  --chrome-shadow-dark: rgba(0, 0, 0, 0.2);
  --logo-drop-shadow:   rgba(0, 0, 0, 0.35);  /* hero logo glow drop-shadow */

  /* ── Translucent UI surfaces ────────────────────────────────
     Semi-transparent white overlays for circular glass elements
     (hero scroll button, trust divider, toggle FAB).
     Dark mode uses much lower opacity for subtle visibility. */
  --ui-surface-bg: rgba(255, 255, 255, 0.3);
  --ui-surface-border: rgba(255, 255, 255, 0.4);
  --ui-surface-hover-bg: rgba(255, 255, 255, 0.5);
  --ui-surface-bg-dark: rgba(255, 255, 255, 0.05);
  --ui-surface-border-dark: rgba(255, 255, 255, 0.1);
  --ui-surface-hover-bg-dark: rgba(255, 255, 255, 0.12);

  /* ── Toggle FAB surfaces ────────────────────────────────────
     The floating action button for dark/light mode has its own
     surface tokens because it uses a distinct opacity range. */
  --toggle-bg: rgba(255, 255, 255, 0.5);
  --toggle-border: rgba(255, 255, 255, 0.6);
  --toggle-bg-dark: rgba(255, 255, 255, 0.1);
  --toggle-border-dark: rgba(255, 255, 255, 0.15);

  /* ── Drawer close button ──────────────────────────────────── */
  --drawer-close-bg: rgba(250, 247, 242, 0.6);
  --drawer-close-bg-dark: rgba(255, 255, 255, 0.1);
  --drawer-close-bg-dark-hover: rgba(255, 255, 255, 0.15);

  /* ── Button inset highlights ────────────────────────────────
     Top-edge highlight for CTA-style buttons */
  --btn-inset: rgba(255, 255, 255, 0.15);
  --btn-inset-hover: rgba(255, 255, 255, 0.2);
  --ml-inset: rgba(255, 255, 255, 0.5);
  --ml-inset-hover: rgba(255, 255, 255, 0.6);

  /* ── Scheme swatch border ─────────────────────────────────── */
  --scheme-swatch-border: rgba(128, 128, 128, 0.15);

  /* ── Spacing scale ──────────────────────────────────────────
     Numeric scale used by u-m* / u-p* utility classes.
     Follows a 4px base grid: 1 = 0.25rem (4px). */
  --spacing-0: 0;
  --spacing-px: 1px;
  --spacing-0-5: 0.125rem;
  --spacing-1: 0.25rem;
  --spacing-1-5: 0.375rem;
  --spacing-2: 0.5rem;
  --spacing-2-5: 0.625rem;
  --spacing-3: 0.75rem;
  --spacing-3-5: 0.875rem;
  --spacing-4: 1rem;
  --spacing-5: 1.25rem;
  --spacing-6: 1.5rem;
  --spacing-7: 1.75rem;
  --spacing-8: 2rem;
  --spacing-9: 2.25rem;
  --spacing-10: 2.5rem;
  --spacing-11: 2.75rem;
  --spacing-12: 3rem;
  --spacing-14: 3.5rem;
  --spacing-16: 4rem;
  --spacing-20: 5rem;
  --spacing-24: 6rem;

  /* ── Font-size scale ────────────────────────────────────────
     Used by u-text-* utility classes. */
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  /* ── Font-weight scale ──────────────────────────────────────
     Used by u-text-*-bold utility classes and standalone weight classes. */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* ── Line-height scale ──────────────────────────────────────
     Used by u-leading-* utility classes. */
  --leading-none: 1;
  --leading-tight: 1.25;
  --leading-snug: 1.375;
  --leading-normal: 1.5;
  --leading-relaxed: 1.625;
  --leading-loose: 2;

  /* ── Border-radius scale ────────────────────────────────────
     Used by u-rounded-* utility classes. */
  --radius-none: 0;
  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-2xl: 1.5rem;
  --radius-full: 9999px;
}

/* ── Dark mode tokens ──────────────────────────────────────
   These semantic token values appear TWICE intentionally:
   1. .dark { }           → JS-driven toggle (localStorage / user click)
   2. @media prefers-color-scheme: dark → Non-JS fallback when no
      .light or .dark class is present on <html>
   DO NOT deduplicate — they serve different code paths.
   When updating dark-mode values, update BOTH blocks.
   ─────────────────────────────────────────────────────── */

/* JS-driven dark mode */

.dark {
  color-scheme: dark;
  --bg-primary: #1A1816;
  --text-primary: #E5DFD4;
  --text-secondary: #C5D4B8;
  --text-muted: #B09A7E;
  --text-placeholder: rgba(200, 190, 175, 0.35);
  --glass-bg: rgba(35, 32, 28, 0.88);
  --glass-border: rgba(168, 184, 84, 0.2);
  --glass-hover-bg: rgba(45, 40, 34, 0.92);
  --glass-hover-border: rgba(168, 184, 84, 0.2);
  --filter-bar-bg: rgba(26, 24, 22, 0.92);
  --filter-bar-border: rgba(60, 55, 45, 0.5);
  --search-bg: rgba(35, 32, 28, 0.85);
  --search-border: rgba(60, 55, 45, 0.5);
  --search-focus-bg: rgba(40, 36, 30, 0.92);
  --search-focus-border: rgba(168, 184, 84, 0.4);
  --pill-inactive-bg: rgba(35, 32, 28, 0.75);
  --pill-inactive-border: rgba(60, 55, 45, 0.5);
  --pill-inactive-text: #E5DFD4;
  --drawer-panel-bg: rgba(30, 28, 24, 0.95);
  --drawer-border: rgba(60, 55, 45, 0.5);
  --drawer-overlay-bg: rgba(0, 0, 0, 0.5);
  --desc-fade: rgba(35, 32, 28, 0.85);
  --footer-bg: #111A08;
  --footer-disclaimer: rgba(200, 190, 175, 0.75);

  /* Dark mode scheme token overrides */
  --scheme-hero-tagline: var(--scheme-footer-accent);

  /* Dark mode accent — lighter shade for contrast on dark bg */
  --accent-primary: #A8B854;
  --accent-primary-hover: #B8C864;
  --accent-primary-light: rgba(168, 184, 84, 0.15);
  --accent-primary-border: rgba(168, 184, 84, 0.3);
  --accent-primary-shadow: rgba(168, 184, 84, 0.25);
  --card-shadow-hover: rgba(168, 184, 84, 0.08);

  /* Focus ring uses lightened accent for visibility on dark bg */
  --scheme-focus-ring: var(--accent-primary);

  /* Text on solid accent backgrounds — dark tint for contrast on bright accent */
  --text-on-accent: #2C3015;
}

/* Scheme override: alternate — swaps accent roles for a different look */

[data-color-scheme="alt"] {
  /* Accent system — secondary becomes primary, primary becomes secondary */
  --accent-primary: #FF5C00;
  --accent-primary-hover: #FF7030;
  --accent-primary-light: rgba(255, 92, 0, 0.12);
  --accent-primary-border: rgba(255, 92, 0, 0.25);
  --accent-primary-shadow: rgba(255, 92, 0, 0.25);
  --accent-secondary: #636B2F;
  --accent-secondary-light: rgba(99, 107, 47, 0.12);
  --accent-secondary-border: rgba(99, 107, 47, 0.25);
  --card-shadow-hover: rgba(255, 92, 0, 0.08);
  --glass-border: rgba(255, 92, 0, 0.15);
  --glass-hover-border: rgba(255, 92, 0, 0.2);
  --search-focus-border: rgba(255, 92, 0, 0.4);

  /* Scheme-specific accent tokens */
  --scheme-hero-tagline: #FF5C00;
  /* Badge tokens NOT overridden here — they use --accent-primary /
     --accent-primary-hover / --accent-primary-shadow which swap
     automatically via the accent system overrides above */
  --scheme-scroll-thumb: rgba(255, 92, 0, 0.4);
  --scheme-focus-ring: #FF5C00;
  --scheme-hero-logo-bg: rgba(255, 245, 235, 0.5);
  --scheme-hero-logo-bg-dark: rgba(80, 30, 0, 0.3);
  --scheme-hero-trust: #8A7260;
  --scheme-hero-scroll-color: rgba(255, 92, 0, 0.6);
  --scheme-overlay-gradient: rgba(44, 24, 16, 0.2);
  --scheme-footer-accent: #FF8C5A;
  --scheme-footer-icon: rgba(255, 140, 90, 0.6);
  --scheme-footer-border: rgba(255, 140, 90, 0.1);
  --scheme-search-focus-ring: rgba(255, 92, 0, 0.08);
  --scheme-search-focus-ring-strong: rgba(255, 92, 0, 0.1);
  --scheme-trust-divider: rgba(255, 140, 90, 0.3);
  --scheme-trust-divider-dark: rgba(255, 92, 0, 0.12);
  /* Marketplace badge — subtle accent tint (footer is always dark) */
  --scheme-marketplace-badge-bg: rgba(255, 140, 90, 0.15);
  --scheme-marketplace-badge-border: rgba(255, 140, 90, 0.3);
  --footer-disclaimer: rgba(200, 190, 175, 0.7);
  --footer-bg: #2C1810;

  /* Selection — alt theme */
  --selection-bg-dark: rgba(255, 140, 90, 0.35);

  /* Text on solid accent backgrounds */
  --text-on-accent: #FFFFFF;
}

[data-color-scheme="alt"].dark {
  color-scheme: dark;
  /* Dark mode accent — lighter shade for contrast on dark bg */
  --accent-primary: #FF8C5A;
  --accent-primary-hover: #FFA070;
  --accent-primary-light: rgba(255, 140, 90, 0.15);
  --accent-primary-border: rgba(255, 140, 90, 0.3);
  --accent-primary-shadow: rgba(255, 140, 90, 0.25);
  --card-shadow-hover: rgba(255, 140, 90, 0.08);
  --glass-border: rgba(255, 140, 90, 0.2);
  --glass-hover-border: rgba(255, 140, 90, 0.2);
  --search-focus-border: rgba(255, 140, 90, 0.4);

  --accent-secondary: #A8B854;
  --accent-secondary-light: rgba(168, 184, 84, 0.15);
  --accent-secondary-border: rgba(168, 184, 84, 0.3);

  /* Semantic text — desaturated from olive-green to warm neutral */
  --text-secondary: #D4C5B8;

  /* Scheme accent tokens — dark mode */
  --scheme-hero-tagline: var(--scheme-footer-accent);
  --scheme-focus-ring: var(--accent-primary);
  --footer-bg: #131210;
  --footer-disclaimer: rgba(200, 190, 175, 0.75);

  /* Text on solid accent backgrounds — dark brown for contrast on bright orange accent */
  --text-on-accent: #551F00;
}

/* Light mode explicit opt-in — forces native controls to light scheme */

.light {
  color-scheme: light;
}

/* Non-JS dark mode fallback (prefers-color-scheme: dark).
 * NOTE: This only applies the default HubRaiz dark tokens.
 * Users who selected an alternative color scheme via JavaScript
 * (stored in localStorage as "hubraiz-color-scheme") will see the
 * default scheme if JavaScript is unavailable, since
 * data-color-scheme is set by JS at runtime.
 */

@media (prefers-color-scheme: dark) {
  /* Mirror of .dark — keep in sync. When updating dark-mode values,
     update BOTH the .dark block (JS-toggled) and this @media block (no-JS fallback). */
  :root:not(.light):not(.dark) {
    color-scheme: dark;
    --bg-primary: #1A1816;
    --text-primary: #E5DFD4;
    --text-secondary: #C5D4B8;
    --text-muted: #B09A7E;
    --text-placeholder: rgba(200, 190, 175, 0.35);
    --glass-bg: rgba(35, 32, 28, 0.88);
    --glass-border: rgba(168, 184, 84, 0.2);
    --glass-hover-bg: rgba(45, 40, 34, 0.92);
    --glass-hover-border: rgba(168, 184, 84, 0.2);
    --filter-bar-bg: rgba(26, 24, 22, 0.92);
    --filter-bar-border: rgba(60, 55, 45, 0.5);
    --search-bg: rgba(35, 32, 28, 0.85);
    --search-border: rgba(60, 55, 45, 0.5);
    --search-focus-bg: rgba(40, 36, 30, 0.92);
    --search-focus-border: rgba(168, 184, 84, 0.4);
    --pill-inactive-bg: rgba(35, 32, 28, 0.75);
    --pill-inactive-border: rgba(60, 55, 45, 0.5);
    --pill-inactive-text: #E5DFD4;
    --drawer-panel-bg: rgba(30, 28, 24, 0.95);
    --drawer-border: rgba(60, 55, 45, 0.5);
    --drawer-overlay-bg: rgba(0, 0, 0, 0.5);
    --desc-fade: rgba(35, 32, 28, 0.85);
    --footer-bg: #111A08;
    --footer-disclaimer: rgba(200, 190, 175, 0.75);
    --accent-primary: #A8B854;
    --accent-primary-hover: #B8C864;
    --accent-primary-light: rgba(168, 184, 84, 0.15);
    --accent-primary-border: rgba(168, 184, 84, 0.3);
    --accent-primary-shadow: rgba(168, 184, 84, 0.25);
    --card-shadow-hover: rgba(168, 184, 84, 0.08);
    --scheme-hero-tagline: var(--scheme-footer-accent);
    --scheme-focus-ring: var(--accent-primary);
    --text-on-accent: #2C3015;
  }
}

/* 2. Reset & base */

/* ==========================================================================
   2. RESET & BASE
   Box-sizing reset, body defaults, focus states, scrollbar, selection,
   reduced-motion, skip link
   ========================================================================== */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  background: var(--bg-primary);
  font-family: var(--font-body);
  color: var(--text-primary);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  line-height: 1.2;
}

a { color: inherit; text-decoration: none; }

img { display: block; max-width: 100%; height: auto; }

button, input, textarea, select { font-family: inherit; }

button { cursor: pointer; }

ul { list-style: none; }

/* --- Utility: Hidden by default, shown via JS --- */

.is-hidden { display: none !important; }

/* --- Skip Link --- */

.skip-link {
  position: absolute;
  top: -100%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent-primary);
  color: var(--text-on-accent);
  padding: 0.75rem 1.5rem;
  border-radius: 0 0 0.75rem 0.75rem;
  z-index: 9999;
  font-weight: 600;
  font-size: 0.875rem;
  transition: top var(--duration-normal) ease;
  text-decoration: none;
  box-shadow: 0 0 12px var(--chrome-shadow-dark);
}

.skip-link:focus {
  top: 0;
  outline: 3px solid var(--scheme-focus-ring);
  outline-offset: 2px;
}

/* --- Focus States --- */

*:focus-visible {
  outline: 3px solid var(--scheme-focus-ring);
  outline-offset: 3px;
  border-radius: 6px;
}

/* --- Scrollbar --- */

::-webkit-scrollbar { width: 8px; }

::-webkit-scrollbar-track { background: transparent; }

::-webkit-scrollbar-thumb { background: var(--scheme-scroll-thumb); border-radius: 4px; }

::-webkit-scrollbar-thumb:hover { background: var(--scheme-focus-ring); }

/* --- Selection --- */

::selection { background: var(--accent-primary-light); color: var(--neutral-900); }

.dark ::selection { background: var(--selection-bg-dark); color: var(--surface-100); }

/* --- Reduced Motion --- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .desc-scroll-inner.overflows { animation: none !important; }
  .desc-scroll-viewport {
    min-height: unset !important;
    max-height: unset !important;
    overflow: visible;
  }
  .desc-scroll-viewport::after { display: none; }
}

/* 3. Utilities (keyframes, animations, atomic helpers) */

/* ==========================================================================
   3. UTILITIES
   Keyframes, stagger delays, animation utilities,
   icon sizing, text truncation, screen-reader-only
   ========================================================================== */

/* --- Keyframes --- */

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slide-up {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes scroll-text {
  0%     { transform: translateY(0); }
  8%     { transform: translateY(0); }
  88%    { transform: translateY(var(--scroll-distance, -60px)); }
  96%    { transform: translateY(var(--scroll-distance, -60px)); }
  100%   { transform: translateY(0); }
}

@keyframes drawer-in {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

@keyframes drawer-out {
  from { transform: translateX(0); }
  to { transform: translateX(-100%); }
}

@keyframes overlay-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* --- Stagger Delays --- */

.stagger-1 { animation-delay: 0.05s; }

.stagger-2 { animation-delay: 0.1s; }

.stagger-3 { animation-delay: 0.15s; }

.stagger-4 { animation-delay: 0.2s; }

/* --- Animation Utilities --- */

.animate-fade-in { animation: fade-in 0.6s ease-out both; }

.animate-slide-up { animation: slide-up 0.5s ease-out both; }

.animate-float { animation: float 6s ease-in-out infinite; }

/* --- Icon Sizing --- */

.btn-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

/* --- Text Truncation --- */

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* --- Screen Reader Only --- */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ==========================================================================
   3b. ATOMIC UTILITIES
   Tailwind-inspired atomic utility classes for HubRaiz.
   All values reference design tokens — no hardcoded colors, spacing,
   font sizes, or shadows. Fully theme-aware (light/dark, accent swaps).
   Naming: u-{category}-{value}, responsive: {bp}-u-{category}-{value}
   =================================================== */

/* ── Spacing: Margin ──────────────────────────────────────
   u-m{t,b,l,r,x,y}-{n} — directional margin utilities.
   Numbers map to --spacing-* tokens. */

.u-m-0  { margin: var(--spacing-0); }

.u-m-px { margin: var(--spacing-px); }

.u-m-0-5 { margin: var(--spacing-0-5); }

.u-m-1  { margin: var(--spacing-1); }

.u-m-1-5 { margin: var(--spacing-1-5); }

.u-m-2  { margin: var(--spacing-2); }

.u-m-2-5 { margin: var(--spacing-2-5); }

.u-m-3  { margin: var(--spacing-3); }

.u-m-3-5 { margin: var(--spacing-3-5); }

.u-m-4  { margin: var(--spacing-4); }

.u-m-5  { margin: var(--spacing-5); }

.u-m-6  { margin: var(--spacing-6); }

.u-m-7  { margin: var(--spacing-7); }

.u-m-8  { margin: var(--spacing-8); }

.u-m-9  { margin: var(--spacing-9); }

.u-m-10 { margin: var(--spacing-10); }

.u-m-11 { margin: var(--spacing-11); }

.u-m-12 { margin: var(--spacing-12); }

.u-m-14 { margin: var(--spacing-14); }

.u-m-16 { margin: var(--spacing-16); }

.u-m-20 { margin: var(--spacing-20); }

.u-m-24 { margin: var(--spacing-24); }

.u-mt-0  { margin-top: var(--spacing-0); }

.u-mt-1  { margin-top: var(--spacing-1); }

.u-mt-1-5 { margin-top: var(--spacing-1-5); }

.u-mt-2  { margin-top: var(--spacing-2); }

.u-mt-2-5 { margin-top: var(--spacing-2-5); }

.u-mt-3  { margin-top: var(--spacing-3); }

.u-mt-3-5 { margin-top: var(--spacing-3-5); }

.u-mt-4  { margin-top: var(--spacing-4); }

.u-mt-5  { margin-top: var(--spacing-5); }

.u-mt-6  { margin-top: var(--spacing-6); }

.u-mt-8  { margin-top: var(--spacing-8); }

.u-mt-10 { margin-top: var(--spacing-10); }

.u-mt-12 { margin-top: var(--spacing-12); }

.u-mt-16 { margin-top: var(--spacing-16); }

.u-mt-20 { margin-top: var(--spacing-20); }

.u-mb-0  { margin-bottom: var(--spacing-0); }

.u-mb-1  { margin-bottom: var(--spacing-1); }

.u-mb-1-5 { margin-bottom: var(--spacing-1-5); }

.u-mb-2  { margin-bottom: var(--spacing-2); }

.u-mb-2-5 { margin-bottom: var(--spacing-2-5); }

.u-mb-3  { margin-bottom: var(--spacing-3); }

.u-mb-3-5 { margin-bottom: var(--spacing-3-5); }

.u-mb-4  { margin-bottom: var(--spacing-4); }

.u-mb-5  { margin-bottom: var(--spacing-5); }

.u-mb-6  { margin-bottom: var(--spacing-6); }

.u-mb-8  { margin-bottom: var(--spacing-8); }

.u-mb-10 { margin-bottom: var(--spacing-10); }

.u-mb-12 { margin-bottom: var(--spacing-12); }

.u-mb-16 { margin-bottom: var(--spacing-16); }

.u-mb-20 { margin-bottom: var(--spacing-20); }

.u-ml-0  { margin-left: var(--spacing-0); }

.u-ml-1  { margin-left: var(--spacing-1); }

.u-ml-2  { margin-left: var(--spacing-2); }

.u-ml-3  { margin-left: var(--spacing-3); }

.u-ml-4  { margin-left: var(--spacing-4); }

.u-ml-6  { margin-left: var(--spacing-6); }

.u-ml-8  { margin-left: var(--spacing-8); }

.u-ml-auto { margin-left: auto; }

.u-mr-0  { margin-right: var(--spacing-0); }

.u-mr-1  { margin-right: var(--spacing-1); }

.u-mr-2  { margin-right: var(--spacing-2); }

.u-mr-3  { margin-right: var(--spacing-3); }

.u-mr-4  { margin-right: var(--spacing-4); }

.u-mr-6  { margin-right: var(--spacing-6); }

.u-mr-8  { margin-right: var(--spacing-8); }

.u-mr-auto { margin-right: auto; }

.u-mx-0  { margin-left: var(--spacing-0); margin-right: var(--spacing-0); }

.u-mx-1  { margin-left: var(--spacing-1); margin-right: var(--spacing-1); }

.u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }

.u-mx-3  { margin-left: var(--spacing-3); margin-right: var(--spacing-3); }

.u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }

.u-mx-6  { margin-left: var(--spacing-6); margin-right: var(--spacing-6); }

.u-mx-8  { margin-left: var(--spacing-8); margin-right: var(--spacing-8); }

.u-mx-auto { margin-left: auto; margin-right: auto; }

.u-my-0  { margin-top: var(--spacing-0); margin-bottom: var(--spacing-0); }

.u-my-1  { margin-top: var(--spacing-1); margin-bottom: var(--spacing-1); }

.u-my-2  { margin-top: var(--spacing-2); margin-bottom: var(--spacing-2); }

.u-my-3  { margin-top: var(--spacing-3); margin-bottom: var(--spacing-3); }

.u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }

.u-my-6  { margin-top: var(--spacing-6); margin-bottom: var(--spacing-6); }

.u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }

.u-my-10 { margin-top: var(--spacing-10); margin-bottom: var(--spacing-10); }

.u-my-12 { margin-top: var(--spacing-12); margin-bottom: var(--spacing-12); }

/* ── Spacing: Padding ─────────────────────────────────────
   u-p{t,b,l,r,x,y}-{n} — directional padding utilities. */

.u-p-0  { padding: var(--spacing-0); }

.u-p-px { padding: var(--spacing-px); }

.u-p-0-5 { padding: var(--spacing-0-5); }

.u-p-1  { padding: var(--spacing-1); }

.u-p-1-5 { padding: var(--spacing-1-5); }

.u-p-2  { padding: var(--spacing-2); }

.u-p-2-5 { padding: var(--spacing-2-5); }

.u-p-3  { padding: var(--spacing-3); }

.u-p-3-5 { padding: var(--spacing-3-5); }

.u-p-4  { padding: var(--spacing-4); }

.u-p-5  { padding: var(--spacing-5); }

.u-p-6  { padding: var(--spacing-6); }

.u-p-7  { padding: var(--spacing-7); }

.u-p-8  { padding: var(--spacing-8); }

.u-p-10 { padding: var(--spacing-10); }

.u-p-12 { padding: var(--spacing-12); }

.u-p-16 { padding: var(--spacing-16); }

.u-pt-0  { padding-top: var(--spacing-0); }

.u-pt-1  { padding-top: var(--spacing-1); }

.u-pt-2  { padding-top: var(--spacing-2); }

.u-pt-3  { padding-top: var(--spacing-3); }

.u-pt-4  { padding-top: var(--spacing-4); }

.u-pt-6  { padding-top: var(--spacing-6); }

.u-pt-8  { padding-top: var(--spacing-8); }

.u-pb-0  { padding-bottom: var(--spacing-0); }

.u-pb-1  { padding-bottom: var(--spacing-1); }

.u-pb-2  { padding-bottom: var(--spacing-2); }

.u-pb-3  { padding-bottom: var(--spacing-3); }

.u-pb-4  { padding-bottom: var(--spacing-4); }

.u-pb-6  { padding-bottom: var(--spacing-6); }

.u-pb-8  { padding-bottom: var(--spacing-8); }

.u-pl-0  { padding-left: var(--spacing-0); }

.u-pl-1  { padding-left: var(--spacing-1); }

.u-pl-2  { padding-left: var(--spacing-2); }

.u-pl-3  { padding-left: var(--spacing-3); }

.u-pl-4  { padding-left: var(--spacing-4); }

.u-pl-6  { padding-left: var(--spacing-6); }

.u-pl-8  { padding-left: var(--spacing-8); }

.u-pr-0  { padding-right: var(--spacing-0); }

.u-pr-1  { padding-right: var(--spacing-1); }

.u-pr-2  { padding-right: var(--spacing-2); }

.u-pr-3  { padding-right: var(--spacing-3); }

.u-pr-4  { padding-right: var(--spacing-4); }

.u-pr-6  { padding-right: var(--spacing-6); }

.u-pr-8  { padding-right: var(--spacing-8); }

.u-px-0  { padding-left: var(--spacing-0); padding-right: var(--spacing-0); }

.u-px-1  { padding-left: var(--spacing-1); padding-right: var(--spacing-1); }

.u-px-1-5 { padding-left: var(--spacing-1-5); padding-right: var(--spacing-1-5); }

.u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }

.u-px-2-5 { padding-left: var(--spacing-2-5); padding-right: var(--spacing-2-5); }

.u-px-3  { padding-left: var(--spacing-3); padding-right: var(--spacing-3); }

.u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }

.u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }

.u-px-8  { padding-left: var(--spacing-8); padding-right: var(--spacing-8); }

.u-py-0  { padding-top: var(--spacing-0); padding-bottom: var(--spacing-0); }

.u-py-1  { padding-top: var(--spacing-1); padding-bottom: var(--spacing-1); }

.u-py-1-5 { padding-top: var(--spacing-1-5); padding-bottom: var(--spacing-1-5); }

.u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }

.u-py-2-5 { padding-top: var(--spacing-2-5); padding-bottom: var(--spacing-2-5); }

.u-py-3  { padding-top: var(--spacing-3); padding-bottom: var(--spacing-3); }

.u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }

.u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }

.u-py-8  { padding-top: var(--spacing-8); padding-bottom: var(--spacing-8); }

/* ── Typography: Font Size ────────────────────────────────
   u-text-{size} — maps to --text-* tokens.
   u-text-{size}-bold — combines size + bold weight. */

.u-text-xs   { font-size: var(--text-xs); }

.u-text-sm   { font-size: var(--text-sm); }

.u-text-base { font-size: var(--text-base); }

.u-text-lg   { font-size: var(--text-lg); }

.u-text-xl   { font-size: var(--text-xl); }

.u-text-2xl  { font-size: var(--text-2xl); }

.u-text-3xl  { font-size: var(--text-3xl); }

.u-text-4xl  { font-size: var(--text-4xl); }

.u-text-xs-bold   { font-size: var(--text-xs); font-weight: var(--font-weight-bold); }

.u-text-sm-bold   { font-size: var(--text-sm); font-weight: var(--font-weight-bold); }

.u-text-base-bold { font-size: var(--text-base); font-weight: var(--font-weight-bold); }

.u-text-lg-bold   { font-size: var(--text-lg); font-weight: var(--font-weight-bold); }

.u-text-xl-bold   { font-size: var(--text-xl); font-weight: var(--font-weight-bold); }

/* ── Typography: Font Weight ────────────────────────────── */

.u-font-normal   { font-weight: var(--font-weight-normal); }

.u-font-medium   { font-weight: var(--font-weight-medium); }

.u-font-semibold { font-weight: var(--font-weight-semibold); }

.u-font-bold     { font-weight: var(--font-weight-bold); }

/* ── Typography: Line Height ────────────────────────────── */

.u-leading-none    { line-height: var(--leading-none); }

.u-leading-tight   { line-height: var(--leading-tight); }

.u-leading-snug    { line-height: var(--leading-snug); }

.u-leading-normal  { line-height: var(--leading-normal); }

.u-leading-relaxed { line-height: var(--leading-relaxed); }

.u-leading-loose   { line-height: var(--leading-loose); }

/* ── Typography: Alignment ──────────────────────────────── */

.u-text-left    { text-align: left; }

.u-text-center  { text-align: center; }

.u-text-right   { text-align: right; }

/* ── Color: Text ──────────────────────────────────────────
   Semantic token-driven — swaps automatically with dark mode / accent. */

.u-text-primary    { color: var(--text-primary); }

.u-text-secondary  { color: var(--text-secondary); }

.u-text-muted      { color: var(--text-muted); }

.u-text-placeholder { color: var(--text-placeholder); }

.u-text-on-accent  { color: var(--text-on-accent); }

.u-text-accent     { color: var(--accent-primary); }

/* ── Color: Background ────────────────────────────────────
   Semantic token-driven — swaps automatically with dark mode / accent. */

.u-bg-primary     { background-color: var(--bg-primary); }

.u-bg-accent      { background-color: var(--accent-primary); }

.u-bg-accent-light { background-color: var(--accent-primary-light); }

.u-bg-glass       { background-color: var(--glass-bg); }

.u-bg-transparent { background-color: transparent; }

/* ── Flexbox Layout ─────────────────────────────────────── */

.u-flex          { display: flex; }

.u-inline-flex   { display: inline-flex; }

.u-flex-row      { flex-direction: row; }

.u-flex-col      { flex-direction: column; }

.u-flex-wrap     { flex-wrap: wrap; }

.u-flex-nowrap   { flex-wrap: nowrap; }

.u-justify-start    { justify-content: flex-start; }

.u-justify-center   { justify-content: center; }

.u-justify-between  { justify-content: space-between; }

.u-justify-end      { justify-content: flex-end; }

.u-items-start      { align-items: flex-start; }

.u-items-center     { align-items: center; }

.u-items-end        { align-items: flex-end; }

.u-items-stretch    { align-items: stretch; }

.u-items-baseline   { align-items: baseline; }

.u-self-start       { align-self: flex-start; }

.u-self-center      { align-self: center; }

.u-self-end         { align-self: flex-end; }

.u-flex-1        { flex: 1 1 0%; }

.u-flex-auto     { flex: 1 1 auto; }

.u-flex-none     { flex: none; }

.u-flex-shrink-0 { flex-shrink: 0; }

.u-flex-grow     { flex-grow: 1; }

.u-order-first   { order: -9999; }

.u-order-last    { order: 9999; }

.u-order-none    { order: 0; }

/* ── Grid Layout ────────────────────────────────────────── */

.u-grid          { display: grid; }

.u-grid-cols-1   { grid-template-columns: repeat(1, minmax(0, 1fr)); }

.u-grid-cols-2   { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.u-grid-cols-3   { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.u-grid-cols-4   { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ── Gap ────────────────────────────────────────────────── */

.u-gap-0   { gap: var(--spacing-0); }

.u-gap-0-5 { gap: var(--spacing-0-5); }

.u-gap-1   { gap: var(--spacing-1); }

.u-gap-1-5 { gap: var(--spacing-1-5); }

.u-gap-2   { gap: var(--spacing-2); }

.u-gap-2-5 { gap: var(--spacing-2-5); }

.u-gap-3   { gap: var(--spacing-3); }

.u-gap-4   { gap: var(--spacing-4); }

.u-gap-5   { gap: var(--spacing-5); }

.u-gap-6   { gap: var(--spacing-6); }

.u-gap-8   { gap: var(--spacing-8); }

/* ── Shadows: Zero-Offset Glow ────────────────────────────
   All shadows use 0 0 Npx format (zero X/Y offset, pure glow).
   HubRaiz glass-morphism convention: no directional shadows. */

.u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }

.u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }

.u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }

.u-shadow-none { box-shadow: none; }

/* ── Border Radius ──────────────────────────────────────── */

.u-rounded-none { border-radius: var(--radius-none); }

.u-rounded-sm   { border-radius: var(--radius-sm); }

.u-rounded-md   { border-radius: var(--radius-md); }

.u-rounded-lg   { border-radius: var(--radius-lg); }

.u-rounded-xl   { border-radius: var(--radius-xl); }

.u-rounded-2xl  { border-radius: var(--radius-2xl); }

.u-rounded-full { border-radius: var(--radius-full); }

/* ── Display ────────────────────────────────────────────── */

.u-block        { display: block; }

.u-inline-block { display: inline-block; }

.u-inline       { display: inline; }

.u-hidden       { display: none; }

/* ── Position ───────────────────────────────────────────── */

.u-relative { position: relative; }

.u-absolute { position: absolute; }

.u-fixed    { position: fixed; }

.u-sticky   { position: sticky; }

/* ── Overflow ───────────────────────────────────────────── */

.u-overflow-auto    { overflow: auto; }

.u-overflow-hidden  { overflow: hidden; }

.u-overflow-visible { overflow: visible; }

.u-overflow-scroll  { overflow: scroll; }

/* ── Width & Height ─────────────────────────────────────── */

.u-w-full   { width: 100%; }

.u-w-auto   { width: auto; }

.u-w-screen { width: 100vw; }

.u-h-full   { height: 100%; }

.u-h-auto   { height: auto; }

.u-h-screen { height: 100vh; }

/* ── Responsive Utilities ─────────────────────────────────
   sm: ≥640px | md: ≥768px | lg: ≥1024px
   Prefix pattern: {bp}-u-{class} e.g. md-u-flex, lg-u-text-lg */

@media (min-width: 640px) {
  .sm-u-mt-0  { margin-top: var(--spacing-0); }
  .sm-u-mt-2  { margin-top: var(--spacing-2); }
  .sm-u-mt-4  { margin-top: var(--spacing-4); }
  .sm-u-mt-6  { margin-top: var(--spacing-6); }
  .sm-u-mt-8  { margin-top: var(--spacing-8); }
  .sm-u-mb-0  { margin-bottom: var(--spacing-0); }
  .sm-u-mb-2  { margin-bottom: var(--spacing-2); }
  .sm-u-mb-4  { margin-bottom: var(--spacing-4); }
  .sm-u-mb-6  { margin-bottom: var(--spacing-6); }
  .sm-u-mb-8  { margin-bottom: var(--spacing-8); }
  .sm-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .sm-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .sm-u-mx-auto { margin-left: auto; margin-right: auto; }
  .sm-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .sm-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .sm-u-p-2   { padding: var(--spacing-2); }
  .sm-u-p-4   { padding: var(--spacing-4); }
  .sm-u-p-6   { padding: var(--spacing-6); }
  .sm-u-p-8   { padding: var(--spacing-8); }
  .sm-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .sm-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .sm-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .sm-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .sm-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .sm-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .sm-u-text-sm   { font-size: var(--text-sm); }
  .sm-u-text-base { font-size: var(--text-base); }
  .sm-u-text-lg   { font-size: var(--text-lg); }
  .sm-u-text-xl   { font-size: var(--text-xl); }
  .sm-u-text-2xl  { font-size: var(--text-2xl); }
  .sm-u-text-3xl  { font-size: var(--text-3xl); }
  .sm-u-flex       { display: flex; }
  .sm-u-flex-row   { flex-direction: row; }
  .sm-u-flex-col   { flex-direction: column; }
  .sm-u-justify-center  { justify-content: center; }
  .sm-u-justify-between { justify-content: space-between; }
  .sm-u-items-center    { align-items: center; }
  .sm-u-gap-2  { gap: var(--spacing-2); }
  .sm-u-gap-4  { gap: var(--spacing-4); }
  .sm-u-gap-6  { gap: var(--spacing-6); }
  .sm-u-hidden { display: none; }
  .sm-u-block  { display: block; }
  .sm-u-flex-1 { flex: 1 1 0%; }
  .sm-u-w-full { width: 100%; }
  .sm-u-w-auto { width: auto; }
  .sm-u-grid        { display: grid; }
  .sm-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sm-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sm-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .sm-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .sm-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .sm-u-shadow-none { box-shadow: none; }
  .sm-u-rounded-sm { border-radius: var(--radius-sm); }
  .sm-u-rounded-md { border-radius: var(--radius-md); }
  .sm-u-rounded-lg { border-radius: var(--radius-lg); }
  .sm-u-rounded-full { border-radius: var(--radius-full); }
  .sm-u-bg-primary     { background-color: var(--bg-primary); }
  .sm-u-bg-accent      { background-color: var(--accent-primary); }
  .sm-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .sm-u-text-primary   { color: var(--text-primary); }
  .sm-u-text-secondary { color: var(--text-secondary); }
  .sm-u-text-muted     { color: var(--text-muted); }
  .sm-u-text-accent    { color: var(--accent-primary); }
}

@media (min-width: 768px) {
  .md-u-mt-0  { margin-top: var(--spacing-0); }
  .md-u-mt-2  { margin-top: var(--spacing-2); }
  .md-u-mt-4  { margin-top: var(--spacing-4); }
  .md-u-mt-6  { margin-top: var(--spacing-6); }
  .md-u-mt-8  { margin-top: var(--spacing-8); }
  .md-u-mb-0  { margin-bottom: var(--spacing-0); }
  .md-u-mb-2  { margin-bottom: var(--spacing-2); }
  .md-u-mb-4  { margin-bottom: var(--spacing-4); }
  .md-u-mb-6  { margin-bottom: var(--spacing-6); }
  .md-u-mb-8  { margin-bottom: var(--spacing-8); }
  .md-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .md-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .md-u-mx-auto { margin-left: auto; margin-right: auto; }
  .md-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .md-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .md-u-p-2   { padding: var(--spacing-2); }
  .md-u-p-4   { padding: var(--spacing-4); }
  .md-u-p-6   { padding: var(--spacing-6); }
  .md-u-p-8   { padding: var(--spacing-8); }
  .md-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .md-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .md-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .md-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .md-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .md-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .md-u-text-sm   { font-size: var(--text-sm); }
  .md-u-text-base { font-size: var(--text-base); }
  .md-u-text-lg   { font-size: var(--text-lg); }
  .md-u-text-xl   { font-size: var(--text-xl); }
  .md-u-text-2xl  { font-size: var(--text-2xl); }
  .md-u-text-3xl  { font-size: var(--text-3xl); }
  .md-u-flex       { display: flex; }
  .md-u-flex-row   { flex-direction: row; }
  .md-u-flex-col   { flex-direction: column; }
  .md-u-justify-center  { justify-content: center; }
  .md-u-justify-between { justify-content: space-between; }
  .md-u-items-center    { align-items: center; }
  .md-u-gap-2  { gap: var(--spacing-2); }
  .md-u-gap-4  { gap: var(--spacing-4); }
  .md-u-gap-6  { gap: var(--spacing-6); }
  .md-u-hidden { display: none; }
  .md-u-block  { display: block; }
  .md-u-flex-1 { flex: 1 1 0%; }
  .md-u-w-full { width: 100%; }
  .md-u-w-auto { width: auto; }
  .md-u-grid        { display: grid; }
  .md-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .md-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .md-u-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .md-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .md-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .md-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .md-u-shadow-none { box-shadow: none; }
  .md-u-rounded-sm { border-radius: var(--radius-sm); }
  .md-u-rounded-md { border-radius: var(--radius-md); }
  .md-u-rounded-lg { border-radius: var(--radius-lg); }
  .md-u-rounded-full { border-radius: var(--radius-full); }
  .md-u-bg-primary     { background-color: var(--bg-primary); }
  .md-u-bg-accent      { background-color: var(--accent-primary); }
  .md-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .md-u-text-primary   { color: var(--text-primary); }
  .md-u-text-secondary { color: var(--text-secondary); }
  .md-u-text-muted     { color: var(--text-muted); }
  .md-u-text-accent    { color: var(--accent-primary); }
}

@media (min-width: 1024px) {
  .lg-u-mt-0  { margin-top: var(--spacing-0); }
  .lg-u-mt-2  { margin-top: var(--spacing-2); }
  .lg-u-mt-4  { margin-top: var(--spacing-4); }
  .lg-u-mt-6  { margin-top: var(--spacing-6); }
  .lg-u-mt-8  { margin-top: var(--spacing-8); }
  .lg-u-mb-0  { margin-bottom: var(--spacing-0); }
  .lg-u-mb-2  { margin-bottom: var(--spacing-2); }
  .lg-u-mb-4  { margin-bottom: var(--spacing-4); }
  .lg-u-mb-6  { margin-bottom: var(--spacing-6); }
  .lg-u-mb-8  { margin-bottom: var(--spacing-8); }
  .lg-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .lg-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .lg-u-mx-auto { margin-left: auto; margin-right: auto; }
  .lg-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .lg-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .lg-u-p-2   { padding: var(--spacing-2); }
  .lg-u-p-4   { padding: var(--spacing-4); }
  .lg-u-p-6   { padding: var(--spacing-6); }
  .lg-u-p-8   { padding: var(--spacing-8); }
  .lg-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .lg-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .lg-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .lg-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .lg-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .lg-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .lg-u-text-sm   { font-size: var(--text-sm); }
  .lg-u-text-base { font-size: var(--text-base); }
  .lg-u-text-lg   { font-size: var(--text-lg); }
  .lg-u-text-xl   { font-size: var(--text-xl); }
  .lg-u-text-2xl  { font-size: var(--text-2xl); }
  .lg-u-text-3xl  { font-size: var(--text-3xl); }
  .lg-u-flex       { display: flex; }
  .lg-u-flex-row   { flex-direction: row; }
  .lg-u-flex-col   { flex-direction: column; }
  .lg-u-justify-center  { justify-content: center; }
  .lg-u-justify-between { justify-content: space-between; }
  .lg-u-items-center    { align-items: center; }
  .lg-u-gap-2  { gap: var(--spacing-2); }
  .lg-u-gap-4  { gap: var(--spacing-4); }
  .lg-u-gap-6  { gap: var(--spacing-6); }
  .lg-u-hidden { display: none; }
  .lg-u-block  { display: block; }
  .lg-u-flex-1 { flex: 1 1 0%; }
  .lg-u-w-full { width: 100%; }
  .lg-u-w-auto { width: auto; }
  .lg-u-grid        { display: grid; }
  .lg-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lg-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lg-u-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .lg-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .lg-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .lg-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .lg-u-shadow-none { box-shadow: none; }
  .lg-u-rounded-sm { border-radius: var(--radius-sm); }
  .lg-u-rounded-md { border-radius: var(--radius-md); }
  .lg-u-rounded-lg { border-radius: var(--radius-lg); }
  .lg-u-rounded-full { border-radius: var(--radius-full); }
  .lg-u-bg-primary     { background-color: var(--bg-primary); }
  .lg-u-bg-accent      { background-color: var(--accent-primary); }
  .lg-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .lg-u-text-primary   { color: var(--text-primary); }
  .lg-u-text-secondary { color: var(--text-secondary); }
  .lg-u-text-muted     { color: var(--text-muted); }
  .lg-u-text-accent    { color: var(--accent-primary); }
}

/* 4. Glass morphism */

/* ==========================================================================
   4. GLASS MORPHISM
   Glass cards, panels, marketplace buttons (btn-ml, btn-shopee)
   ========================================================================== */

/* --- Glass Card --- */

.glass-card {
  position: relative;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 1.25rem;
  box-shadow:
    0 0 8px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset);
  transition: box-shadow var(--duration-slow) ease, background var(--duration-slow) ease, border-color var(--duration-slow) ease;
  contain: layout;
}

.glass-card:hover {
  background: var(--glass-hover-bg);
  box-shadow:
    0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-hover);
  border-color: var(--glass-hover-border);
}

/* --- Glass Panel --- */

.glass-panel {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 2rem;
  box-shadow:
    0 0 24px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset);
  transition: box-shadow var(--duration-slow) ease, border-color var(--duration-slow) ease;
}

.glass-panel:hover {
  box-shadow:
    0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-hover);
  border-color: var(--glass-hover-border);
}

/* Dark mode: tone down the inset top-highlight for both color themes */

.dark .glass-card {
  box-shadow: 0 0 8px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset-dark);
}

.dark .glass-card:hover {
  box-shadow: 0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-dark-hover);
}

.dark .glass-panel {
  box-shadow: 0 0 24px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset-dark);
}

.dark .glass-panel:hover {
  box-shadow: 0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-dark-hover);
}

/* --- Shared Marketplace Button Styles --- */

.btn-ml,
.btn-shopee {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0.875rem 1.25rem;
  border-radius: 0.875rem;
  font-weight: 700;
  font-size: 0.875rem;
  text-decoration: none;
  min-height: 48px;
  transition: background var(--duration-normal) ease, box-shadow var(--duration-normal) ease, transform var(--duration-normal) ease;
  cursor: pointer;
  border: none;
}

.btn-ml:hover,
.btn-shopee:hover {
  transform: translateY(-2px);
}

.btn-ml:active,
.btn-shopee:active {
  transform: scale(0.98) translateY(0);
}

/* --- Mercado Livre Button --- */

.btn-ml {
  background: linear-gradient(135deg, var(--ml-yellow) 0%, var(--ml-yellow-hover) 100%);
  color: var(--ml-navy);
  box-shadow: 0 0 16px var(--ml-shadow), inset 0 1px 0 var(--ml-inset);
}

.btn-ml:hover {
  background: linear-gradient(135deg, var(--ml-yellow-hover) 0%, color-mix(in srgb, var(--ml-yellow-hover) 85%, black) 100%);
  box-shadow: 0 0 24px var(--ml-shadow-hover), inset 0 1px 0 var(--ml-inset-hover);
}

/* --- Shopee Button --- */

.btn-shopee {
  background: linear-gradient(135deg, var(--shopee-orange) 0%, var(--shopee-orange-hover) 100%);
  /* Shopee brand white text — not --text-on-accent (3rd-party brand color).
     White on #EE4D2D = 3.66:1 — passes large-text (3:1). Documented exception. */
  color: #FFFFFF;
  box-shadow: 0 0 16px var(--shopee-shadow), inset 0 1px 0 var(--btn-inset);
}

.btn-shopee:hover {
  background: linear-gradient(135deg, var(--shopee-orange-hover) 0%, color-mix(in srgb, var(--shopee-orange-hover) 85%, black) 100%);
  box-shadow: 0 0 24px var(--shopee-shadow-hover), inset 0 1px 0 var(--btn-inset-hover);
}

/* 5. Hero section */

/* ==========================================================================
   5. HERO
   Hero section layout, logo, title, tagline, CTAs, scroll indicator
   ========================================================================== */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.hero-dot-grid {
  position: absolute;
  inset: 0;
  opacity: 0.025;
  background-image: radial-gradient(circle at 1px 1px, var(--neutral-900) 1px, transparent 0);
  background-size: 28px 28px;
}

.dark .hero-dot-grid { opacity: 0.02; }

.hero-content {
  position: relative;
  z-index: 10;
  width: 100%;
  max-width: 56rem;
  margin: 0 auto;
  padding: 5rem 1.25rem;
}

@media (min-width: 640px) { .hero-content { padding: 7rem 2rem; } }

.hero-glass {
  padding: 2rem;
  text-align: center;
}

@media (min-width: 640px) { .hero-glass { padding: 3rem; } }

@media (min-width: 768px) { .hero-glass { padding: 4rem; } }

.hero-logo-wrapper {
  display: flex;
  justify-content: center;
  margin-bottom: 1.5rem;
}

.hero-logo-container {
  width: 8rem;
  height: 8rem;
  border-radius: 1.5rem;
  background: var(--scheme-hero-logo-bg);
  display: flex;
  align-items: center;
  justify-content: center;
}

.dark .hero-logo-container { background: var(--scheme-hero-logo-bg-dark); }

@media (min-width: 640px) {
  .hero-logo-container { width: 10rem; height: 10rem; border-radius: 2rem; }
}

.hero-logo-img {
  width: 78%;
  height: 78%;
  object-fit: contain;
  filter: drop-shadow(0 0 8px var(--logo-drop-shadow));
}

@media (min-width: 640px) {
  .hero-logo-img { width: 82%; height: 82%; }
}

.hero-title {
  font-size: clamp(3rem, 8vw, 5rem);
  font-weight: bold;
  letter-spacing: -0.025em;
  margin-bottom: 0.75rem;
}

.hero-title-hub { color: var(--neutral-900); }

.dark .hero-title-hub { color: var(--surface-100); }

.hero-title-raiz { color: var(--accent-primary); }

.hero-tagline {
  font-size: clamp(1.1rem, 3vw, 1.5rem);
  color: var(--scheme-hero-tagline);
  font-style: italic;
  margin-bottom: 1.25rem;
}

.hero-description {
  max-width: 36rem;
  margin: 0 auto 2rem;
  line-height: 1.625;
  color: var(--neutral-600);
  font-size: 1rem;
}

.dark .hero-description { color: var(--surface-300); }

@media (min-width: 640px) { .hero-description { font-size: 1.125rem; } }

.hero-ctas {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  justify-content: center;
  align-items: center;
}

@media (min-width: 640px) {
  .hero-ctas { flex-direction: row; gap: 1rem; }
}

.hero-ctas .btn-ml,
.hero-ctas .btn-shopee {
  width: auto;
  padding: 1rem 1.75rem;
  font-size: 1rem;
  border-radius: 0.75rem;
}

.hero-trust-hint {
  margin-top: 1.75rem;
  color: var(--scheme-hero-trust);
  font-size: 0.75rem;
  font-weight: 500;
}

@media (min-width: 640px) { .hero-trust-hint { font-size: 0.875rem; } }

.dark .hero-trust-hint { color: var(--surface-400); }

.hero-scroll-indicator {
  position: absolute;
  bottom: 1.5rem;
  left: 50%;
  margin-left: -1.25rem;
  width: 2.5rem;
  z-index: 10;
}

@media (min-width: 640px) { .hero-scroll-indicator { bottom: 2rem; } }

.hero-scroll-btn {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--ui-surface-bg);
  border: 1px solid var(--ui-surface-border);
  color: var(--scheme-hero-scroll-color);
  transition: background var(--duration-slow) ease, color var(--duration-slow) ease;
  cursor: pointer;
}

.dark .hero-scroll-btn {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
  color: var(--accent-primary);
}

.hero-scroll-btn:hover {
  color: var(--scheme-focus-ring);
  background: var(--ui-surface-hover-bg);
}

.dark .hero-scroll-btn:hover {
  color: var(--accent-primary-hover);
  background: var(--ui-surface-hover-bg-dark);
}

/* 6. Catalog (filter bar, pills, search, grid/list layout) */

/* ==========================================================================
   6. CATALOG
   Catalog section header, sticky bar, filter bar, search inputs,
   filter pills, view toggle, desktop filters, results bar, mobile summary
   ========================================================================== */

.catalog {
  padding: 3rem 1rem 4rem;
  max-width: 1600px;
  margin: 0 auto;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .catalog { padding: 5rem 1.5rem; }
}

@media (min-width: 1024px) {
  .catalog { padding-left: 2rem; padding-right: 2rem; }
}

.catalog-header {
  text-align: center;
  margin-bottom: 1.5rem;
}

@media (min-width: 640px) { .catalog-header { margin-bottom: 2.5rem; } }

.catalog-title {
  font-weight: bold;
  color: var(--neutral-900);
  margin-bottom: 0.75rem;
  font-size: clamp(1.75rem, 4vw, 2.75rem);
}

.dark .catalog-title { color: var(--surface-100); }

@media (min-width: 640px) { .catalog-title { margin-bottom: 1rem; } }

.catalog-subtitle {
  color: var(--neutral-600);
  font-size: 1rem;
  max-width: 42rem;
  margin: 0 auto;
}

.dark .catalog-subtitle { color: var(--surface-300); }

@media (min-width: 640px) { .catalog-subtitle { font-size: 1.125rem; } }

/* --- Sticky Bar --- */

.sticky-bar {
  position: sticky;
  top: 0;
  z-index: 30;
  margin-left: -1rem;
  margin-right: -1rem;
  padding: 0.625rem 1rem;
}

@media (min-width: 640px) {
  .sticky-bar { margin-left: -1.5rem; margin-right: -1.5rem; }
}

.sticky-bar-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-6px);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear var(--duration-slow);
}

.sticky-bar-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear 0s;
}

.sticky-bar-hidden .filter-bar {
  opacity: 0;
  transition: opacity var(--duration-slow) ease;
}

.sticky-bar-visible .filter-bar {
  opacity: 1;
  transition: opacity var(--duration-slow) ease;
}

.sticky-bar-inner {
  max-width: 48rem;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 0.75rem;
  border-radius: 1rem;
}

@media (min-width: 640px) {
  .sticky-bar-inner { gap: 0.75rem; padding: 0.75rem; }
}

/* --- Filter Bar --- */

.filter-bar {
  background: var(--filter-bar-bg);
  border: 1px solid var(--filter-bar-border);
  box-shadow: 0 0 24px var(--chrome-shadow-sm);
}

.filter-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  border-radius: 9999px;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-size: 0.625rem;
  font-weight: 700;
  padding: 0 5px;
}

/* --- Filter Button --- */

.filter-btn {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary-light);
  border: 1px solid var(--accent-primary-border);
  color: var(--accent-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  position: relative;
  cursor: pointer;
  transition: background var(--duration-normal) ease;
}

.filter-btn:hover { background: var(--accent-primary-border); }

@media (min-width: 640px) {
  .filter-btn { width: 2.75rem; height: 2.75rem; }
}

.filter-btn-badge {
  position: absolute;
  top: -0.375rem;
  right: -0.375rem;
  min-width: 18px;
  height: 18px;
  font-size: 0.5625rem;
}

/* --- Search Field (shared component) ---
   BEM-structured search input used by both sticky bar and desktop bar.
   Variant modifiers: .search-field--sticky (compact) / .search-field--desktop (full-size)
   Eliminates the previous .sticky-search-* / .desktop-search-* duplication. */

.search-field {
  position: relative;
  flex: 1;
  min-width: 0;
}

.search-field__icon {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: var(--neutral-400);
  pointer-events: none;
}

.dark .search-field__icon {
  color: var(--surface-400);
}

.search-field__input {
  width: 100%;
  border-radius: 0.75rem;
  background: var(--search-bg);
  border: 1.5px solid var(--search-border);
  color: var(--text-primary);
  transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
}

.search-field__input::placeholder { color: var(--text-placeholder); }

.search-field__input:focus {
  outline: none;
  border-color: var(--search-focus-border);
  background: var(--search-focus-bg);
  box-shadow: 0 0 0 2px var(--scheme-search-focus-ring-strong);
}

.search-field__clear {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--neutral-300);
  cursor: pointer;
  transition: color var(--duration-normal) ease;
}

/* ── Sticky variant (compact, mobile-first) ── */

.search-field--sticky .search-field__icon {
  left: 0.75rem;
  width: 1rem;
  height: 1rem;
}

.search-field--sticky .search-field__input {
  padding: 0.5rem 0.75rem 0.5rem 2.25rem;
  font-size: 0.875rem;
}

.search-field--sticky .search-field__input:focus {
  box-shadow: 0 0 0 2px var(--scheme-search-focus-ring-strong);
}

.dark .search-field--sticky .search-field__input:focus {
  box-shadow: 0 0 0 3px var(--scheme-search-focus-ring-strong);
}

@media (min-width: 640px) {
  .search-field--sticky .search-field__input { padding: 0.625rem 0.75rem 0.625rem 2.25rem; }
}

.search-field--sticky .search-field__clear {
  right: 0.625rem;
  padding: 0.125rem;
}

.search-field--sticky .search-field__clear:hover { color: var(--neutral-500); }

.dark .search-field--sticky .search-field__clear:hover { color: var(--surface-300); }

/* ── Desktop variant (full-size, larger icons & padding) ── */

.search-field--desktop .search-field__icon {
  left: 0.875rem;
  width: 1.25rem;
  height: 1.25rem;
}

.search-field--desktop .search-field__input {
  padding: 0.625rem 1rem 0.625rem 2.75rem;
  font-size: 0.9375rem;
  border-radius: 0.875rem;
}

.search-field--desktop .search-field__input:focus {
  box-shadow: 0 0 0 3px var(--scheme-search-focus-ring);
}

.search-field--desktop .search-field__clear {
  right: 0.75rem;
  padding: 0.25rem;
}

.search-field--desktop .search-field__clear:hover { color: var(--neutral-600); }

.dark .search-field--desktop .search-field__clear:hover { color: var(--surface-200); }

/* --- Mobile Filters Summary --- */

.mobile-filters-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 0.375rem;
  font-size: 0.75rem;
  color: var(--neutral-500);
}

.mobile-filters-summary-dot {
  color: var(--neutral-300);
}

.dark .mobile-filters-summary { color: var(--surface-400); }

.mobile-filters-summary button {
  color: var(--accent-primary);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: inherit;
}

@media (min-width: 640px) { .mobile-filters-summary { display: none; } }

/* --- Desktop Inline Filters --- */

.desktop-filters {
  display: none;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) { .desktop-filters { display: block; } }

.desktop-filters > * + * { margin-top: 1.25rem; }

.filter-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.filter-row-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--neutral-400);
  margin-right: 0.125rem;
}

.dark .filter-row-label { color: var(--surface-400); }

/* --- Desktop Search Bar (search field + controls) --- */

/* Matches the sticky bar's filter-bar glass morphism pattern */

.desktop-search-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  border-radius: 1rem;
}

.desktop-search-controls {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

.pill-count {
  margin-left: 0.375rem;
  opacity: 0.55;
}

/* --- Desktop Results Bar --- */

.desktop-results-bar {
  display: none;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.5rem;
}

@media (min-width: 640px) { .desktop-results-bar { display: flex; } }

.desktop-results-count {
  font-size: 0.875rem;
  color: var(--neutral-500);
}

.dark .desktop-results-count { color: var(--surface-400); }

.desktop-clear-btn {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--accent-primary);
  text-decoration: underline;
  text-underline-offset: 2px;
  background: none;
  border: none;
  cursor: pointer;
  transition: color var(--duration-normal) ease;
}

.desktop-clear-btn:hover { color: var(--accent-primary-hover); }

/* --- Filter Pills --- */

.category-pill, .brand-pill {
  padding: 0.5rem 1.125rem;
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 600;
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease, border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
  border: none;
  cursor: pointer;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
}

.category-pill--active, .brand-pill--active {
  background: var(--accent-primary);
  color: var(--text-on-accent);
  box-shadow: 0 0 16px var(--accent-primary-shadow), inset 0 1px 0 var(--btn-inset);
}

.category-pill--inactive, .brand-pill--inactive {
  background: var(--pill-inactive-bg);
  color: var(--pill-inactive-text);
  border: 1px solid var(--pill-inactive-border);
}

.category-pill--inactive:hover, .brand-pill--inactive:hover {
  background: var(--glass-hover-bg);
  border-color: var(--accent-primary-border);
}

/* Brand pills use --accent-primary-border on hover, same as category pills,
   so both follow the active theme consistently. */

/* --- View Toggle --- */

.view-toggle {
  display: flex;
  gap: 2px;
  background: var(--pill-inactive-bg);
  border-radius: 0.75rem;
  padding: 3px;
  border: 1px solid var(--pill-inactive-border);
}

.view-toggle-btn {
  padding: 0.5rem;
  border-radius: 0.625rem;
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 40px;
}

.view-toggle-btn--active {
  background: var(--accent-primary);
  color: var(--text-on-accent);
  box-shadow: 0 0 8px var(--accent-primary-shadow);
}

.view-toggle-btn--inactive {
  background: transparent;
  color: var(--text-secondary);
}

.view-toggle-btn--inactive:hover { background: var(--pill-inactive-bg); }

.dark .view-toggle-btn--inactive { color: var(--text-muted); }

/* Sticky bar view toggle — compact on mobile */

.sticky-bar .view-toggle { padding: 2px; flex-shrink: 0; }

.sticky-bar .view-toggle-btn { min-width: 34px; min-height: 34px; padding: 6px; }

.sticky-bar .view-toggle-btn svg { width: 14px; height: 14px; }

@media (min-width: 640px) {
  .sticky-bar .view-toggle-btn { min-width: 38px; min-height: 38px; padding: 8px; }
  .sticky-bar .view-toggle-btn svg { width: 16px; height: 16px; }
}

/* 7. Product card */

/* ==========================================================================
   7. PRODUCT CARD
   Product card layout, image wrap, hover overlay, content, tags, name,
   buttons, featured badge, scrolling description, fluid grids, empty state
   ========================================================================== */

/* --- Product Card --- */

.product-card {
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
  contain: layout;
}

.product-card.list-view {
  flex-direction: row;
}

.product-card-image-wrap {
  position: relative;
  overflow: hidden;
  background: var(--scheme-image-wrap-bg);
  flex-shrink: 0;
  aspect-ratio: 1;
  width: 100%;
}

.dark .product-card-image-wrap { background: var(--scheme-image-wrap-bg-dark); }

.product-card.list-view .product-card-image-wrap {
  width: 7rem;
}

@media (min-width: 640px) {
  .product-card.list-view .product-card-image-wrap { width: 10rem; }
}

@media (min-width: 768px) {
  .product-card.list-view .product-card-image-wrap { width: 14rem; }
}

.product-card-image-wrap picture {
  display: contents;
}

.product-card-image-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease-out;
  will-change: transform;
}

.product-card:hover .product-card-image-wrap img {
  transform: scale(1.05);
}

/* Image error placeholder — absolutely positioned to overlay image area */

.product-card-image-error {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  color: var(--neutral-300);
  z-index: 1;
}

.dark .product-card-image-error { color: var(--surface-400); }

.product-card-image-error-text {
  font-size: 0.75rem;
}

.product-card-hover-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--scheme-overlay-gradient), transparent, transparent);
  opacity: 0;
  transition: opacity var(--duration-slow) ease;
  pointer-events: none;
}

.dark .product-card-hover-overlay { background: linear-gradient(to top, var(--scheme-overlay-gradient-dark), transparent, transparent); }

.product-card:hover .product-card-hover-overlay { opacity: 1; }

/* --- Card Content --- */

.product-card-content {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  padding: 1.25rem;
}

@media (min-width: 640px) { .product-card-content { padding: 1.5rem; } }

.product-card.list-view .product-card-content { padding: 0.75rem; }

@media (min-width: 640px) {
  .product-card.list-view .product-card-content { padding: 1.25rem; }
}

@media (min-width: 768px) {
  .product-card.list-view .product-card-content { padding: 1.5rem; }
}

/* --- Tags --- */

.product-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.375rem;
  margin-bottom: 0.5rem;
}

.tag-brand {
  font-weight: 700;
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  padding: 0.125rem 0.625rem;
  background: var(--accent-primary-light);
  color: var(--accent-primary);
  border: 1px solid var(--accent-primary-border);
}

.product-card.list-view .tag-brand { font-size: 0.625rem; padding: 0.125rem 0.5rem; }

.tag-category {
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  padding: 0.125rem 0.5rem;
  background: var(--accent-primary-light);
  color: color-mix(in srgb, var(--accent-primary) 55%, var(--text-muted));
  border: 1px solid color-mix(in srgb, var(--accent-primary-border) 50%, var(--glass-border));
}

.product-card.list-view .tag-category { font-size: 0.625rem; }

@media (max-width: 639px) { .tag-category { display: none; } }

/* --- Product Name --- */

.product-name {
  font-weight: bold;
  color: var(--neutral-900);
  line-height: 1.375;
  margin-bottom: 0.5rem;
  font-size: 1.125rem;
}

.dark .product-name { color: var(--surface-100); }

@media (min-width: 640px) { .product-name { font-size: 1.25rem; } }

.product-card.list-view .product-name { font-size: 0.875rem; margin-bottom: 0.25rem; }

@media (min-width: 640px) {
  .product-card.list-view .product-name { font-size: 1.125rem; margin-bottom: 0.5rem; }
}

/* --- Product Buttons --- */

.product-buttons {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin-top: auto;
}

@media (min-width: 640px) {
  .product-card.list-view .product-buttons { flex-direction: row; gap: 0.75rem; }
}

.product-card.list-view .product-buttons .btn-ml,
.product-card.list-view .product-buttons .btn-shopee {
  padding: 0.5rem 0.75rem;
  font-size: 0.75rem;
  min-height: 40px;
}

@media (min-width: 640px) {
  .product-card.list-view .product-buttons .btn-ml,
  .product-card.list-view .product-buttons .btn-shopee {
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    min-height: 48px;
  }
}

/* --- Featured Badge --- */

.featured-badge {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  background: var(--scheme-badge-bg);
  color: var(--text-on-accent);
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  font-weight: 700;
  padding: 0.3125rem 0.75rem;
  border-radius: 9999px;
  box-shadow: 0 0 12px var(--accent-primary-shadow);
  letter-spacing: 0.025em;
  text-transform: uppercase;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.featured-badge svg {
  width: 0.625rem;
  height: 0.625rem;
  flex-shrink: 0;
}

/* List-view: compact badge */

.product-card.list-view .featured-badge {
  font-size: 0.6rem;
  padding: 0.25rem 0.5rem;
  top: 0.375rem;
  left: 0.375rem;
}

.featured-text-full { display: none; }

.featured-text-short { display: inline; }

@media (min-width: 640px) {
  .featured-text-full { display: inline; }
  .featured-text-short { display: none; }
}

/* --- Scrolling Description --- */

.desc-scroll-viewport {
  overflow: hidden;
  min-height: calc(var(--lines, 3) * 1.6em);
  max-height: calc(var(--lines, 3) * 1.6em);
  position: relative;
  flex-shrink: 0;
}

.desc-scroll-viewport::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1.4em;
  background: linear-gradient(to bottom, transparent, var(--desc-fade));
  pointer-events: none;
  transition: opacity var(--duration-slow) ease;
  z-index: 1;
}

.desc-scroll-viewport.fits::after { opacity: 0; }

.desc-scroll-inner {
  display: block;
  color: var(--neutral-600);
  line-height: 1.625;
}

.dark .desc-scroll-inner {
  color: var(--surface-400);
}

.product-card:hover .desc-scroll-inner.overflows {
  animation: scroll-text var(--scroll-duration, 4s) ease-in-out 0.3s 1 both;
}

.product-card:hover .desc-scroll-viewport.overflows::after { opacity: 0; }

/* --- Fluid Grids --- */

.fluid-grid-products {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

.product-list {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

@media (min-width: 640px) {
  .fluid-grid-products { gap: 1.5rem; }
  .product-list { gap: 1.5rem; }
}

.fluid-grid-trust {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.25rem;
}

.fluid-grid-trust > * {
  flex: 0 1 260px;
  min-width: 220px;
}

@media (min-width: 640px) {
  .fluid-grid-trust { gap: 1.5rem; }
}

/* --- Empty State --- */

.empty-state {
  text-align: center;
  padding: 4rem 2.5rem;
}

@media (min-width: 640px) { .empty-state { padding: 6rem 2.5rem; } }

.empty-state-icon { font-size: 3rem; margin-bottom: 1rem; }

.empty-state-title {
  font-size: 1.125rem;
  color: var(--neutral-600);
  margin-bottom: 0.5rem;
}

.dark .empty-state-title { color: var(--surface-200); }

.empty-state-text {
  font-size: 0.875rem;
  color: var(--neutral-400);
  margin-bottom: 1.5rem;
}

.dark .empty-state-text { color: var(--surface-400); }

.empty-state-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-weight: 600;
  min-height: 48px;
  cursor: pointer;
  border: none;
  transition: background var(--duration-normal) ease;
}

.empty-state-btn:hover { background: var(--accent-primary-hover); }

/* 8. Mobile filter drawer */

/* ==========================================================================
   8. DRAWER
   Filter drawer overlay, panel, header, sections, footer, drawer-open body state
   ========================================================================== */

/* --- Drawer Overlay --- */

.drawer-overlay {
  position: fixed;
  inset: 0;
  background: var(--drawer-overlay-bg);
  z-index: 59;
  animation: fade-in 0.25s var(--ease-out) both;
}

.drawer-overlay--closing { animation: overlay-out 0.2s var(--ease-out) both; }

/* --- Drawer Panel --- */

.drawer-panel {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: 85%;
  max-width: 360px;
  background: var(--drawer-panel-bg);
  border-right: 1px solid var(--drawer-border);
  box-shadow: 0 0 40px var(--chrome-shadow-md);
  z-index: 60;
  overflow-y: auto;
  animation: drawer-in 0.3s var(--ease-out) both;
  display: flex;
  flex-direction: column;
  overscroll-behavior: contain;
}

.drawer-panel--closing { animation: drawer-out 0.2s var(--ease-out) both; }

/* --- Drawer Header --- */

.drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  border-bottom: 1px solid var(--glass-border);
}

.drawer-header-left {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.drawer-header-icon-wrap {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary-light);
  border: 1px solid var(--accent-primary-border);
  color: var(--accent-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--duration-normal) ease;
}

.drawer-header-icon-wrap:hover { background: var(--accent-primary-border); }

.drawer-header-icon { width: 1.125rem; height: 1.125rem; }

.drawer-title {
  font-weight: bold;
  font-size: 1.125rem;
  color: var(--neutral-900);
}

.dark .drawer-title { color: var(--surface-100); }

.drawer-filter-badge {
  font-size: 0.6875rem;
  font-weight: 700;
  min-width: 1.25rem;
  height: 1.25rem;
  line-height: 1.25rem;
  text-align: center;
  border-radius: 0.625rem;
  padding: 0 0.375rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
}

.drawer-close-btn {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 0.5rem;
  background: var(--drawer-close-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  color: var(--neutral-400);
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease;
}

.dark .drawer-close-btn,
[data-color-scheme="alt"].dark .drawer-close-btn { background: var(--drawer-close-bg-dark); color: var(--surface-300); }

.drawer-close-btn:hover { color: var(--neutral-700); background: var(--glass-hover-bg); }

.dark .drawer-close-btn:hover,
[data-color-scheme="alt"].dark .drawer-close-btn:hover { color: var(--surface-100); background: var(--drawer-close-bg-dark-hover); }

/* --- Drawer Sections --- */

.drawer-section { padding: 1rem 1rem 0.5rem; }

.drawer-section-title {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--neutral-400);
  margin-bottom: 0.75rem;
}

.dark .drawer-section-title { color: var(--surface-400); }

.drawer-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }

/* --- Drawer Footer --- */

.drawer-footer {
  padding: 1rem;
  margin-top: auto;
  border-top: 1px solid var(--glass-border);
}

.drawer-submit-btn {
  width: 100%;
  padding: 0.75rem 1rem;
  border-radius: 0.75rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.875rem;
  box-shadow: 0 0 16px var(--accent-primary-shadow);
  min-height: 48px;
  cursor: pointer;
  border: none;
  transition: background var(--duration-normal) ease;
}

.drawer-submit-btn:hover { background: var(--accent-primary-hover); }

/* --- Drawer Open: Prevent page shift on fixed elements --- */

body.drawer-open .dark-toggle {
  right: calc(1.25rem + var(--scrollbar-compensation, 0px));
}

/* 9. Trust section */

/* ==========================================================================
   9. TRUST
   Trust section, divider, header, cards, CTA
   ========================================================================== */

.trust-section {
  padding: 4rem 1rem;
  max-width: 1600px;
  margin: 0 auto;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .trust-section { padding: 5rem 1.5rem; }
}

@media (min-width: 1024px) {
  .trust-section { padding-left: 2rem; padding-right: 2rem; }
}

.trust-divider {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) { .trust-divider { margin-bottom: 3rem; } }

.trust-divider-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--scheme-trust-divider), transparent);
}

.dark .trust-divider-line { background: linear-gradient(to right, transparent, var(--scheme-trust-divider-dark), transparent); }

.trust-divider-circle {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  background: var(--ui-surface-bg);
  border: 1px solid var(--ui-surface-border);
  display: flex;
  align-items: center;
  justify-content: center;
}

.dark .trust-divider-circle { background: var(--ui-surface-bg-dark); border-color: var(--ui-surface-border-dark); }

.trust-header {
  text-align: center;
  margin-bottom: 2.5rem;
}

.trust-title {
  font-weight: bold;
  color: var(--neutral-900);
  margin-bottom: 0.75rem;
  font-size: clamp(1.5rem, 3vw, 2rem);
}

.dark .trust-title { color: var(--surface-100); }

.trust-subtitle {
  color: var(--neutral-500);
  font-size: 0.875rem;
  max-width: 28rem;
  margin: 0 auto;
}

.dark .trust-subtitle { color: var(--surface-400); }

@media (min-width: 640px) { .trust-subtitle { font-size: 1rem; } }

/* --- Trust Card --- */

.trust-card {
  padding: 1.5rem;
  text-align: center;
}

@media (min-width: 640px) { .trust-card { padding: 1.75rem; } }

.trust-card-icon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 1rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
}

.trust-card-icon-wrap--primary {
  background: var(--accent-primary-light);
  color: var(--accent-primary);
  border-color: var(--accent-primary-border);
}

.trust-card-icon-wrap--secondary {
  background: var(--accent-secondary-light);
  color: var(--accent-secondary);
  border-color: var(--accent-secondary-border);
}

.trust-card-title {
  font-weight: bold;
  color: var(--neutral-900);
  font-size: 1rem;
  margin-bottom: 0.5rem;
}

.dark .trust-card-title { color: var(--surface-100); }

.trust-card-text {
  color: var(--neutral-500);
  font-size: 0.875rem;
  line-height: 1.625;
}

.dark .trust-card-text { color: var(--surface-400); }

/* --- Trust CTA --- */

.trust-cta {
  margin-top: 2.5rem;
  text-align: center;
}

.trust-cta-panel {
  display: inline-block;
  padding: 1rem 2rem;
}

.trust-cta-text {
  color: var(--neutral-500);
  font-size: 0.875rem;
}

.dark .trust-cta-text { color: var(--surface-400); }

.trust-cta-link {
  color: var(--accent-primary);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--duration-normal) ease;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
}

.trust-cta-link:hover { color: var(--accent-primary-hover); }

/* 10. Footer */

/* ==========================================================================
   10. FOOTER
   Site footer grid, brand column, links, security text, bottom bar,
   dark mode toggle FAB
   ========================================================================== */

.site-footer {
  background: var(--footer-bg);
  color: var(--footer-text);
  padding: 3rem 1.25rem 2rem;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .site-footer { padding-top: 3.5rem; padding-left: 1.5rem; padding-right: 1.5rem; }
}

@media (min-width: 1024px) {
  .site-footer { padding-left: 2rem; padding-right: 2rem; }
}

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

.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 2.5rem;
}

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

@media (min-width: 1024px) { .footer-grid { grid-template-columns: 1fr 1fr 1fr; } }

.footer-brand-title {
  font-size: 1.25rem;
  font-weight: bold;
  font-family: var(--font-heading);
  letter-spacing: -0.025em;
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.footer-logo-img {
  width: 1.75rem;
  height: 1.75rem;
  object-fit: contain;
}

.footer-brand-hub { color: var(--footer-text); }

.footer-brand-raiz { color: var(--scheme-footer-accent); }

.footer-brand-desc {
  color: var(--footer-muted);
  font-size: 0.875rem;
  line-height: 1.625;
}

.footer-heading {
  font-weight: bold;
  font-size: 1rem;
  margin-bottom: 0.75rem;
}

.footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
}

.footer-link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--footer-muted);
  font-size: 0.875rem;
  min-height: 44px;
  transition: color var(--duration-normal) ease;
}

.footer-link:hover { color: var(--scheme-footer-accent); }

.footer-link-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  color: var(--scheme-footer-icon);
}

.footer-security-text {
  color: var(--footer-muted);
  font-size: 0.875rem;
  line-height: 1.625;
  margin-bottom: 1rem;
}

.footer-marketplace-badges {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  color: var(--footer-muted);
}

.footer-marketplace-badge {
  font-size: 0.75rem;
  font-weight: 500;
  padding: 0.25rem 0.625rem;
  border-radius: 0.375rem;
  background: var(--scheme-marketplace-badge-bg);
  border: 1px solid var(--scheme-marketplace-badge-border);
  color: var(--scheme-footer-accent);
}

.footer-marketplace-plus {
  font-size: 0.75rem;
}

.footer-email {
  word-break: break-all;
}

.footer-bottom {
  border-top: 1px solid var(--scheme-footer-border);
  padding-top: 1.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  text-align: center;
}

.footer-copyright {
  color: var(--footer-muted);
  font-size: 0.75rem;
}

.footer-disclaimer {
  color: var(--footer-disclaimer);
  font-size: 0.75rem;
  max-width: 28rem;
}

/* 11. Dark mode toggle FAB */

/* ==========================================================================
   10. DARK MODE TOGGLE (FAB) & COLOR SCHEME PICKER
   ========================================================================== */

.dark-toggle {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 50;
  width: 3rem;
  height: 3rem;
  border-radius: 9999px;
  background: var(--toggle-bg);
  border: 1px solid var(--toggle-border);
  box-shadow: 0 0 16px var(--chrome-shadow-md);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--duration-slow) ease, border-color var(--duration-slow) ease, box-shadow var(--duration-slow) ease, transform var(--duration-slow) ease;
}

.dark-toggle:hover {
  transform: scale(1.1);
  box-shadow: 0 0 24px var(--chrome-shadow-lg);
}

.dark-toggle:active { transform: scale(0.95); }

.dark .dark-toggle,
[data-color-scheme="alt"].dark .dark-toggle {
  background: var(--toggle-bg-dark);
  border-color: var(--toggle-border-dark);
  box-shadow: 0 0 16px var(--chrome-shadow-dark);
}

.dark-toggle-icon {
  position: absolute;
  width: 1.25rem;
  height: 1.25rem;
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease;
}

/* Sun visible in dark mode, hidden in light */

.dark-toggle-icon--sun {
  color: var(--accent-primary);
  opacity: 0;
  transform: rotate(90deg) scale(0.5);
}

.dark .dark-toggle-icon--sun {
  opacity: 1;
  transform: rotate(0) scale(1);
}

/* Moon visible in light mode, hidden in dark */

.dark-toggle-icon--moon {
  color: var(--accent-primary);
  opacity: 1;
  transform: rotate(0) scale(1);
}

.dark .dark-toggle-icon--moon {
  opacity: 0;
  transform: rotate(-90deg) scale(0.5);
}

/* ── Long-press hint pulse on toggle ─────────────────────── */

.dark-toggle[data-scheme-picker-hint] {
  animation: scheme-hint-pulse 0.6s ease;
}

@keyframes scheme-hint-pulse {
  0%   { box-shadow: 0 0 0 0 var(--accent-primary-shadow); }
  70%  { box-shadow: 0 0 0 10px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* 12. Color scheme picker panel */

/* ==========================================================================
   12. COLOR SCHEME PICKER
   Popup panel for selecting color schemes, triggered by long-press
   on the dark/light mode toggle FAB
   ========================================================================== */

/* --- Dropdown Panel (shared base) ---
   Glass morphism popup with show/hide transition.
   Used by both .scheme-picker and .per-page-panel.
   Variant positioning is applied via the concrete component classes. */

.dropdown-panel {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 1.25rem;
  box-shadow: 0 0 32px var(--chrome-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px) scale(0.97);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear var(--duration-slow);
}

.dropdown-panel.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear 0s;
}

.dropdown-option {
  width: 100%;
  padding: 0.625rem 0.75rem;
  border-radius: 0.75rem;
  border: 1.5px solid transparent;
  background: transparent;
  cursor: pointer;
  font-family: inherit;
  color: var(--text-primary);
  transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease;
}

.dropdown-option:hover {
  background: var(--glass-hover-bg);
}

.dropdown-option.is-active {
  border-color: var(--accent-primary);
  background: var(--glass-hover-bg);
}

.dropdown-title {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted);
}

.scheme-picker {
  position: fixed;
  bottom: 5rem;
  right: 1.25rem;
  z-index: 49;
  width: 260px;
  padding: 1rem;
  transform: translateY(8px) scale(0.95);
}

.scheme-picker-title {
  /* .dropdown-title is inherited — extends with spacing */
  margin-bottom: 0.75rem;
}

.scheme-picker-list {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.scheme-option {
  /* .dropdown-option inherited — extends with flex layout */
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.scheme-option-swatches {
  display: flex;
  gap: 3px;
  flex-shrink: 0;
}

.scheme-swatch {
  width: 14px;
  height: 14px;
  border-radius: 9999px;
  border: 1px solid var(--scheme-swatch-border);
  flex-shrink: 0;
}

.scheme-option-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.scheme-option-name {
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.2;
}

.scheme-option-desc {
  font-size: 0.6875rem;
  color: var(--text-muted);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.scheme-option-check {
  margin-left: auto;
  width: 1rem;
  height: 1rem;
  color: var(--accent-primary);
  opacity: 0;
  flex-shrink: 0;
}

.scheme-option.is-active .scheme-option-check {
  opacity: 1;
}

/* 13. Alternate color scheme component overrides */

/* ── Alternate scheme overrides ──────────────────────────────────
   Only rules where the desired color differs from what
   var(--accent-primary) and var(--accent-secondary) resolve to
   in the alternate context. Most switching is handled by tokens.
   ─────────────────────────────────────────────────────── */

/* Card shadows */

[data-color-scheme="alt"] .filter-bar {
  box-shadow: 0 0 24px var(--card-shadow);
}

/* Selection */

[data-color-scheme="alt"] ::selection { background: var(--accent-primary-light); color: var(--text-primary); }

[data-color-scheme="alt"].dark ::selection { background: var(--selection-bg-dark); color: var(--surface-100); }

/* Circular glass elements — match the scheme-tinted glass border so they're
   consistent with glass-card / glass-panel in the alt theme */

[data-color-scheme="alt"] .hero-scroll-btn   { border-color: var(--glass-border); }

[data-color-scheme="alt"] .trust-divider-circle { border-color: var(--glass-border); }

/* dark-toggle: light-mode only — the alt.dark state already uses transparent white */

[data-color-scheme="alt"]:not(.dark) .dark-toggle { border-color: var(--glass-border); }

/* Alt dark mode: hero scroll button consistent with default dark */

[data-color-scheme="alt"].dark .hero-scroll-btn {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
  color: var(--accent-primary);
}

/* Alt dark mode: trust divider circle consistent with default dark */

[data-color-scheme="alt"].dark .trust-divider-circle {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
}

/* ── Alternate Dark: Component overrides ──────────────────── */

/* Dark toggle FAB — already combined with default dark via selector grouping */

/* Long-press hint pulse — reuses scheme-hint-pulse keyframe (identical values;
   --accent-primary-shadow resolves correctly per-theme automatically) */

[data-color-scheme="alt"].dark .dark-toggle[data-scheme-picker-hint] {
  animation: scheme-hint-pulse 0.6s ease;
}

/* 14. 404 page */

/* ==========================================================================
   11. 404 PAGE
   Not found page styles
   ========================================================================== */

.not-found {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 1.25rem;
}

.not-found-content {
  width: 100%;
  max-width: 32rem;
  margin: 0 auto;
}

.not-found-glass {
  padding: 3rem 2rem;
  text-align: center;
}

.not-found-icon {
  color: var(--accent-primary);
  margin-bottom: 1.5rem;
}

.not-found-title {
  font-family: var(--font-heading);
  font-size: clamp(4rem, 10vw, 6rem);
  font-weight: bold;
  color: var(--accent-primary);
  line-height: 1;
  margin-bottom: 0.5rem;
}

.not-found-text {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--neutral-800);
  margin-bottom: 0.75rem;
}

.dark .not-found-text { color: var(--surface-100); }

.not-found-subtext {
  color: var(--neutral-500);
  font-size: 0.9375rem;
  margin-bottom: 2rem;
}

.dark .not-found-subtext { color: var(--surface-400); }

.not-found-btn {
  display: inline-flex;
  width: auto;
  padding: 0.875rem 1.75rem;
}

/* ── Pagination ───────────────────────────────────── */

.page-hidden { display: none !important; }

/* Trigger button — matches view-toggle container style */

.per-page-wrap {
  position: relative;
}

.per-page-trigger {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  min-height: 40px;
  padding: 0 0.625rem;
  background: var(--pill-inactive-bg);
  border: 1px solid var(--pill-inactive-border);
  border-radius: 0.75rem;
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--duration-normal) ease, background var(--duration-normal) ease;
}

.per-page-trigger:hover { border-color: var(--accent-primary); }

.per-page-trigger[aria-expanded="true"] {
  border-color: var(--accent-primary);
  background: var(--glass-hover-bg);
}

.per-page-chevron {
  transition: transform 0.2s ease;
}

.per-page-trigger[aria-expanded="true"] .per-page-chevron {
  transform: rotate(180deg);
}

/* Panel — mirrors .scheme-picker */

.per-page-panel {
  /* .dropdown-panel inherited — extends with positioning */
  position: absolute;
  top: calc(100% + 0.5rem);
  right: 0;
  z-index: 55;
  width: 160px;
  padding: 0.75rem;
}

.per-page-panel-title {
  /* .dropdown-title inherited — extends with spacing */
  margin-bottom: 0.5rem;
  padding: 0 0.25rem;
}

.per-page-option {
  /* .dropdown-option inherited — extends with text sizing */
  display: block;
  padding: 0.5rem 0.75rem;
  text-align: left;
  font-size: 0.8125rem;
  font-weight: 500;
}

.pagination-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 2.5rem;
  padding-bottom: 1rem;
}

.pagination-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  border-radius: 0.625rem;
  border: 1px solid var(--neutral-200);
  background: var(--surface-50);
  color: var(--neutral-700);
  font-size: 0.875rem;
  font-family: inherit;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.pagination-btn:hover:not(:disabled) {
  background: var(--accent-primary-light);
  border-color: var(--accent-primary);
  color: var(--accent-primary);
}

.pagination-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.dark .pagination-btn {
  background: var(--neutral-800);
  color: var(--surface-300);
  border-color: var(--neutral-600);
}

.dark .pagination-btn:hover:not(:disabled) {
  background: var(--accent-primary-light);
  border-color: var(--accent-primary);
  color: var(--accent-primary);
}

.pagination-indicator {
  font-size: 0.875rem;
  color: var(--neutral-500);
  min-width: 5rem;
  text-align: center;
}

.dark .pagination-indicator { color: var(--surface-400); }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3BhcnRpYWxzL21haW4uY3NzIiwiLi4vcGFydGlhbHMvdG9rZW5zLmNzcyIsIi4uL3BhcnRpYWxzL3Jlc2V0LmNzcyIsIi4uL3BhcnRpYWxzL3V0aWxpdGllcy5jc3MiLCIuLi9wYXJ0aWFscy9nbGFzcy5jc3MiLCIuLi9wYXJ0aWFscy9oZXJvLmNzcyIsIi4uL3BhcnRpYWxzL2NhdGFsb2cuY3NzIiwiLi4vcGFydGlhbHMvY2F0YWxvZy1jYXJkLmNzcyIsIi4uL3BhcnRpYWxzL2RyYXdlci5jc3MiLCIuLi9wYXJ0aWFscy90cnVzdC5jc3MiLCIuLi9wYXJ0aWFscy9mb290ZXIuY3NzIiwiLi4vcGFydGlhbHMvZGFyay10b2dnbGUuY3NzIiwiLi4vcGFydGlhbHMvc2NoZW1lLXBpY2tlci5jc3MiLCIuLi9wYXJ0aWFscy9zY2hlbWUtb3ZlcnJpZGVzLmNzcyIsIi4uL3BhcnRpYWxzLzQwNC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0VBSStFOztBQUUvRSxtRUFBbUU7O0FDTm5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBaUMrRTs7QUFFL0U7RUFDRSxtQkFBbUI7O0VBRW5CLDZFQUE2RTtFQUM3RSxxQkFBcUI7RUFDckIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCOztFQUV0QiwwREFBMEQ7RUFDMUQsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjs7RUFFdEIsbUNBQW1DO0VBQ25DLDJDQUEyQztFQUMzQyw0Q0FBNEM7O0VBRTVDLHVCQUF1QjtFQUN2QixvQkFBb0I7RUFDcEIsMEJBQTBCO0VBQzFCLGtCQUFrQjtFQUNsQixvQ0FBb0M7RUFDcEMsMENBQTBDO0VBQzFDLHdCQUF3QjtFQUN4Qiw4QkFBOEI7RUFDOUIsd0NBQXdDO0VBQ3hD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LHdCQUF3QixFQUFFOztBQUNwQyxXQUFXLDBCQUEwQixFQUFFOztBQUN2QyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxXQUFXLDBCQUEwQixFQUFFOztBQUN2QyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxXQUFXLDBCQUEwQixFQUFFOztBQUN2QyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHdCQUF3QixFQUFFOztBQUNwQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUNyQyxVQUFVLHlCQUF5QixFQUFFOztBQUVyQyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxZQUFZLDhCQUE4QixFQUFFOztBQUM1QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxZQUFZLDhCQUE4QixFQUFFOztBQUM1QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxZQUFZLDhCQUE4QixFQUFFOztBQUM1QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxXQUFXLDRCQUE0QixFQUFFOztBQUN6QyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUUxQyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxZQUFZLGlDQUFpQyxFQUFFOztBQUMvQyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxZQUFZLGlDQUFpQyxFQUFFOztBQUMvQyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxZQUFZLGlDQUFpQyxFQUFFOztBQUMvQyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxXQUFXLCtCQUErQixFQUFFOztBQUM1QyxXQUFXLGdDQUFnQyxFQUFFOztBQUM3QyxXQUFXLGdDQUFnQyxFQUFFOztBQUM3QyxXQUFXLGdDQUFnQyxFQUFFOztBQUM3QyxXQUFXLGdDQUFnQyxFQUFFOztBQUU3QyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxXQUFXLDZCQUE2QixFQUFFOztBQUMxQyxhQUFhLGlCQUFpQixFQUFFOztBQUVoQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxXQUFXLDhCQUE4QixFQUFFOztBQUMzQyxhQUFhLGtCQUFrQixFQUFFOztBQUVqQyxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLDhCQUE4QixFQUFFOztBQUMxRSxhQUFhLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFOztBQUVwRCxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDRCQUE0QixFQUFFLCtCQUErQixFQUFFOztBQUMxRSxXQUFXLDZCQUE2QixFQUFFLGdDQUFnQyxFQUFFOztBQUM1RSxXQUFXLDZCQUE2QixFQUFFLGdDQUFnQyxFQUFFOztBQUU1RTswREFDMEQ7O0FBRTFELFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUsMEJBQTBCLEVBQUU7O0FBQ3RDLFdBQVcsMkJBQTJCLEVBQUU7O0FBQ3hDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFdBQVcsMkJBQTJCLEVBQUU7O0FBQ3hDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFdBQVcsMkJBQTJCLEVBQUU7O0FBQ3hDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFdBQVcsMkJBQTJCLEVBQUU7O0FBQ3hDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUsMEJBQTBCLEVBQUU7O0FBQ3RDLFVBQVUsMEJBQTBCLEVBQUU7O0FBQ3RDLFVBQVUsMEJBQTBCLEVBQUU7O0FBRXRDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBRTFDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBRTdDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBRTNDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBRTVDLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFlBQVksZ0NBQWdDLEVBQUUsaUNBQWlDLEVBQUU7O0FBQ2pGLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFlBQVksZ0NBQWdDLEVBQUUsaUNBQWlDLEVBQUU7O0FBQ2pGLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzVFLFdBQVcsOEJBQThCLEVBQUUsK0JBQStCLEVBQUU7O0FBRTVFLFdBQVcsNkJBQTZCLEVB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O0VBQzlCLHlCQUF5QjtFQUN6QixnQ0FBZ0M7QUFDbEM7O0FBRUE7RUFDRSx1Q0FBdUM7RUFDdkMsbUNBQW1DO0VBQ25DLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsZUFBZTtFQUNmLGtCQUFrQjtBQUNwQjs7QUFFQSw4QkFBOEIseUJBQXlCLEVBQUUiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEh1YlJhaXog4oCUIE1haW4gU3R5bGVzaGVldCBFbnRyeSBQb2ludFxuICAgSW1wb3J0cyBhbGwgQ1NTIHBhcnRpYWxzIGluIGRvY3VtZW50ZWQgYXJjaGl0ZWN0dXJlIG9yZGVyLlxuICAgUG9zdENTUyArIHBvc3Rjc3MtaW1wb3J0IGJ1bmRsZXMgdGhpcyBpbnRvIGRpc3Qvc3R5bGUuY3NzIGF0IGJ1aWxkIHRpbWUuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAxLiBEZXNpZ24gdG9rZW5zIOKAlCBNVVNUIGJlIGZpcnN0OyBhbGwgcGFydGlhbHMgZGVwZW5kIG9uIHRoZXNlICovXG5AaW1wb3J0IFwiLi90b2tlbnMuY3NzXCI7XG5cbi8qIDIuIFJlc2V0ICYgYmFzZSAqL1xuQGltcG9ydCBcIi4vcmVzZXQuY3NzXCI7XG5cbi8qIDMuIFV0aWxpdGllcyAoa2V5ZnJhbWVzLCBhbmltYXRpb25zLCBhdG9taWMgaGVscGVycykgKi9cbkBpbXBvcnQgXCIuL3V0aWxpdGllcy5jc3NcIjtcblxuLyogNC4gR2xhc3MgbW9ycGhpc20gKi9cbkBpbXBvcnQgXCIuL2dsYXNzLmNzc1wiO1xuXG4vKiA1LiBIZXJvIHNlY3Rpb24gKi9cbkBpbXBvcnQgXCIuL2hlcm8uY3NzXCI7XG5cbi8qIDYuIENhdGFsb2cgKGZpbHRlciBiYXIsIHBpbGxzLCBzZWFyY2gsIGdyaWQvbGlzdCBsYXlvdXQpICovXG5AaW1wb3J0IFwiLi9jYXRhbG9nLmNzc1wiO1xuXG4vKiA3LiBQcm9kdWN0IGNhcmQgKi9cbkBpbXBvcnQgXCIuL2NhdGFsb2ctY2FyZC5jc3NcIjtcblxuLyogOC4gTW9iaWxlIGZpbHRlciBkcmF3ZXIgKi9cbkBpbXBvcnQgXCIuL2RyYXdlci5jc3NcIjtcblxuLyogOS4gVHJ1c3Qgc2VjdGlvbiAqL1xuQGltcG9ydCBcIi4vdHJ1c3QuY3NzXCI7XG5cbi8qIDEwLiBGb290ZXIgKi9cbkBpbXBvcnQgXCIuL2Zvb3Rlci5jc3NcIjtcblxuLyogMTEuIERhcmsgbW9kZSB0b2dnbGUgRkFCICovXG5AaW1wb3J0IFwiLi9kYXJrLXRvZ2dsZS5jc3NcIjtcblxuLyogMTIuIENvbG9yIHNjaGVtZSBwaWNrZXIgcGFuZWwgKi9cbkBpbXBvcnQgXCIuL3NjaGVtZS1waWNrZXIuY3NzXCI7XG5cbi8qIDEzLiBBbHRlcm5hdGUgY29sb3Igc2NoZW1lIGNvbXBvbmVudCBvdmVycmlkZXMgKi9cbkBpbXBvcnQgXCIuL3NjaGVtZS1vdmVycmlkZXMuY3NzXCI7XG5cbi8qIDE0LiA0MDQgcGFnZSAqL1xuQGltcG9ydCBcIi4vNDA0LmNzc1wiO1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEuIERFU0lHTiBUT0tFTlNcbiAgIENTUyBjdXN0b20gcHJvcGVydGllcyBvcmdhbml6ZWQgYnkgcm9sZTpcbiAgIFxuICAg4pSM4pSAIFBhbGV0dGUgUHJpbWl0aXZlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiAgU3VyZmFjZSwgTmV1dHJhbCDigJQgYmFzZSBjb2xvciBzY2FsZXMgICAgICAgICAgICAgICAgICAgIOKUglxuICAg4pSCICBGZWVkIHNlbWFudGljIHRva2VuczsgYWxzbyBjb25zdW1lZCBkaXJlY3RseSBieSBzb21lICAgIOKUglxuICAg4pSCICBjb21wb25lbnQgb3ZlcnJpZGVzIChlc3BlY2lhbGx5IC5kYXJrIHNlbGVjdG9yIGJsb2NrcykgIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICDilIzilIAgQWNjZW50IFN5c3RlbSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiAgLS1hY2NlbnQtcHJpbWFyeSAvIC0tYWNjZW50LXNlY29uZGFyeSArIHZhcmlhbnRzICAgICAgICDilIJcbiAgIOKUgiAgU1dBUCBiZXR3ZWVuIGRlZmF1bHQgYW5kIGFsdCB0aGVtZXMgICAgICAgICAgICAgICAgICAgICDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAg4pSM4pSAIFNlbWFudGljIFRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiAgLS1iZy1wcmltYXJ5LCAtLXRleHQtKiwgLS1nbGFzcy0qLCAtLXBpbGwtKiwgZXRjLiAgICAgIOKUglxuICAg4pSCICBPdmVycmlkZSBpbiAuZGFyayAvIFthbHRdIC8gW2FsdF0uZGFyayAvIEBtZWRpYSAgICAgICAg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgIOKUjOKUgCBTY2hlbWUgVG9rZW5zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCICAtLXNjaGVtZS0qIOKAlCBjb250ZXh0LXNwZWNpZmljIG92ZXJyaWRlcyBwZXIgdGhlbWUgICAgICAg4pSCXG4gICDilIIgIEVhY2ggZGVmaW5lZCBpbiA6cm9vdCBhbmQgb3ZlcnJpZGRlbiBwZXIgdGhlbWUgYmxvY2sgICAg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgIOKUjOKUgCBTdHJ1Y3R1cmFsIFRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiAgLS1jaHJvbWUtc2hhZG93LSosIC0tZ2xhc3MtaW5zZXQtKiwgLS11aS1zdXJmYWNlLSogICAgIOKUglxuICAg4pSCICAtLXRvZ2dsZS0qLCAtLWRyYXdlci1jbG9zZS0qLCAtLWJ0bi1pbnNldC0qICAgICAgICAgICAg4pSCXG4gICDilIIgIFNoYWRvd3MsIGhpZ2hsaWdodHMsIHRyYW5zbHVjZW50IG92ZXJsYXlzICAgICAgICAgICAgICAg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgIFxuICAgVGhlbWUgc3RydWN0dXJlOlxuICAgICA6cm9vdCAgICAgICAgICAgICAgICAgICAgICAgICDihpIgRGVmYXVsdCAoR3JlZW4pIGxpZ2h0IG1vZGVcbiAgICAgLmRhcmsgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIERlZmF1bHQgKEdyZWVuKSBkYXJrIG1vZGVcbiAgICAgW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdICAgICDihpIgQWx0IChPcmFuZ2UpIGxpZ2h0IG1vZGVcbiAgICAgW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdLmRhcmvihpIgQWx0IChPcmFuZ2UpIGRhcmsgbW9kZVxuICAgICBAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyaykg4oaSIE5vbi1KUyBkYXJrIGZhbGxiYWNrXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG46cm9vdCB7XG4gIGNvbG9yLXNjaGVtZTogbGlnaHQ7XG5cbiAgLyogU3VyZmFjZSBwYWxldHRlIOKAlCBiYXNlIGNhbnZhcyB0b25lcyBmb3IgYmFja2dyb3VuZHMgJiBsaWdodCB0ZXh0IG9uIGRhcmsgKi9cbiAgLS1zdXJmYWNlLTUwOiAjRkFGN0YyO1xuICAtLXN1cmZhY2UtMTAwOiAjRjVGMEU4O1xuICAtLXN1cmZhY2UtMjAwOiAjRUJFM0Q1O1xuICAtLXN1cmZhY2UtMzAwOiAjRDRDOEI0O1xuICAtLXN1cmZhY2UtNDAwOiAjQjhBNjhFO1xuXG4gIC8qIE5ldXRyYWwgcGFsZXR0ZSDigJQgdGV4dCwgYm9yZGVycywgYW5kIHN0cnVjdHVyYWwgdG9uZXMgKi9cbiAgLS1uZXV0cmFsLTIwMDogI0QxQkZBODtcbiAgLS1uZXV0cmFsLTMwMDogI0IwOUE3RTtcbiAgLS1uZXV0cmFsLTQwMDogIzhBNzI2MDtcbiAgLS1uZXV0cmFsLTUwMDogIzZFNUE0ODtcbiAgLS1uZXV0cmFsLTYwMDogIzVDNEEzQTtcbiAgLS1uZXV0cmFsLTcwMDogIzRBM0EyRTtcbiAgLS1uZXV0cmFsLTgwMDogIzNEMkUyMjtcbiAgLS1uZXV0cmFsLTkwMDogIzJDMTgxMDtcblxuICAvKiBHbGFzcyBjYXJkL3BhbmVsIHNoYWRvdyB0b2tlbnMgKi9cbiAgLS1jYXJkLXNoYWRvdzogICAgICAgcmdiYSg0NCwgMjQsIDE2LCAwLjA0KTtcbiAgLS1jYXJkLXNoYWRvdy1ob3ZlcjogcmdiYSg5OSwgMTA3LCA0NywgMC4wOCk7XG5cbiAgLyogTWFya2V0cGxhY2UgY29sb3JzICovXG4gIC0tbWwteWVsbG93OiAjRkZFNjAwO1xuICAtLW1sLXllbGxvdy1ob3ZlcjogI0ZGRDcwMDtcbiAgLS1tbC1uYXZ5OiAjMkQzMjc3O1xuICAtLW1sLXNoYWRvdzogcmdiYSgyNTUsIDIzMCwgMCwgMC4yNSk7XG4gIC0tbWwtc2hhZG93LWhvdmVyOiByZ2JhKDI1NSwgMjMwLCAwLCAwLjM1KTtcbiAgLS1zaG9wZWUtb3JhbmdlOiAjRUU0RDJEO1xuICAtLXNob3BlZS1vcmFuZ2UtaG92ZXI6ICNENzMyMTE7XG4gIC0tc2hvcGVlLXNoYWRvdzogcmdiYSgyMzgsIDc3LCA0NSwgMC4yNSk7XG4gIC0tc2hvcGVlLXNoYWRvdy1ob3ZlcjogcmdiYSgyMzgsIDc3LCA0NSwgMC4zNSk7XG5cbiAgLyogRm9udHMgKi9cbiAgLS1mb250LWhlYWRpbmc6IEdlb3JnaWEsIFwiVGltZXMgTmV3IFJvbWFuXCIsIENhbWJyaWEsIFwiTm90byBTZXJpZlwiLCBzZXJpZjtcbiAgLS1mb250LWJvZHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIC0tZm9udC11aTogXCJodWJyYWl6LXVpXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbiAgLyogVHJhbnNpdGlvbiBwcmVzZXRzICovXG4gIC0tZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKTtcbiAgLS1kdXJhdGlvbi1ub3JtYWw6IDAuMnM7XG4gIC0tZHVyYXRpb24tc2xvdzogMC4zcztcblxuICAvKiBBY2NlbnQgc3lzdGVtIOKAlCBwcmltYXJ5IGFjY2VudCB3aXRoIHNlY29uZGFyeSBhcyBmYWxsYmFjayAqL1xuICAtLWFjY2VudC1wcmltYXJ5OiAjNjM2QjJGO1xuICAtLWFjY2VudC1wcmltYXJ5LWhvdmVyOiAjNzQ4MDM4O1xuICAtLWFjY2VudC1wcmltYXJ5LWxpZ2h0OiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjE1KTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXI6IHJnYmEoOTksIDEwNywgNDcsIDAuMjUpO1xuICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSg5OSwgMTA3LCA0NywgMC4yNSk7XG5cbiAgLS1hY2NlbnQtc2Vjb25kYXJ5OiAjRkY1QzAwO1xuICAtLWFjY2VudC1zZWNvbmRhcnktbGlnaHQ6IHJnYmEoMjU1LCA5MiwgMCwgMC4xMik7XG4gIC0tYWNjZW50LXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMjU1LCA5MiwgMCwgMC4yNSk7XG5cbiAgLyogU2VtYW50aWMgY29sb3JzIOKAlCBsaWdodCBtb2RlIGRlZmF1bHRzICovXG4gIC0tYmctcHJpbWFyeTogI0Y1RjBFODtcbiAgLS10ZXh0LXByaW1hcnk6ICMyQzE4MTA7XG4gIC0tdGV4dC1zZWNvbmRhcnk6ICM1QzRBM0E7XG4gIC0tdGV4dC1tdXRlZDogIzcyNUU0QztcbiAgLS10ZXh0LXBsYWNlaG9sZGVyOiByZ2JhKDkyLCA3NCwgNTgsIDAuNCk7XG4gIC0tZ2xhc3MtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSk7XG4gIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjE1KTtcbiAgLS1nbGFzcy1ob3Zlci1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgLS1nbGFzcy1ob3Zlci1ib3JkZXI6IHJnYmEoOTksIDEwNywgNDcsIDAuMik7XG4gIC0tZmlsdGVyLWJhci1iZzogcmdiYSgyNTAsIDI0NywgMjQyLCAwLjg4KTtcbiAgLS1maWx0ZXItYmFyLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLXNlYXJjaC1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAtLXNlYXJjaC1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1zZWFyY2gtZm9jdXMtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Mik7XG4gIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSg5OSwgMTA3LCA0NywgMC40KTtcbiAgLS1waWxsLWluYWN0aXZlLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIC0tcGlsbC1pbmFjdGl2ZS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1waWxsLWluYWN0aXZlLXRleHQ6ICM1QzRBM0E7XG4gIC0tZHJhd2VyLXBhbmVsLWJnOiByZ2JhKDI1MCwgMjQ3LCAyNDIsIDAuOTIpO1xuICAtLWRyYXdlci1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1kcmF3ZXItb3ZlcmxheS1iZzogcmdiYSg0NCwgMjQsIDE2LCAwLjQpO1xuICAtLWRlc2MtZmFkZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbiAgLS1mb290ZXItYmc6ICMxQTIxMTA7XG4gIC0tZm9vdGVyLXRleHQ6ICNFNURGRDQ7XG4gIC0tZm9vdGVyLW11dGVkOiByZ2JhKDIwMCwgMTkwLCAxNzUsIDAuNzUpO1xuICAtLXNjaGVtZS1mb290ZXItYWNjZW50OiAjQThCODU0O1xuICAtLXNjaGVtZS1mb290ZXItaWNvbjogcmdiYSgxNjgsIDE4NCwgODQsIDAuNik7XG4gIC0tc2NoZW1lLWZvb3Rlci1ib3JkZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjEpO1xuICAtLWZvb3Rlci1kaXNjbGFpbWVyOiByZ2JhKDIwMCwgMTkwLCAxNzUsIDAuOCk7XG5cbiAgLyogU2NoZW1lLXNwZWNpZmljIGFjY2VudCB0b2tlbnMg4oCUIGRlZmF1bHQgKGdyZWVuKSB0aGVtZSAqL1xuICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6ICM2MzZCMkY7XG4gIC8qIFRhZywgcGlsbCwgYmFkZ2UgdG9rZW5zIHVzZSAtLWFjY2VudC1wcmltYXJ5IGZhbWlseSBkaXJlY3RseVxuICAgICBzbyB0aGV5IHN3YXAgYXV0b21hdGljYWxseSB3aXRoIHRoZSBhY3RpdmUgY29sb3Igc2NoZW1lLiAqL1xuICAtLXNjaGVtZS1iYWRnZS1iZzogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYWNjZW50LXByaW1hcnkpIDAlLCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ob3ZlcikgMTAwJSk7XG4gIC0tc2NoZW1lLXNjcm9sbC10aHVtYjogcmdiYSg5OSwgMTA3LCA0NywgMC40KTtcbiAgLS1zY2hlbWUtZm9jdXMtcmluZzogIzYzNkIyRjtcbiAgLS1zY2hlbWUtaGVyby1sb2dvLWJnOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjA4KTtcbiAgLS1zY2hlbWUtaGVyby1sb2dvLWJnLWRhcms6IHJnYmEoOTksIDEwNywgNDcsIDAuMik7XG4gIC0tc2NoZW1lLWhlcm8tdHJ1c3Q6ICM2RTVBNDg7XG4gIC0tc2NoZW1lLWhlcm8tc2Nyb2xsLWNvbG9yOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjYpO1xuICAtLXNjaGVtZS1pbWFnZS13cmFwLWJnOiByZ2JhKDIzNSwgMjI3LCAyMTMsIDAuMyk7XG4gIC0tc2NoZW1lLWltYWdlLXdyYXAtYmctZGFyazogcmdiYSg0NCwgMjQsIDE2LCAwLjQpO1xuICAtLXNjaGVtZS1vdmVybGF5LWdyYWRpZW50OiByZ2JhKDQ0LCAyNCwgMTYsIDAuMik7XG4gIC0tc2NoZW1lLW92ZXJsYXktZ3JhZGllbnQtZGFyazogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAtLXNjaGVtZS1zZWFyY2gtZm9jdXMtcmluZzogcmdiYSg5OSwgMTA3LCA0NywgMC4wOCk7XG4gIC0tc2NoZW1lLXNlYXJjaC1mb2N1cy1yaW5nLXN0cm9uZzogcmdiYSg5OSwgMTA3LCA0NywgMC4xKTtcbiAgLS1zY2hlbWUtdHJ1c3QtZGl2aWRlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuMyk7XG4gIC0tc2NoZW1lLXRydXN0LWRpdmlkZXItZGFyazogcmdiYSg5OSwgMTA3LCA0NywgMC4xMik7XG4gIC8qIE1hcmtldHBsYWNlIGJhZGdlIOKAlCBzdWJ0bGUgYWNjZW50IHRpbnQgKGZvb3RlciBpcyBhbHdheXMgZGFyaykgKi9cbiAgLS1zY2hlbWUtbWFya2V0cGxhY2UtYmFkZ2UtYmc6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjE1KTtcbiAgLS1zY2hlbWUtbWFya2V0cGxhY2UtYmFkZ2UtYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4zKTtcblxuICAvKiBUYWcgaGllcmFyY2h5IOKAlCBib3RoIHVzZSBhY2NlbnQtcHJpbWFyeS1saWdodCBiZyAoaGVybyBpY29uIHN0eWxlKS5cbiAgICAgQnJhbmQgdGFnczogZnVsbCBhY2NlbnQgdGV4dCArIGZ1bGwgYWNjZW50IGJvcmRlciArIGJvbGQgPSBwb3BzLlxuICAgICBDYXRlZ29yeSB0YWdzOiBmYWRlZCBhY2NlbnQgdGV4dCArIGZhZGVkIGFjY2VudCBib3JkZXIgKyBub3JtYWwgPSByZWNlZGVzLlxuICAgICBObyBzZXBhcmF0ZSAtZGFyayB0b2tlbnMgbmVlZGVkOyBhY2NlbnQgdG9rZW5zIGF1dG8tc3dhcC4gKi9cbiAgLyog4pSA4pSAIFRleHQgb24gYWNjZW50IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBUZXh0IG9uIHNvbGlkL2ZpbGxlZCBhY2NlbnQgYmFja2dyb3VuZHMgKHNraXAgbGluaywgQ1RBIGJ1dHRvbnMpLiAqL1xuICAtLXRleHQtb24tYWNjZW50OiAjRkZGRkZGO1xuXG4gIC8qIOKUgOKUgCBTZWxlY3Rpb24gaGlnaGxpZ2h0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuICAtLXNlbGVjdGlvbi1iZy1kYXJrOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4zNSk7XG5cbiAgLyog4pSA4pSAIEdsYXNzIG1vcnBoaXNtIGluc2V0IGhpZ2hsaWdodHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFN1YnRsZSB0b3AtZWRnZSBoaWdobGlnaHQgdGhhdCBzaW11bGF0ZXMgbGlnaHQgcmVmbGVjdGlvblxuICAgICBvbiBnbGFzcyBzdXJmYWNlcyBpbiBsaWdodCBhbmQgZGFyayBtb2RlcyAqL1xuICAtLWdsYXNzLWluc2V0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gIC0tZ2xhc3MtaW5zZXQtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgLS1nbGFzcy1pbnNldC1kYXJrOiByZ2JhKDIyOSwgMjIzLCAyMTIsIDAuMDUpO1xuICAtLWdsYXNzLWluc2V0LWRhcmstaG92ZXI6IHJnYmEoMjI5LCAyMjMsIDIxMiwgMC4wOCk7XG5cbiAgLyog4pSA4pSAIFN0cnVjdHVyYWwgc2hhZG93cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgV2FybS10aW50ZWQgZHJvcCBzaGFkb3dzIGZvciBVSSBjaHJvbWUgKHBhbmVscywgZHJhd2VycywgRkFCcykuXG4gICAgIExpZ2h0IG1vZGUgdXNlcyB3YXJtIGJyb3duIGJhc2U7IGRhcmsgbW9kZSB1c2VzIHB1cmUgYmxhY2suICovXG4gIC0tY2hyb21lLXNoYWRvdy1zbTogcmdiYSg0NCwgMjQsIDE2LCAwLjA1KTtcbiAgLS1jaHJvbWUtc2hhZG93LW1kOiByZ2JhKDQ0LCAyNCwgMTYsIDAuMDgpO1xuICAtLWNocm9tZS1zaGFkb3ctbGc6IHJnYmEoNDQsIDI0LCAxNiwgMC4xMik7XG4gIC0tY2hyb21lLXNoYWRvdy1kYXJrOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIC0tbG9nby1kcm9wLXNoYWRvdzogICByZ2JhKDAsIDAsIDAsIDAuMzUpOyAgLyogaGVybyBsb2dvIGdsb3cgZHJvcC1zaGFkb3cgKi9cblxuICAvKiDilIDilIAgVHJhbnNsdWNlbnQgVUkgc3VyZmFjZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFNlbWktdHJhbnNwYXJlbnQgd2hpdGUgb3ZlcmxheXMgZm9yIGNpcmN1bGFyIGdsYXNzIGVsZW1lbnRzXG4gICAgIChoZXJvIHNjcm9sbCBidXR0b24sIHRydXN0IGRpdmlkZXIsIHRvZ2dsZSBGQUIpLlxuICAgICBEYXJrIG1vZGUgdXNlcyBtdWNoIGxvd2VyIG9wYWNpdHkgZm9yIHN1YnRsZSB2aXNpYmlsaXR5LiAqL1xuICAtLXVpLXN1cmZhY2UtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgLS11aS1zdXJmYWNlLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAtLXVpLXN1cmZhY2UtaG92ZXItYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS11aS1zdXJmYWNlLWJnLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gIC0tdWktc3VyZmFjZS1ib3JkZXItZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAtLXVpLXN1cmZhY2UtaG92ZXItYmctZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcblxuICAvKiDilIDilIAgVG9nZ2xlIEZBQiBzdXJmYWNlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVGhlIGZsb2F0aW5nIGFjdGlvbiBidXR0b24gZm9yIGRhcmsvbGlnaHQgbW9kZSBoYXMgaXRzIG93blxuICAgICBzdXJmYWNlIHRva2VucyBiZWNhdXNlIGl0IHVzZXMgYSBkaXN0aW5jdCBvcGFjaXR5IHJhbmdlLiAqL1xuICAtLXRvZ2dsZS1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLXRvZ2dsZS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiAgLS10b2dnbGUtYmctZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAtLXRvZ2dsZS1ib3JkZXItZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcblxuICAvKiDilIDilIAgRHJhd2VyIGNsb3NlIGJ1dHRvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgLS1kcmF3ZXItY2xvc2UtYmc6IHJnYmEoMjUwLCAyNDcsIDI0MiwgMC42KTtcbiAgLS1kcmF3ZXItY2xvc2UtYmctZGFyazogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAtLWRyYXdlci1jbG9zZS1iZy1kYXJrLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuXG4gIC8qIOKUgOKUgCBCdXR0b24gaW5zZXQgaGlnaGxpZ2h0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVG9wLWVkZ2UgaGlnaGxpZ2h0IGZvciBDVEEtc3R5bGUgYnV0dG9ucyAqL1xuICAtLWJ0bi1pbnNldDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgLS1idG4taW5zZXQtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgLS1tbC1pbnNldDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLW1sLWluc2V0LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG5cbiAgLyog4pSA4pSAIFNjaGVtZSBzd2F0Y2ggYm9yZGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuICAtLXNjaGVtZS1zd2F0Y2gtYm9yZGVyOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMTUpO1xuXG4gIC8qIOKUgOKUgCBTcGFjaW5nIHNjYWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBOdW1lcmljIHNjYWxlIHVzZWQgYnkgdS1tKiAvIHUtcCogdXRpbGl0eSBjbGFzc2VzLlxuICAgICBGb2xsb3dzIGEgNHB4IGJhc2UgZ3JpZDogMSA9IDAuMjVyZW0gKDRweCkuICovXG4gIC0tc3BhY2luZy0wOiAwO1xuICAtLXNwYWNpbmctcHg6IDFweDtcbiAgLS1zcGFjaW5nLTAtNTogMC4xMjVyZW07XG4gIC0tc3BhY2luZy0xOiAwLjI1cmVtO1xuICAtLXNwYWNpbmctMS01OiAwLjM3NXJlbTtcbiAgLS1zcGFjaW5nLTI6IDAuNXJlbTtcbiAgLS1zcGFjaW5nLTItNTogMC42MjVyZW07XG4gIC0tc3BhY2luZy0zOiAwLjc1cmVtO1xuICAtLXNwYWNpbmctMy01OiAwLjg3NXJlbTtcbiAgLS1zcGFjaW5nLTQ6IDFyZW07XG4gIC0tc3BhY2luZy01OiAxLjI1cmVtO1xuICAtLXNwYWNpbmctNjogMS41cmVtO1xuICAtLXNwYWNpbmctNzogMS43NXJlbTtcbiAgLS1zcGFjaW5nLTg6IDJyZW07XG4gIC0tc3BhY2luZy05OiAyLjI1cmVtO1xuICAtLXNwYWNpbmctMTA6IDIuNXJlbTtcbiAgLS1zcGFjaW5nLTExOiAyLjc1cmVtO1xuICAtLXNwYWNpbmctMTI6IDNyZW07XG4gIC0tc3BhY2luZy0xNDogMy41cmVtO1xuICAtLXNwYWNpbmctMTY6IDRyZW07XG4gIC0tc3BhY2luZy0yMDogNXJlbTtcbiAgLS1zcGFjaW5nLTI0OiA2cmVtO1xuXG4gIC8qIOKUgOKUgCBGb250LXNpemUgc2NhbGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFVzZWQgYnkgdS10ZXh0LSogdXRpbGl0eSBjbGFzc2VzLiAqL1xuICAtLXRleHQteHM6IDAuNzVyZW07XG4gIC0tdGV4dC1zbTogMC44NzVyZW07XG4gIC0tdGV4dC1iYXNlOiAxcmVtO1xuICAtLXRleHQtbGc6IDEuMTI1cmVtO1xuICAtLXRleHQteGw6IDEuMjVyZW07XG4gIC0tdGV4dC0yeGw6IDEuNXJlbTtcbiAgLS10ZXh0LTN4bDogMS44NzVyZW07XG4gIC0tdGV4dC00eGw6IDIuMjVyZW07XG5cbiAgLyog4pSA4pSAIEZvbnQtd2VpZ2h0IHNjYWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBVc2VkIGJ5IHUtdGV4dC0qLWJvbGQgdXRpbGl0eSBjbGFzc2VzIGFuZCBzdGFuZGFsb25lIHdlaWdodCBjbGFzc2VzLiAqL1xuICAtLWZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwO1xuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4gIC8qIOKUgOKUgCBMaW5lLWhlaWdodCBzY2FsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVXNlZCBieSB1LWxlYWRpbmctKiB1dGlsaXR5IGNsYXNzZXMuICovXG4gIC0tbGVhZGluZy1ub25lOiAxO1xuICAtLWxlYWRpbmctdGlnaHQ6IDEuMjU7XG4gIC0tbGVhZGluZy1zbnVnOiAxLjM3NTtcbiAgLS1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAtLWxlYWRpbmctcmVsYXhlZDogMS42MjU7XG4gIC0tbGVhZGluZy1sb29zZTogMjtcblxuICAvKiDilIDilIAgQm9yZGVyLXJhZGl1cyBzY2FsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVXNlZCBieSB1LXJvdW5kZWQtKiB1dGlsaXR5IGNsYXNzZXMuICovXG4gIC0tcmFkaXVzLW5vbmU6IDA7XG4gIC0tcmFkaXVzLXNtOiAwLjI1cmVtO1xuICAtLXJhZGl1cy1tZDogMC41cmVtO1xuICAtLXJhZGl1cy1sZzogMC43NXJlbTtcbiAgLS1yYWRpdXMteGw6IDFyZW07XG4gIC0tcmFkaXVzLTJ4bDogMS41cmVtO1xuICAtLXJhZGl1cy1mdWxsOiA5OTk5cHg7XG59XG5cbi8qIOKUgOKUgCBEYXJrIG1vZGUgdG9rZW5zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgVGhlc2Ugc2VtYW50aWMgdG9rZW4gdmFsdWVzIGFwcGVhciBUV0lDRSBpbnRlbnRpb25hbGx5OlxuICAgMS4gLmRhcmsgeyB9ICAgICAgICAgICDihpIgSlMtZHJpdmVuIHRvZ2dsZSAobG9jYWxTdG9yYWdlIC8gdXNlciBjbGljaylcbiAgIDIuIEBtZWRpYSBwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayDihpIgTm9uLUpTIGZhbGxiYWNrIHdoZW4gbm9cbiAgICAgIC5saWdodCBvciAuZGFyayBjbGFzcyBpcyBwcmVzZW50IG9uIDxodG1sPlxuICAgRE8gTk9UIGRlZHVwbGljYXRlIOKAlCB0aGV5IHNlcnZlIGRpZmZlcmVudCBjb2RlIHBhdGhzLlxuICAgV2hlbiB1cGRhdGluZyBkYXJrLW1vZGUgdmFsdWVzLCB1cGRhdGUgQk9USCBibG9ja3MuXG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLyogSlMtZHJpdmVuIGRhcmsgbW9kZSAqL1xuLmRhcmsge1xuICBjb2xvci1zY2hlbWU6IGRhcms7XG4gIC0tYmctcHJpbWFyeTogIzFBMTgxNjtcbiAgLS10ZXh0LXByaW1hcnk6ICNFNURGRDQ7XG4gIC0tdGV4dC1zZWNvbmRhcnk6ICNDNUQ0Qjg7XG4gIC0tdGV4dC1tdXRlZDogI0IwOUE3RTtcbiAgLS10ZXh0LXBsYWNlaG9sZGVyOiByZ2JhKDIwMCwgMTkwLCAxNzUsIDAuMzUpO1xuICAtLWdsYXNzLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODgpO1xuICAtLWdsYXNzLWJvcmRlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuMik7XG4gIC0tZ2xhc3MtaG92ZXItYmc6IHJnYmEoNDUsIDQwLCAzNCwgMC45Mik7XG4gIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4yKTtcbiAgLS1maWx0ZXItYmFyLWJnOiByZ2JhKDI2LCAyNCwgMjIsIDAuOTIpO1xuICAtLWZpbHRlci1iYXItYm9yZGVyOiByZ2JhKDYwLCA1NSwgNDUsIDAuNSk7XG4gIC0tc2VhcmNoLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODUpO1xuICAtLXNlYXJjaC1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgLS1zZWFyY2gtZm9jdXMtYmc6IHJnYmEoNDAsIDM2LCAzMCwgMC45Mik7XG4gIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuNCk7XG4gIC0tcGlsbC1pbmFjdGl2ZS1iZzogcmdiYSgzNSwgMzIsIDI4LCAwLjc1KTtcbiAgLS1waWxsLWluYWN0aXZlLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAtLXBpbGwtaW5hY3RpdmUtdGV4dDogI0U1REZENDtcbiAgLS1kcmF3ZXItcGFuZWwtYmc6IHJnYmEoMzAsIDI4LCAyNCwgMC45NSk7XG4gIC0tZHJhd2VyLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAtLWRyYXdlci1vdmVybGF5LWJnOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIC0tZGVzYy1mYWRlOiByZ2JhKDM1LCAzMiwgMjgsIDAuODUpO1xuICAtLWZvb3Rlci1iZzogIzExMUEwODtcbiAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjc1KTtcblxuICAvKiBEYXJrIG1vZGUgc2NoZW1lIHRva2VuIG92ZXJyaWRlcyAqL1xuICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTtcblxuICAvKiBEYXJrIG1vZGUgYWNjZW50IOKAlCBsaWdodGVyIHNoYWRlIGZvciBjb250cmFzdCBvbiBkYXJrIGJnICovXG4gIC0tYWNjZW50LXByaW1hcnk6ICNBOEI4NTQ7XG4gIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICNCOEM4NjQ7XG4gIC0tYWNjZW50LXByaW1hcnktbGlnaHQ6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjE1KTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjMpO1xuICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSgxNjgsIDE4NCwgODQsIDAuMjUpO1xuICAtLWNhcmQtc2hhZG93LWhvdmVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4wOCk7XG5cbiAgLyogRm9jdXMgcmluZyB1c2VzIGxpZ2h0ZW5lZCBhY2NlbnQgZm9yIHZpc2liaWxpdHkgb24gZGFyayBiZyAqL1xuICAtLXNjaGVtZS1mb2N1cy1yaW5nOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG5cbiAgLyogVGV4dCBvbiBzb2xpZCBhY2NlbnQgYmFja2dyb3VuZHMg4oCUIGRhcmsgdGludCBmb3IgY29udHJhc3Qgb24gYnJpZ2h0IGFjY2VudCAqL1xuICAtLXRleHQtb24tYWNjZW50OiAjMkMzMDE1O1xufVxuXG4vKiBTY2hlbWUgb3ZlcnJpZGU6IGFsdGVybmF0ZSDigJQgc3dhcHMgYWNjZW50IHJvbGVzIGZvciBhIGRpZmZlcmVudCBsb29rICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0ge1xuICAvKiBBY2NlbnQgc3lzdGVtIOKAlCBzZWNvbmRhcnkgYmVjb21lcyBwcmltYXJ5LCBwcmltYXJ5IGJlY29tZXMgc2Vjb25kYXJ5ICovXG4gIC0tYWNjZW50LXByaW1hcnk6ICNGRjVDMDA7XG4gIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICNGRjcwMzA7XG4gIC0tYWNjZW50LXByaW1hcnktbGlnaHQ6IHJnYmEoMjU1LCA5MiwgMCwgMC4xMik7XG4gIC0tYWNjZW50LXByaW1hcnktYm9yZGVyOiByZ2JhKDI1NSwgOTIsIDAsIDAuMjUpO1xuICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSgyNTUsIDkyLCAwLCAwLjI1KTtcbiAgLS1hY2NlbnQtc2Vjb25kYXJ5OiAjNjM2QjJGO1xuICAtLWFjY2VudC1zZWNvbmRhcnktbGlnaHQ6IHJnYmEoOTksIDEwNywgNDcsIDAuMTIpO1xuICAtLWFjY2VudC1zZWNvbmRhcnktYm9yZGVyOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjI1KTtcbiAgLS1jYXJkLXNoYWRvdy1ob3ZlcjogcmdiYSgyNTUsIDkyLCAwLCAwLjA4KTtcbiAgLS1nbGFzcy1ib3JkZXI6IHJnYmEoMjU1LCA5MiwgMCwgMC4xNSk7XG4gIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDI1NSwgOTIsIDAsIDAuMik7XG4gIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSgyNTUsIDkyLCAwLCAwLjQpO1xuXG4gIC8qIFNjaGVtZS1zcGVjaWZpYyBhY2NlbnQgdG9rZW5zICovXG4gIC0tc2NoZW1lLWhlcm8tdGFnbGluZTogI0ZGNUMwMDtcbiAgLyogQmFkZ2UgdG9rZW5zIE5PVCBvdmVycmlkZGVuIGhlcmUg4oCUIHRoZXkgdXNlIC0tYWNjZW50LXByaW1hcnkgL1xuICAgICAtLWFjY2VudC1wcmltYXJ5LWhvdmVyIC8gLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3cgd2hpY2ggc3dhcFxuICAgICBhdXRvbWF0aWNhbGx5IHZpYSB0aGUgYWNjZW50IHN5c3RlbSBvdmVycmlkZXMgYWJvdmUgKi9cbiAgLS1zY2hlbWUtc2Nyb2xsLXRodW1iOiByZ2JhKDI1NSwgOTIsIDAsIDAuNCk7XG4gIC0tc2NoZW1lLWZvY3VzLXJpbmc6ICNGRjVDMDA7XG4gIC0tc2NoZW1lLWhlcm8tbG9nby1iZzogcmdiYSgyNTUsIDI0NSwgMjM1LCAwLjUpO1xuICAtLXNjaGVtZS1oZXJvLWxvZ28tYmctZGFyazogcmdiYSg4MCwgMzAsIDAsIDAuMyk7XG4gIC0tc2NoZW1lLWhlcm8tdHJ1c3Q6ICM4QTcyNjA7XG4gIC0tc2NoZW1lLWhlcm8tc2Nyb2xsLWNvbG9yOiByZ2JhKDI1NSwgOTIsIDAsIDAuNik7XG4gIC0tc2NoZW1lLW92ZXJsYXktZ3JhZGllbnQ6IHJnYmEoNDQsIDI0LCAxNiwgMC4yKTtcbiAgLS1zY2hlbWUtZm9vdGVyLWFjY2VudDogI0ZGOEM1QTtcbiAgLS1zY2hlbWUtZm9vdGVyLWljb246IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjYpO1xuICAtLXNjaGVtZS1mb290ZXItYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4xKTtcbiAgLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmc6IHJnYmEoMjU1LCA5MiwgMCwgMC4wOCk7XG4gIC0tc2NoZW1lLXNlYXJjaC1mb2N1cy1yaW5nLXN0cm9uZzogcmdiYSgyNTUsIDkyLCAwLCAwLjEpO1xuICAtLXNjaGVtZS10cnVzdC1kaXZpZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4zKTtcbiAgLS1zY2hlbWUtdHJ1c3QtZGl2aWRlci1kYXJrOiByZ2JhKDI1NSwgOTIsIDAsIDAuMTIpO1xuICAvKiBNYXJrZXRwbGFjZSBiYWRnZSDigJQgc3VidGxlIGFjY2VudCB0aW50IChmb290ZXIgaXMgYWx3YXlzIGRhcmspICovXG4gIC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJnOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4xNSk7XG4gIC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJvcmRlcjogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMyk7XG4gIC0tZm9vdGVyLWRpc2NsYWltZXI6IHJnYmEoMjAwLCAxOTAsIDE3NSwgMC43KTtcbiAgLS1mb290ZXItYmc6ICMyQzE4MTA7XG5cbiAgLyogU2VsZWN0aW9uIOKAlCBhbHQgdGhlbWUgKi9cbiAgLS1zZWxlY3Rpb24tYmctZGFyazogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMzUpO1xuXG4gIC8qIFRleHQgb24gc29saWQgYWNjZW50IGJhY2tncm91bmRzICovXG4gIC0tdGV4dC1vbi1hY2NlbnQ6ICNGRkZGRkY7XG59XG5cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIHtcbiAgY29sb3Itc2NoZW1lOiBkYXJrO1xuICAvKiBEYXJrIG1vZGUgYWNjZW50IOKAlCBsaWdodGVyIHNoYWRlIGZvciBjb250cmFzdCBvbiBkYXJrIGJnICovXG4gIC0tYWNjZW50LXByaW1hcnk6ICNGRjhDNUE7XG4gIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICNGRkEwNzA7XG4gIC0tYWNjZW50LXByaW1hcnktbGlnaHQ6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjE1KTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjMpO1xuICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMjUpO1xuICAtLWNhcmQtc2hhZG93LWhvdmVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4wOCk7XG4gIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4yKTtcbiAgLS1nbGFzcy1ob3Zlci1ib3JkZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjIpO1xuICAtLXNlYXJjaC1mb2N1cy1ib3JkZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjQpO1xuXG4gIC0tYWNjZW50LXNlY29uZGFyeTogI0E4Qjg1NDtcbiAgLS1hY2NlbnQtc2Vjb25kYXJ5LWxpZ2h0OiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4xNSk7XG4gIC0tYWNjZW50LXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjMpO1xuXG4gIC8qIFNlbWFudGljIHRleHQg4oCUIGRlc2F0dXJhdGVkIGZyb20gb2xpdmUtZ3JlZW4gdG8gd2FybSBuZXV0cmFsICovXG4gIC0tdGV4dC1zZWNvbmRhcnk6ICNENEM1Qjg7XG5cbiAgLyogU2NoZW1lIGFjY2VudCB0b2tlbnMg4oCUIGRhcmsgbW9kZSAqL1xuICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTtcbiAgLS1zY2hlbWUtZm9jdXMtcmluZzogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAtLWZvb3Rlci1iZzogIzEzMTIxMDtcbiAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjc1KTtcblxuICAvKiBUZXh0IG9uIHNvbGlkIGFjY2VudCBiYWNrZ3JvdW5kcyDigJQgZGFyayBicm93biBmb3IgY29udHJhc3Qgb24gYnJpZ2h0IG9yYW5nZSBhY2NlbnQgKi9cbiAgLS10ZXh0LW9uLWFjY2VudDogIzU1MUYwMDtcbn1cblxuLyogTGlnaHQgbW9kZSBleHBsaWNpdCBvcHQtaW4g4oCUIGZvcmNlcyBuYXRpdmUgY29udHJvbHMgdG8gbGlnaHQgc2NoZW1lICovXG4ubGlnaHQge1xuICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xufVxuXG4vKiBOb24tSlMgZGFyayBtb2RlIGZhbGxiYWNrIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykuXG4gKiBOT1RFOiBUaGlzIG9ubHkgYXBwbGllcyB0aGUgZGVmYXVsdCBIdWJSYWl6IGRhcmsgdG9rZW5zLlxuICogVXNlcnMgd2hvIHNlbGVjdGVkIGFuIGFsdGVybmF0aXZlIGNvbG9yIHNjaGVtZSB2aWEgSmF2YVNjcmlwdFxuICogKHN0b3JlZCBpbiBsb2NhbFN0b3JhZ2UgYXMgXCJodWJyYWl6LWNvbG9yLXNjaGVtZVwiKSB3aWxsIHNlZSB0aGVcbiAqIGRlZmF1bHQgc2NoZW1lIGlmIEphdmFTY3JpcHQgaXMgdW5hdmFpbGFibGUsIHNpbmNlXG4gKiBkYXRhLWNvbG9yLXNjaGVtZSBpcyBzZXQgYnkgSlMgYXQgcnVudGltZS5cbiAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAvKiBNaXJyb3Igb2YgLmRhcmsg4oCUIGtlZXAgaW4gc3luYy4gV2hlbiB1cGRhdGluZyBkYXJrLW1vZGUgdmFsdWVzLFxuICAgICB1cGRhdGUgQk9USCB0aGUgLmRhcmsgYmxvY2sgKEpTLXRvZ2dsZWQpIGFuZCB0aGlzIEBtZWRpYSBibG9jayAobm8tSlMgZmFsbGJhY2spLiAqL1xuICA6cm9vdDpub3QoLmxpZ2h0KTpub3QoLmRhcmspIHtcbiAgICBjb2xvci1zY2hlbWU6IGRhcms7XG4gICAgLS1iZy1wcmltYXJ5OiAjMUExODE2O1xuICAgIC0tdGV4dC1wcmltYXJ5OiAjRTVERkQ0O1xuICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNDNUQ0Qjg7XG4gICAgLS10ZXh0LW11dGVkOiAjQjA5QTdFO1xuICAgIC0tdGV4dC1wbGFjZWhvbGRlcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjM1KTtcbiAgICAtLWdsYXNzLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODgpO1xuICAgIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4yKTtcbiAgICAtLWdsYXNzLWhvdmVyLWJnOiByZ2JhKDQ1LCA0MCwgMzQsIDAuOTIpO1xuICAgIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4yKTtcbiAgICAtLWZpbHRlci1iYXItYmc6IHJnYmEoMjYsIDI0LCAyMiwgMC45Mik7XG4gICAgLS1maWx0ZXItYmFyLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAgIC0tc2VhcmNoLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODUpO1xuICAgIC0tc2VhcmNoLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAgIC0tc2VhcmNoLWZvY3VzLWJnOiByZ2JhKDQwLCAzNiwgMzAsIDAuOTIpO1xuICAgIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuNCk7XG4gICAgLS1waWxsLWluYWN0aXZlLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuNzUpO1xuICAgIC0tcGlsbC1pbmFjdGl2ZS1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgICAtLXBpbGwtaW5hY3RpdmUtdGV4dDogI0U1REZENDtcbiAgICAtLWRyYXdlci1wYW5lbC1iZzogcmdiYSgzMCwgMjgsIDI0LCAwLjk1KTtcbiAgICAtLWRyYXdlci1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgICAtLWRyYXdlci1vdmVybGF5LWJnOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLS1kZXNjLWZhZGU6IHJnYmEoMzUsIDMyLCAyOCwgMC44NSk7XG4gICAgLS1mb290ZXItYmc6ICMxMTFBMDg7XG4gICAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjc1KTtcbiAgICAtLWFjY2VudC1wcmltYXJ5OiAjQThCODU0O1xuICAgIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICNCOEM4NjQ7XG4gICAgLS1hY2NlbnQtcHJpbWFyeS1saWdodDogcmdiYSgxNjgsIDE4NCwgODQsIDAuMTUpO1xuICAgIC0tYWNjZW50LXByaW1hcnktYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4zKTtcbiAgICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSgxNjgsIDE4NCwgODQsIDAuMjUpO1xuICAgIC0tY2FyZC1zaGFkb3ctaG92ZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjA4KTtcbiAgICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTtcbiAgICAtLXNjaGVtZS1mb2N1cy1yaW5nOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gICAgLS10ZXh0LW9uLWFjY2VudDogIzJDMzAxNTtcbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDIuIFJFU0VUICYgQkFTRVxuICAgQm94LXNpemluZyByZXNldCwgYm9keSBkZWZhdWx0cywgZm9jdXMgc3RhdGVzLCBzY3JvbGxiYXIsIHNlbGVjdGlvbixcbiAgIHJlZHVjZWQtbW90aW9uLCBza2lwIGxpbmtcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmh0bWwge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuYm9keSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbmEgeyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5pbWcgeyBkaXNwbGF5OiBibG9jazsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH1cbmJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QgeyBmb250LWZhbWlseTogaW5oZXJpdDsgfVxuYnV0dG9uIHsgY3Vyc29yOiBwb2ludGVyOyB9XG51bCB7IGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLyogLS0tIFV0aWxpdHk6IEhpZGRlbiBieSBkZWZhdWx0LCBzaG93biB2aWEgSlMgLS0tICovXG4uaXMtaGlkZGVuIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi8qIC0tLSBTa2lwIExpbmsgLS0tICovXG4uc2tpcC1saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xMDAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpO1xuICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAuNzVyZW0gMC43NXJlbTtcbiAgei1pbmRleDogOTk5OTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdHJhbnNpdGlvbjogdG9wIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMTJweCB2YXIoLS1jaHJvbWUtc2hhZG93LWRhcmspO1xufVxuXG4uc2tpcC1saW5rOmZvY3VzIHtcbiAgdG9wOiAwO1xuICBvdXRsaW5lOiAzcHggc29saWQgdmFyKC0tc2NoZW1lLWZvY3VzLXJpbmcpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiAtLS0gRm9jdXMgU3RhdGVzIC0tLSAqL1xuKjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLXNjaGVtZS1mb2N1cy1yaW5nKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuXG4vKiAtLS0gU2Nyb2xsYmFyIC0tLSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7IHdpZHRoOiA4cHg7IH1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7IGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1zY3JvbGwtdGh1bWIpOyBib3JkZXItcmFkaXVzOiA0cHg7IH1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zY2hlbWUtZm9jdXMtcmluZyk7IH1cblxuLyogLS0tIFNlbGVjdGlvbiAtLS0gKi9cbjo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApOyB9XG4uZGFyayA6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQ6IHZhcigtLXNlbGVjdGlvbi1iZy1kYXJrKTsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG4vKiAtLS0gUmVkdWNlZCBNb3Rpb24gLS0tICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuZGVzYy1zY3JvbGwtaW5uZXIub3ZlcmZsb3dzIHsgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH1cbiAgLmRlc2Mtc2Nyb2xsLXZpZXdwb3J0IHtcbiAgICBtaW4taGVpZ2h0OiB1bnNldCAhaW1wb3J0YW50O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cbiAgLmRlc2Mtc2Nyb2xsLXZpZXdwb3J0OjphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAzLiBVVElMSVRJRVNcbiAgIEtleWZyYW1lcywgc3RhZ2dlciBkZWxheXMsIGFuaW1hdGlvbiB1dGlsaXRpZXMsXG4gICBpY29uIHNpemluZywgdGV4dCB0cnVuY2F0aW9uLCBzY3JlZW4tcmVhZGVyLW9ubHlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLSBLZXlmcmFtZXMgLS0tICovXG5cbkBrZXlmcmFtZXMgZmFkZS1pbiB7XG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XG4gIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsgfVxuICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0IHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOyB9XG59XG5cbkBrZXlmcmFtZXMgc2Nyb2xsLXRleHQge1xuICAwJSAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgOCUgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG4gIDg4JSAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zY3JvbGwtZGlzdGFuY2UsIC02MHB4KSk7IH1cbiAgOTYlICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXNjcm9sbC1kaXN0YW5jZSwgLTYwcHgpKTsgfVxuICAxMDAlICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbn1cblxuQGtleWZyYW1lcyBkcmF3ZXItaW4ge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfVxuICB0byB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGRyYXdlci1vdXQge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9XG4gIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG92ZXJsYXktb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDE7IH1cbiAgdG8geyBvcGFjaXR5OiAwOyB9XG59XG5cbi8qIC0tLSBTdGFnZ2VyIERlbGF5cyAtLS0gKi9cbi5zdGFnZ2VyLTEgeyBhbmltYXRpb24tZGVsYXk6IDAuMDVzOyB9XG4uc3RhZ2dlci0yIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjFzOyB9XG4uc3RhZ2dlci0zIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjE1czsgfVxuLnN0YWdnZXItNCB7IGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuXG4vKiAtLS0gQW5pbWF0aW9uIFV0aWxpdGllcyAtLS0gKi9cbi5hbmltYXRlLWZhZGUtaW4geyBhbmltYXRpb246IGZhZGUtaW4gMC42cyBlYXNlLW91dCBib3RoOyB9XG4uYW5pbWF0ZS1zbGlkZS11cCB7IGFuaW1hdGlvbjogc2xpZGUtdXAgMC41cyBlYXNlLW91dCBib3RoOyB9XG4uYW5pbWF0ZS1mbG9hdCB7IGFuaW1hdGlvbjogZmxvYXQgNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH1cblxuLyogLS0tIEljb24gU2l6aW5nIC0tLSAqL1xuLmJ0bi1pY29uIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIC0tLSBUZXh0IFRydW5jYXRpb24gLS0tICovXG4udHJ1bmNhdGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogLS0tIFNjcmVlbiBSZWFkZXIgT25seSAtLS0gKi9cbi5zci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBib3JkZXItd2lkdGg6IDA7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDNiLiBBVE9NSUMgVVRJTElUSUVTXG4gICBUYWlsd2luZC1pbnNwaXJlZCBhdG9taWMgdXRpbGl0eSBjbGFzc2VzIGZvciBIdWJSYWl6LlxuICAgQWxsIHZhbHVlcyByZWZlcmVuY2UgZGVzaWduIHRva2VucyDigJQgbm8gaGFyZGNvZGVkIGNvbG9ycywgc3BhY2luZyxcbiAgIGZvbnQgc2l6ZXMsIG9yIHNoYWRvd3MuIEZ1bGx5IHRoZW1lLWF3YXJlIChsaWdodC9kYXJrLCBhY2NlbnQgc3dhcHMpLlxuICAgTmFtaW5nOiB1LXtjYXRlZ29yeX0te3ZhbHVlfSwgcmVzcG9uc2l2ZToge2JwfS11LXtjYXRlZ29yeX0te3ZhbHVlfVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIOKUgOKUgCBTcGFjaW5nOiBNYXJnaW4g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICB1LW17dCxiLGwscix4LHl9LXtufSDigJQgZGlyZWN0aW9uYWwgbWFyZ2luIHV0aWxpdGllcy5cbiAgIE51bWJlcnMgbWFwIHRvIC0tc3BhY2luZy0qIHRva2Vucy4gKi9cblxuLnUtbS0wICB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbS1weCB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy1weCk7IH1cbi51LW0tMC01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTAtNSk7IH1cbi51LW0tMSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW0tMS01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW0tMiAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW0tMi01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTItNSk7IH1cbi51LW0tMyAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW0tMy01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTMtNSk7IH1cbi51LW0tNCAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW0tNSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW0tNiAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW0tNyAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNyk7IH1cbi51LW0tOCAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW0tOSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctOSk7IH1cbi51LW0tMTAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tLTExIHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTExKTsgfVxuLnUtbS0xMiB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0xMik7IH1cbi51LW0tMTQgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMTQpOyB9XG4udS1tLTE2IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTE2KTsgfVxuLnUtbS0yMCB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0yMCk7IH1cbi51LW0tMjQgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMjQpOyB9XG5cbi51LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXQtMSAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1tdC0xLTUgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW10LTIgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtbXQtMi01IHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yLTUpOyB9XG4udS1tdC0zICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW10LTMtNSB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1tdC01ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtbXQtOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1tdC0xMCB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tdC0xMiB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTIpOyB9XG4udS1tdC0xNiB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTYpOyB9XG4udS1tdC0yMCB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMjApOyB9XG5cbi51LW1iLTAgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbWItMSAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1tYi0xLTUgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtbWItMi01IHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yLTUpOyB9XG4udS1tYi0zICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW1iLTMtNSB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtbWItNCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1tYi01ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW1iLTYgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtbWItOCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1tYi0xMCB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tYi0xMiB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTIpOyB9XG4udS1tYi0xNiB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTYpOyB9XG4udS1tYi0yMCB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMjApOyB9XG5cbi51LW1sLTAgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LW1sLTEgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW1sLTIgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW1sLTMgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW1sLTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW1sLTYgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW1sLTggIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW1sLWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgfVxuXG4udS1tci0wICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXItMSAgeyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW1yLTIgIHsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1tci0zICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtbXItNCAgeyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW1yLTYgIHsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1tci04ICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy04KTsgfVxuLnUtbXItYXV0byB7IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuXG4udS1teC0wICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTApOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LW14LTEgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtbXgtMiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1teC0zICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTMpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW14LTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtbXgtNiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy02KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1teC04ICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTgpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG5cbi51LW15LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXktMSAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1teS0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW15LTMgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0zKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtbXktNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1teS02ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW15LTggIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy04KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuLnUtbXktMTAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEwKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xMCk7IH1cbi51LW15LTEyIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0xMik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTIpOyB9XG5cbi8qIOKUgOKUgCBTcGFjaW5nOiBQYWRkaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgdS1we3QsYixsLHIseCx5fS17bn0g4oCUIGRpcmVjdGlvbmFsIHBhZGRpbmcgdXRpbGl0aWVzLiAqL1xuXG4udS1wLTAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcC1weCB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcHgpOyB9XG4udS1wLTAtNSB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMC01KTsgfVxuLnUtcC0xICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXAtMS01IHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1wLTIgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcC0yLTUgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTItNSk7IH1cbi51LXAtMyAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpOyB9XG4udS1wLTMtNSB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtcC00ICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXAtNSAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTUpOyB9XG4udS1wLTYgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcC03ICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNyk7IH1cbi51LXAtOCAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1wLTEwIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xMCk7IH1cbi51LXAtMTIgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEyKTsgfVxuLnUtcC0xNiB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMTYpOyB9XG5cbi51LXB0LTAgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB0LTEgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXB0LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LXB0LTMgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB0LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXB0LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IH1cbi51LXB0LTggIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcGItMCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcGItMSAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtcGItMiAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcGItMyAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtcGItNCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtcGItNiAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcGItOCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4udS1wbC0wICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcGwtMSAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXBsLTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1wbC0zICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtcGwtNCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXBsLTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1wbC04ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4udS1wci0wICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXByLTEgIHsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtcHItMiAgeyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1wci0zICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXByLTQgIHsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtcHItNiAgeyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1wci04ICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcHgtMCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMCk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB4LTEgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTEpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1weC0xLTUgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMS01KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1weC0yICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcHgtMi01IHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTItNSk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtcHgtMyAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMyk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1weC02ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy02KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcHgtOCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctOCk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcHktMCAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB5LTEgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMSk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1weS0xLTUgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0xLTUpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1weS0yICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcHktMi01IHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMi01KTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtcHktMyAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0zKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1weS02ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcHktOCAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy04KTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLyog4pSA4pSAIFR5cG9ncmFwaHk6IEZvbnQgU2l6ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIHUtdGV4dC17c2l6ZX0g4oCUIG1hcHMgdG8gLS10ZXh0LSogdG9rZW5zLlxuICAgdS10ZXh0LXtzaXplfS1ib2xkIOKAlCBjb21iaW5lcyBzaXplICsgYm9sZCB3ZWlnaHQuICovXG5cbi51LXRleHQteHMgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7IH1cbi51LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbi51LXRleHQtYmFzZSB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTsgfVxuLnUtdGV4dC1sZyAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTsgfVxuLnUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuLnUtdGV4dC0yeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTJ4bCk7IH1cbi51LXRleHQtM3hsICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC0zeGwpOyB9XG4udS10ZXh0LTR4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtNHhsKTsgfVxuXG4udS10ZXh0LXhzLWJvbGQgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuLnUtdGV4dC1zbS1ib2xkICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtc20pOyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7IH1cbi51LXRleHQtYmFzZS1ib2xkIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7IH1cbi51LXRleHQtbGctYm9sZCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTsgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpOyB9XG4udS10ZXh0LXhsLWJvbGQgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuXG4vKiDilIDilIAgVHlwb2dyYXBoeTogRm9udCBXZWlnaHQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LWZvbnQtbm9ybWFsICAgeyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTsgfVxuLnUtZm9udC1tZWRpdW0gICB7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pOyB9XG4udS1mb250LXNlbWlib2xkIHsgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTsgfVxuLnUtZm9udC1ib2xkICAgICB7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuXG4vKiDilIDilIAgVHlwb2dyYXBoeTogTGluZSBIZWlnaHQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LWxlYWRpbmctbm9uZSAgICB7IGxpbmUtaGVpZ2h0OiB2YXIoLS1sZWFkaW5nLW5vbmUpOyB9XG4udS1sZWFkaW5nLXRpZ2h0ICAgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy10aWdodCk7IH1cbi51LWxlYWRpbmctc251ZyAgICB7IGxpbmUtaGVpZ2h0OiB2YXIoLS1sZWFkaW5nLXNudWcpOyB9XG4udS1sZWFkaW5nLW5vcm1hbCAgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy1ub3JtYWwpOyB9XG4udS1sZWFkaW5nLXJlbGF4ZWQgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy1yZWxheGVkKTsgfVxuLnUtbGVhZGluZy1sb29zZSAgIHsgbGluZS1oZWlnaHQ6IHZhcigtLWxlYWRpbmctbG9vc2UpOyB9XG5cbi8qIOKUgOKUgCBUeXBvZ3JhcGh5OiBBbGlnbm1lbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LXRleHQtbGVmdCAgICB7IHRleHQtYWxpZ246IGxlZnQ7IH1cbi51LXRleHQtY2VudGVyICB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLnUtdGV4dC1yaWdodCAgIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLyog4pSA4pSAIENvbG9yOiBUZXh0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgU2VtYW50aWMgdG9rZW4tZHJpdmVuIOKAlCBzd2FwcyBhdXRvbWF0aWNhbGx5IHdpdGggZGFyayBtb2RlIC8gYWNjZW50LiAqL1xuXG4udS10ZXh0LXByaW1hcnkgICAgeyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfVxuLnUtdGV4dC1zZWNvbmRhcnkgIHsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxuLnUtdGV4dC1tdXRlZCAgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4udS10ZXh0LXBsYWNlaG9sZGVyIHsgY29sb3I6IHZhcigtLXRleHQtcGxhY2Vob2xkZXIpOyB9XG4udS10ZXh0LW9uLWFjY2VudCAgeyBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpOyB9XG4udS10ZXh0LWFjY2VudCAgICAgeyBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpOyB9XG5cbi8qIOKUgOKUgCBDb2xvcjogQmFja2dyb3VuZCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIFNlbWFudGljIHRva2VuLWRyaXZlbiDigJQgc3dhcHMgYXV0b21hdGljYWxseSB3aXRoIGRhcmsgbW9kZSAvIGFjY2VudC4gKi9cblxuLnUtYmctcHJpbWFyeSAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgfVxuLnUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbi51LWJnLWFjY2VudC1saWdodCB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTsgfVxuLnUtYmctZ2xhc3MgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nbGFzcy1iZyk7IH1cbi51LWJnLXRyYW5zcGFyZW50IHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLyog4pSA4pSAIEZsZXhib3ggTGF5b3V0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1mbGV4ICAgICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuLnUtaW5saW5lLWZsZXggICB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XG4udS1mbGV4LXJvdyAgICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuLnUtZmxleC1jb2wgICAgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbi51LWZsZXgtd3JhcCAgICAgeyBmbGV4LXdyYXA6IHdyYXA7IH1cbi51LWZsZXgtbm93cmFwICAgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuLnUtanVzdGlmeS1zdGFydCAgICB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxuLnUtanVzdGlmeS1jZW50ZXIgICB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4udS1qdXN0aWZ5LWJldHdlZW4gIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4udS1qdXN0aWZ5LWVuZCAgICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxuLnUtaXRlbXMtc3RhcnQgICAgICB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4udS1pdGVtcy1jZW50ZXIgICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuLnUtaXRlbXMtZW5kICAgICAgICB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfVxuLnUtaXRlbXMtc3RyZXRjaCAgICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4udS1pdGVtcy1iYXNlbGluZSAgIHsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4udS1zZWxmLXN0YXJ0ICAgICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgfVxuLnUtc2VsZi1jZW50ZXIgICAgICB7IGFsaWduLXNlbGY6IGNlbnRlcjsgfVxuLnUtc2VsZi1lbmQgICAgICAgICB7IGFsaWduLXNlbGY6IGZsZXgtZW5kOyB9XG4udS1mbGV4LTEgICAgICAgIHsgZmxleDogMSAxIDAlOyB9XG4udS1mbGV4LWF1dG8gICAgIHsgZmxleDogMSAxIGF1dG87IH1cbi51LWZsZXgtbm9uZSAgICAgeyBmbGV4OiBub25lOyB9XG4udS1mbGV4LXNocmluay0wIHsgZmxleC1zaHJpbms6IDA7IH1cbi51LWZsZXgtZ3JvdyAgICAgeyBmbGV4LWdyb3c6IDE7IH1cbi51LW9yZGVyLWZpcnN0ICAgeyBvcmRlcjogLTk5OTk7IH1cbi51LW9yZGVyLWxhc3QgICAgeyBvcmRlcjogOTk5OTsgfVxuLnUtb3JkZXItbm9uZSAgICB7IG9yZGVyOiAwOyB9XG5cbi8qIOKUgOKUgCBHcmlkIExheW91dCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtZ3JpZCAgICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbi51LWdyaWQtY29scy0xICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy0yICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy0zICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy00ICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cblxuLyog4pSA4pSAIEdhcCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtZ2FwLTAgICB7IGdhcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtZ2FwLTAtNSB7IGdhcDogdmFyKC0tc3BhY2luZy0wLTUpOyB9XG4udS1nYXAtMSAgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1nYXAtMS01IHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LWdhcC0yICAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LWdhcC0yLTUgeyBnYXA6IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtZ2FwLTMgICB7IGdhcDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtZ2FwLTQgICB7IGdhcDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtZ2FwLTUgICB7IGdhcDogdmFyKC0tc3BhY2luZy01KTsgfVxuLnUtZ2FwLTYgICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtZ2FwLTggICB7IGdhcDogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4vKiDilIDilIAgU2hhZG93czogWmVyby1PZmZzZXQgR2xvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIEFsbCBzaGFkb3dzIHVzZSAwIDAgTnB4IGZvcm1hdCAoemVybyBYL1kgb2Zmc2V0LCBwdXJlIGdsb3cpLlxuICAgSHViUmFpeiBnbGFzcy1tb3JwaGlzbSBjb252ZW50aW9uOiBubyBkaXJlY3Rpb25hbCBzaGFkb3dzLiAqL1xuXG4udS1zaGFkb3ctc20geyBib3gtc2hhZG93OiAwIDAgOHB4IHZhcigtLWNocm9tZS1zaGFkb3ctc20pOyB9XG4udS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuLnUtc2hhZG93LWxnIHsgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7IH1cbi51LXNoYWRvdy1ub25lIHsgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4vKiDilIDilIAgQm9yZGVyIFJhZGl1cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtcm91bmRlZC1ub25lIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmUpOyB9XG4udS1yb3VuZGVkLXNtICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9XG4udS1yb3VuZGVkLW1kICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9XG4udS1yb3VuZGVkLWxnICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyB9XG4udS1yb3VuZGVkLXhsICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpOyB9XG4udS1yb3VuZGVkLTJ4bCAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtMnhsKTsgfVxuLnUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG5cbi8qIOKUgOKUgCBEaXNwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1ibG9jayAgICAgICAgeyBkaXNwbGF5OiBibG9jazsgfVxuLnUtaW5saW5lLWJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4udS1pbmxpbmUgICAgICAgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbi51LWhpZGRlbiAgICAgICB7IGRpc3BsYXk6IG5vbmU7IH1cblxuLyog4pSA4pSAIFBvc2l0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1yZWxhdGl2ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnUtYWJzb2x1dGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbi51LWZpeGVkICAgIHsgcG9zaXRpb246IGZpeGVkOyB9XG4udS1zdGlja3kgICB7IHBvc2l0aW9uOiBzdGlja3k7IH1cblxuLyog4pSA4pSAIE92ZXJmbG93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1vdmVyZmxvdy1hdXRvICAgIHsgb3ZlcmZsb3c6IGF1dG87IH1cbi51LW92ZXJmbG93LWhpZGRlbiAgeyBvdmVyZmxvdzogaGlkZGVuOyB9XG4udS1vdmVyZmxvdy12aXNpYmxlIHsgb3ZlcmZsb3c6IHZpc2libGU7IH1cbi51LW92ZXJmbG93LXNjcm9sbCAgeyBvdmVyZmxvdzogc2Nyb2xsOyB9XG5cbi8qIOKUgOKUgCBXaWR0aCAmIEhlaWdodCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtdy1mdWxsICAgeyB3aWR0aDogMTAwJTsgfVxuLnUtdy1hdXRvICAgeyB3aWR0aDogYXV0bzsgfVxuLnUtdy1zY3JlZW4geyB3aWR0aDogMTAwdnc7IH1cbi51LWgtZnVsbCAgIHsgaGVpZ2h0OiAxMDAlOyB9XG4udS1oLWF1dG8gICB7IGhlaWdodDogYXV0bzsgfVxuLnUtaC1zY3JlZW4geyBoZWlnaHQ6IDEwMHZoOyB9XG5cbi8qIOKUgOKUgCBSZXNwb25zaXZlIFV0aWxpdGllcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIHNtOiDiiaU2NDBweCB8IG1kOiDiiaU3NjhweCB8IGxnOiDiiaUxMDI0cHhcbiAgIFByZWZpeCBwYXR0ZXJuOiB7YnB9LXUte2NsYXNzfSBlLmcuIG1kLXUtZmxleCwgbGctdS10ZXh0LWxnICovXG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc20tdS1tdC0wICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMCk7IH1cbiAgLnNtLXUtbXQtMiAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LW10LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1tdC02ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLnNtLXUtbXQtOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5zbS11LW1iLTAgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAuc20tdS1tYi0yICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLnNtLXUtbWItNCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5zbS11LW1iLTYgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS1tYi04ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLnNtLXUtbXgtMiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LW14LTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1teC1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAuc20tdS1teS00ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLnNtLXUtbXktOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5zbS11LXAtMiAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1wLTQgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLnNtLXUtcC02ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5zbS11LXAtOCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy04KTsgfVxuICAuc20tdS1weC0yICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1weC00ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy00KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1weC02ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy02KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS1weS0yICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1weS00ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1weS02ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS10ZXh0LXNtICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtc20pOyB9XG4gIC5zbS11LXRleHQtYmFzZSB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTsgfVxuICAuc20tdS10ZXh0LWxnICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtbGcpOyB9XG4gIC5zbS11LXRleHQteGwgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7IH1cbiAgLnNtLXUtdGV4dC0yeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTJ4bCk7IH1cbiAgLnNtLXUtdGV4dC0zeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTN4bCk7IH1cbiAgLnNtLXUtZmxleCAgICAgICB7IGRpc3BsYXk6IGZsZXg7IH1cbiAgLnNtLXUtZmxleC1yb3cgICB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cbiAgLnNtLXUtZmxleC1jb2wgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgLnNtLXUtanVzdGlmeS1jZW50ZXIgIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgLnNtLXUtanVzdGlmeS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gIC5zbS11LWl0ZW1zLWNlbnRlciAgICB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLnNtLXUtZ2FwLTIgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LWdhcC00ICB7IGdhcDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1nYXAtNiAgeyBnYXA6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLnNtLXUtaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfVxuICAuc20tdS1ibG9jayAgeyBkaXNwbGF5OiBibG9jazsgfVxuICAuc20tdS1mbGV4LTEgeyBmbGV4OiAxIDEgMCU7IH1cbiAgLnNtLXUtdy1mdWxsIHsgd2lkdGg6IDEwMCU7IH1cbiAgLnNtLXUtdy1hdXRvIHsgd2lkdGg6IGF1dG87IH1cbiAgLnNtLXUtZ3JpZCAgICAgICAgeyBkaXNwbGF5OiBncmlkOyB9XG4gIC5zbS11LWdyaWQtY29scy0yIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9XG4gIC5zbS11LWdyaWQtY29scy0zIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9XG4gIC5zbS11LXNoYWRvdy1zbSB7IGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tY2hyb21lLXNoYWRvdy1zbSk7IH1cbiAgLnNtLXUtc2hhZG93LW1kIHsgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tY2hyb21lLXNoYWRvdy1tZCk7IH1cbiAgLnNtLXUtc2hhZG93LWxnIHsgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7IH1cbiAgLnNtLXUtc2hhZG93LW5vbmUgeyBib3gtc2hhZG93OiBub25lOyB9XG4gIC5zbS11LXJvdW5kZWQtc20geyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9XG4gIC5zbS11LXJvdW5kZWQtbWQgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9XG4gIC5zbS11LXJvdW5kZWQtbGcgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyB9XG4gIC5zbS11LXJvdW5kZWQtZnVsbCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTsgfVxuICAuc20tdS1iZy1wcmltYXJ5ICAgICB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyB9XG4gIC5zbS11LWJnLWFjY2VudCAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpOyB9XG4gIC5zbS11LWJnLWFjY2VudC1saWdodCB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTsgfVxuICAuc20tdS10ZXh0LXByaW1hcnkgICB7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9XG4gIC5zbS11LXRleHQtc2Vjb25kYXJ5IHsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxuICAuc20tdS10ZXh0LW11dGVkICAgICB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfVxuICAuc20tdS10ZXh0LWFjY2VudCAgICB7IGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5tZC11LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAubWQtdS1tdC0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubWQtdS1tdC04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLm1kLXUtbWItMCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTApOyB9XG4gIC5tZC11LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAubWQtdS1tYi00ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLm1kLXUtbWItNiAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LW1iLTggIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuICAubWQtdS1teC0yICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtbXgtNCAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gIC5tZC11LW15LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubWQtdS1teS04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLm1kLXUtcC0yICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXAtNCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubWQtdS1wLTYgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLm1kLXUtcC04ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5tZC11LXB4LTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LXB4LTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LXB5LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LXB5LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbiAgLm1kLXUtdGV4dC1iYXNlIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyB9XG4gIC5tZC11LXRleHQtbGcgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7IH1cbiAgLm1kLXUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuICAubWQtdS10ZXh0LTJ4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtMnhsKTsgfVxuICAubWQtdS10ZXh0LTN4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtM3hsKTsgfVxuICAubWQtdS1mbGV4ICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuICAubWQtdS1mbGV4LXJvdyAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAubWQtdS1mbGV4LWNvbCAgIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubWQtdS1qdXN0aWZ5LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAubWQtdS1qdXN0aWZ5LWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLm1kLXUtaXRlbXMtY2VudGVyICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubWQtdS1nYXAtMiAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtZ2FwLTQgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LWdhcC02ICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubWQtdS1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5tZC11LWJsb2NrICB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5tZC11LWZsZXgtMSB7IGZsZXg6IDEgMSAwJTsgfVxuICAubWQtdS13LWZ1bGwgeyB3aWR0aDogMTAwJTsgfVxuICAubWQtdS13LWF1dG8geyB3aWR0aDogYXV0bzsgfVxuICAubWQtdS1ncmlkICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtc2hhZG93LXNtIHsgYm94LXNoYWRvdzogMCAwIDhweCB2YXIoLS1jaHJvbWUtc2hhZG93LXNtKTsgfVxuICAubWQtdS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuICAubWQtdS1zaGFkb3ctbGcgeyBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1jaHJvbWUtc2hhZG93LWxnKTsgfVxuICAubWQtdS1zaGFkb3ctbm9uZSB7IGJveC1zaGFkb3c6IG5vbmU7IH1cbiAgLm1kLXUtcm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH1cbiAgLm1kLXUtcm91bmRlZC1tZCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IH1cbiAgLm1kLXUtcm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IH1cbiAgLm1kLXUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG4gIC5tZC11LWJnLXByaW1hcnkgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IH1cbiAgLm1kLXUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbiAgLm1kLXUtYmctYWNjZW50LWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyB9XG4gIC5tZC11LXRleHQtcHJpbWFyeSAgIHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH1cbiAgLm1kLXUtdGV4dC1zZWNvbmRhcnkgeyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9XG4gIC5tZC11LXRleHQtbXV0ZWQgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4gIC5tZC11LXRleHQtYWNjZW50ICAgIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTsgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZy11LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAubGctdS1tdC0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubGctdS1tdC04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLmxnLXUtbWItMCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTApOyB9XG4gIC5sZy11LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAubGctdS1tYi00ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLmxnLXUtbWItNiAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LW1iLTggIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuICAubGctdS1teC0yICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtbXgtNCAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gIC5sZy11LW15LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubGctdS1teS04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLmxnLXUtcC0yICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXAtNCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubGctdS1wLTYgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLmxnLXUtcC04ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5sZy11LXB4LTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LXB4LTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LXB5LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LXB5LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbiAgLmxnLXUtdGV4dC1iYXNlIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyB9XG4gIC5sZy11LXRleHQtbGcgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7IH1cbiAgLmxnLXUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuICAubGctdS10ZXh0LTJ4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtMnhsKTsgfVxuICAubGctdS10ZXh0LTN4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtM3hsKTsgfVxuICAubGctdS1mbGV4ICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuICAubGctdS1mbGV4LXJvdyAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAubGctdS1mbGV4LWNvbCAgIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubGctdS1qdXN0aWZ5LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAubGctdS1qdXN0aWZ5LWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLmxnLXUtaXRlbXMtY2VudGVyICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubGctdS1nYXAtMiAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtZ2FwLTQgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LWdhcC02ICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubGctdS1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5sZy11LWJsb2NrICB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5sZy11LWZsZXgtMSB7IGZsZXg6IDEgMSAwJTsgfVxuICAubGctdS13LWZ1bGwgeyB3aWR0aDogMTAwJTsgfVxuICAubGctdS13LWF1dG8geyB3aWR0aDogYXV0bzsgfVxuICAubGctdS1ncmlkICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtc2hhZG93LXNtIHsgYm94LXNoYWRvdzogMCAwIDhweCB2YXIoLS1jaHJvbWUtc2hhZG93LXNtKTsgfVxuICAubGctdS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuICAubGctdS1zaGFkb3ctbGcgeyBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1jaHJvbWUtc2hhZG93LWxnKTsgfVxuICAubGctdS1zaGFkb3ctbm9uZSB7IGJveC1zaGFkb3c6IG5vbmU7IH1cbiAgLmxnLXUtcm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH1cbiAgLmxnLXUtcm91bmRlZC1tZCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IH1cbiAgLmxnLXUtcm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IH1cbiAgLmxnLXUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG4gIC5sZy11LWJnLXByaW1hcnkgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IH1cbiAgLmxnLXUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbiAgLmxnLXUtYmctYWNjZW50LWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyB9XG4gIC5sZy11LXRleHQtcHJpbWFyeSAgIHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH1cbiAgLmxnLXUtdGV4dC1zZWNvbmRhcnkgeyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9XG4gIC5sZy11LXRleHQtbXV0ZWQgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4gIC5sZy11LXRleHQtYWNjZW50ICAgIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTsgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDQuIEdMQVNTIE1PUlBISVNNXG4gICBHbGFzcyBjYXJkcywgcGFuZWxzLCBtYXJrZXRwbGFjZSBidXR0b25zIChidG4tbWwsIGJ0bi1zaG9wZWUpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gR2xhc3MgQ2FyZCAtLS0gKi9cbi5nbGFzcy1jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdsYXNzLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gIGJveC1zaGFkb3c6XG4gICAgMCAwIDhweCB2YXIoLS1jYXJkLXNoYWRvdyksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldCk7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbiAgY29udGFpbjogbGF5b3V0O1xufVxuXG4uZ2xhc3MtY2FyZDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWhvdmVyLWJnKTtcbiAgYm94LXNoYWRvdzpcbiAgICAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1ob3Zlcik7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZ2xhc3MtaG92ZXItYm9yZGVyKTtcbn1cblxuLyogLS0tIEdsYXNzIFBhbmVsIC0tLSAqL1xuLmdsYXNzLXBhbmVsIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nbGFzcy1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAycmVtO1xuICBib3gtc2hhZG93OlxuICAgIDAgMCAyNHB4IHZhcigtLWNhcmQtc2hhZG93KSwgaW5zZXQgMCAwLjVweCAwIHZhcigtLWdsYXNzLWluc2V0KTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbn1cblxuLmdsYXNzLXBhbmVsOmhvdmVyIHtcbiAgYm94LXNoYWRvdzpcbiAgICAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1ob3Zlcik7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZ2xhc3MtaG92ZXItYm9yZGVyKTtcbn1cblxuLyogRGFyayBtb2RlOiB0b25lIGRvd24gdGhlIGluc2V0IHRvcC1oaWdobGlnaHQgZm9yIGJvdGggY29sb3IgdGhlbWVzICovXG4uZGFyayAuZ2xhc3MtY2FyZCB7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tY2FyZC1zaGFkb3cpLCBpbnNldCAwIDAuNXB4IDAgdmFyKC0tZ2xhc3MtaW5zZXQtZGFyayk7XG59XG4uZGFyayAuZ2xhc3MtY2FyZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHZhcigtLWNhcmQtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAwLjVweCAwIHZhcigtLWdsYXNzLWluc2V0LWRhcmstaG92ZXIpO1xufVxuLmRhcmsgLmdsYXNzLXBhbmVsIHtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2FyZC1zaGFkb3cpLCBpbnNldCAwIDAuNXB4IDAgdmFyKC0tZ2xhc3MtaW5zZXQtZGFyayk7XG59XG4uZGFyayAuZ2xhc3MtcGFuZWw6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1kYXJrLWhvdmVyKTtcbn1cblxuLyogLS0tIFNoYXJlZCBNYXJrZXRwbGFjZSBCdXR0b24gU3R5bGVzIC0tLSAqL1xuLmJ0bi1tbCxcbi5idG4tc2hvcGVlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmJ0bi1tbDpob3Zlcixcbi5idG4tc2hvcGVlOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4uYnRuLW1sOmFjdGl2ZSxcbi5idG4tc2hvcGVlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogLS0tIE1lcmNhZG8gTGl2cmUgQnV0dG9uIC0tLSAqL1xuLmJ0bi1tbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1sLXllbGxvdykgMCUsIHZhcigtLW1sLXllbGxvdy1ob3ZlcikgMTAwJSk7XG4gIGNvbG9yOiB2YXIoLS1tbC1uYXZ5KTtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tbWwtc2hhZG93KSwgaW5zZXQgMCAxcHggMCB2YXIoLS1tbC1pbnNldCk7XG59XG5cbi5idG4tbWw6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tbC15ZWxsb3ctaG92ZXIpIDAlLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbWwteWVsbG93LWhvdmVyKSA4NSUsIGJsYWNrKSAxMDAlKTtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tbWwtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAxcHggMCB2YXIoLS1tbC1pbnNldC1ob3Zlcik7XG59XG5cbi8qIC0tLSBTaG9wZWUgQnV0dG9uIC0tLSAqL1xuLmJ0bi1zaG9wZWUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaG9wZWUtb3JhbmdlKSAwJSwgdmFyKC0tc2hvcGVlLW9yYW5nZS1ob3ZlcikgMTAwJSk7XG4gIC8qIFNob3BlZSBicmFuZCB3aGl0ZSB0ZXh0IOKAlCBub3QgLS10ZXh0LW9uLWFjY2VudCAoM3JkLXBhcnR5IGJyYW5kIGNvbG9yKS5cbiAgICAgV2hpdGUgb24gI0VFNEQyRCA9IDMuNjY6MSDigJQgcGFzc2VzIGxhcmdlLXRleHQgKDM6MSkuIERvY3VtZW50ZWQgZXhjZXB0aW9uLiAqL1xuICBjb2xvcjogI0ZGRkZGRjtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tc2hvcGVlLXNoYWRvdyksIGluc2V0IDAgMXB4IDAgdmFyKC0tYnRuLWluc2V0KTtcbn1cblxuLmJ0bi1zaG9wZWU6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaG9wZWUtb3JhbmdlLWhvdmVyKSAwJSwgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNob3BlZS1vcmFuZ2UtaG92ZXIpIDg1JSwgYmxhY2spIDEwMCUpO1xuICBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1zaG9wZWUtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAxcHggMCB2YXIoLS1idG4taW5zZXQtaG92ZXIpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDUuIEhFUk9cbiAgIEhlcm8gc2VjdGlvbiBsYXlvdXQsIGxvZ28sIHRpdGxlLCB0YWdsaW5lLCBDVEFzLCBzY3JvbGwgaW5kaWNhdG9yXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIG1pbi1oZWlnaHQ6IDEwMGR2aDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5oZXJvLWRvdC1ncmlkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgb3BhY2l0eTogMC4wMjU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMXB4IDFweCwgdmFyKC0tbmV1dHJhbC05MDApIDFweCwgdHJhbnNwYXJlbnQgMCk7XG4gIGJhY2tncm91bmQtc2l6ZTogMjhweCAyOHB4O1xufVxuXG4uZGFyayAuaGVyby1kb3QtZ3JpZCB7IG9wYWNpdHk6IDAuMDI7IH1cblxuLmhlcm8tY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDU2cmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogNXJlbSAxLjI1cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tY29udGVudCB7IHBhZGRpbmc6IDdyZW0gMnJlbTsgfSB9XG5cbi5oZXJvLWdsYXNzIHtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tZ2xhc3MgeyBwYWRkaW5nOiAzcmVtOyB9IH1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAuaGVyby1nbGFzcyB7IHBhZGRpbmc6IDRyZW07IH0gfVxuXG4uaGVyby1sb2dvLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uaGVyby1sb2dvLWNvbnRhaW5lciB7XG4gIHdpZHRoOiA4cmVtO1xuICBoZWlnaHQ6IDhyZW07XG4gIGJvcmRlci1yYWRpdXM6IDEuNXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLWhlcm8tbG9nby1iZyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGFyayAuaGVyby1sb2dvLWNvbnRhaW5lciB7IGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1oZXJvLWxvZ28tYmctZGFyayk7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5oZXJvLWxvZ28tY29udGFpbmVyIHsgd2lkdGg6IDEwcmVtOyBoZWlnaHQ6IDEwcmVtOyBib3JkZXItcmFkaXVzOiAycmVtOyB9XG59XG5cbi5oZXJvLWxvZ28taW1nIHtcbiAgd2lkdGg6IDc4JTtcbiAgaGVpZ2h0OiA3OCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDhweCB2YXIoLS1sb2dvLWRyb3Atc2hhZG93KSk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuaGVyby1sb2dvLWltZyB7IHdpZHRoOiA4MiU7IGhlaWdodDogODIlOyB9XG59XG5cbi5oZXJvLXRpdGxlIHtcbiAgZm9udC1zaXplOiBjbGFtcCgzcmVtLCA4dncsIDVyZW0pO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4uaGVyby10aXRsZS1odWIgeyBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApOyB9XG4uZGFyayAuaGVyby10aXRsZS1odWIgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG4uaGVyby10aXRsZS1yYWl6IHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTsgfVxuXG4uaGVyby10YWdsaW5lIHtcbiAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDN2dywgMS41cmVtKTtcbiAgY29sb3I6IHZhcigtLXNjaGVtZS1oZXJvLXRhZ2xpbmUpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG59XG5cbi5oZXJvLWRlc2NyaXB0aW9uIHtcbiAgbWF4LXdpZHRoOiAzNnJlbTtcbiAgbWFyZ2luOiAwIGF1dG8gMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApO1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi5kYXJrIC5oZXJvLWRlc2NyaXB0aW9uIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tZGVzY3JpcHRpb24geyBmb250LXNpemU6IDEuMTI1cmVtOyB9IH1cblxuLmhlcm8tY3RhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC43NXJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuaGVyby1jdGFzIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgZ2FwOiAxcmVtOyB9XG59XG5cbi5oZXJvLWN0YXMgLmJ0bi1tbCxcbi5oZXJvLWN0YXMgLmJ0bi1zaG9wZWUge1xuICB3aWR0aDogYXV0bztcbiAgcGFkZGluZzogMXJlbSAxLjc1cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG59XG5cbi5oZXJvLXRydXN0LWhpbnQge1xuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWhlcm8tdHJ1c3QpO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAuaGVyby10cnVzdC1oaW50IHsgZm9udC1zaXplOiAwLjg3NXJlbTsgfSB9XG4uZGFyayAuaGVyby10cnVzdC1oaW50IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4uaGVyby1zY3JvbGwtaW5kaWNhdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEuNXJlbTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTEuMjVyZW07XG4gIHdpZHRoOiAyLjVyZW07XG4gIHotaW5kZXg6IDEwO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tc2Nyb2xsLWluZGljYXRvciB7IGJvdHRvbTogMnJlbTsgfSB9XG5cbi5oZXJvLXNjcm9sbC1idG4ge1xuICB3aWR0aDogMi41cmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyKTtcbiAgY29sb3I6IHZhcigtLXNjaGVtZS1oZXJvLXNjcm9sbC1jb2xvcik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGFyayAuaGVyby1zY3JvbGwtYnRuIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1iZy1kYXJrKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS11aS1zdXJmYWNlLWJvcmRlci1kYXJrKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbn1cblxuLmhlcm8tc2Nyb2xsLWJ0bjpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1zY2hlbWUtZm9jdXMtcmluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLXVpLXN1cmZhY2UtaG92ZXItYmcpO1xufVxuXG4uZGFyayAuaGVyby1zY3JvbGwtYnRuOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1ob3Zlci1iZy1kYXJrKTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA2LiBDQVRBTE9HXG4gICBDYXRhbG9nIHNlY3Rpb24gaGVhZGVyLCBzdGlja3kgYmFyLCBmaWx0ZXIgYmFyLCBzZWFyY2ggaW5wdXRzLFxuICAgZmlsdGVyIHBpbGxzLCB2aWV3IHRvZ2dsZSwgZGVza3RvcCBmaWx0ZXJzLCByZXN1bHRzIGJhciwgbW9iaWxlIHN1bW1hcnlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXRhbG9nIHtcbiAgcGFkZGluZzogM3JlbSAxcmVtIDRyZW07XG4gIG1heC13aWR0aDogMTYwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5jYXRhbG9nIHsgcGFkZGluZzogNXJlbSAxLjVyZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuY2F0YWxvZyB7IHBhZGRpbmctbGVmdDogMnJlbTsgcGFkZGluZy1yaWdodDogMnJlbTsgfVxufVxuXG4uY2F0YWxvZy1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5jYXRhbG9nLWhlYWRlciB7IG1hcmdpbi1ib3R0b206IDIuNXJlbTsgfSB9XG5cbi5jYXRhbG9nLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS43NXJlbSwgNHZ3LCAyLjc1cmVtKTtcbn1cblxuLmRhcmsgLmNhdGFsb2ctdGl0bGUgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAuY2F0YWxvZy10aXRsZSB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0gfVxuXG4uY2F0YWxvZy1zdWJ0aXRsZSB7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWF4LXdpZHRoOiA0MnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5kYXJrIC5jYXRhbG9nLXN1YnRpdGxlIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmNhdGFsb2ctc3VidGl0bGUgeyBmb250LXNpemU6IDEuMTI1cmVtOyB9IH1cblxuLyogLS0tIFN0aWNreSBCYXIgLS0tICovXG4uc3RpY2t5LWJhciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbiAgei1pbmRleDogMzA7XG4gIG1hcmdpbi1sZWZ0OiAtMXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAtMXJlbTtcbiAgcGFkZGluZzogMC42MjVyZW0gMXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5zdGlja3ktYmFyIHsgbWFyZ2luLWxlZnQ6IC0xLjVyZW07IG1hcmdpbi1yaWdodDogLTEuNXJlbTsgfVxufVxuXG4uc3RpY2t5LWJhci1oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHZpc2liaWxpdHkgMHMgbGluZWFyIHZhcigtLWR1cmF0aW9uLXNsb3cpO1xufVxuXG4uc3RpY2t5LWJhci12aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdmlzaWJpbGl0eSAwcyBsaW5lYXIgMHM7XG59XG5cbi5zdGlja3ktYmFyLWhpZGRlbiAuZmlsdGVyLWJhciB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbn1cblxuLnN0aWNreS1iYXItdmlzaWJsZSAuZmlsdGVyLWJhciB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbn1cblxuLnN0aWNreS1iYXItaW5uZXIge1xuICBtYXgtd2lkdGg6IDQ4cmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIHBhZGRpbmc6IDAuNjI1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc3RpY2t5LWJhci1pbm5lciB7IGdhcDogMC43NXJlbTsgcGFkZGluZzogMC43NXJlbTsgfVxufVxuXG4vKiAtLS0gRmlsdGVyIEJhciAtLS0gKi9cbi5maWx0ZXItYmFyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZmlsdGVyLWJhci1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZpbHRlci1iYXItYm9yZGVyKTtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1zbSk7XG59XG5cbi5maWx0ZXItYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcbiAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgcGFkZGluZzogMCA1cHg7XG59XG5cbi8qIC0tLSBGaWx0ZXIgQnV0dG9uIC0tLSAqL1xuLmZpbHRlci1idG4ge1xuICB3aWR0aDogMi41cmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIpO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmZpbHRlci1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIpOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuZmlsdGVyLWJ0biB7IHdpZHRoOiAyLjc1cmVtOyBoZWlnaHQ6IDIuNzVyZW07IH1cbn1cblxuLmZpbHRlci1idG4tYmFkZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTAuMzc1cmVtO1xuICByaWdodDogLTAuMzc1cmVtO1xuICBtaW4td2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgZm9udC1zaXplOiAwLjU2MjVyZW07XG59XG5cbi8qIC0tLSBTZWFyY2ggRmllbGQgKHNoYXJlZCBjb21wb25lbnQpIC0tLVxuICAgQkVNLXN0cnVjdHVyZWQgc2VhcmNoIGlucHV0IHVzZWQgYnkgYm90aCBzdGlja3kgYmFyIGFuZCBkZXNrdG9wIGJhci5cbiAgIFZhcmlhbnQgbW9kaWZpZXJzOiAuc2VhcmNoLWZpZWxkLS1zdGlja3kgKGNvbXBhY3QpIC8gLnNlYXJjaC1maWVsZC0tZGVza3RvcCAoZnVsbC1zaXplKVxuICAgRWxpbWluYXRlcyB0aGUgcHJldmlvdXMgLnN0aWNreS1zZWFyY2gtKiAvIC5kZXNrdG9wLXNlYXJjaC0qIGR1cGxpY2F0aW9uLiAqL1xuXG4uc2VhcmNoLWZpZWxkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWFyY2gtZmllbGRfX2ljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGFyayAuc2VhcmNoLWZpZWxkX19pY29uIHtcbiAgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTtcbn1cblxuLnNlYXJjaC1maWVsZF9faW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2VhcmNoLWJnKTtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1zZWFyY2gtYm9yZGVyKTtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBib3gtc2hhZG93IHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLnNlYXJjaC1maWVsZF9faW5wdXQ6OnBsYWNlaG9sZGVyIHsgY29sb3I6IHZhcigtLXRleHQtcGxhY2Vob2xkZXIpOyB9XG5cbi5zZWFyY2gtZmllbGRfX2lucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zZWFyY2gtZm9jdXMtYm9yZGVyKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2VhcmNoLWZvY3VzLWJnKTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXNjaGVtZS1zZWFyY2gtZm9jdXMtcmluZy1zdHJvbmcpO1xufVxuXG4uc2VhcmNoLWZpZWxkX19jbGVhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC0zMDApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLyog4pSA4pSAIFN0aWNreSB2YXJpYW50IChjb21wYWN0LCBtb2JpbGUtZmlyc3QpIOKUgOKUgCAqL1xuLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2ljb24ge1xuICBsZWZ0OiAwLjc1cmVtO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xufVxuXG4uc2VhcmNoLWZpZWxkLS1zdGlja3kgLnNlYXJjaC1maWVsZF9faW5wdXQge1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbSAwLjVyZW0gMi4yNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2lucHV0OmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXNjaGVtZS1zZWFyY2gtZm9jdXMtcmluZy1zdHJvbmcpO1xufVxuXG4uZGFyayAuc2VhcmNoLWZpZWxkLS1zdGlja3kgLnNlYXJjaC1maWVsZF9faW5wdXQ6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tc2NoZW1lLXNlYXJjaC1mb2N1cy1yaW5nLXN0cm9uZyk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc2VhcmNoLWZpZWxkLS1zdGlja3kgLnNlYXJjaC1maWVsZF9faW5wdXQgeyBwYWRkaW5nOiAwLjYyNXJlbSAwLjc1cmVtIDAuNjI1cmVtIDIuMjVyZW07IH1cbn1cblxuLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2NsZWFyIHtcbiAgcmlnaHQ6IDAuNjI1cmVtO1xuICBwYWRkaW5nOiAwLjEyNXJlbTtcbn1cblxuLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2NsZWFyOmhvdmVyIHsgY29sb3I6IHZhcigtLW5ldXRyYWwtNTAwKTsgfVxuLmRhcmsgLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2NsZWFyOmhvdmVyIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTsgfVxuXG4vKiDilIDilIAgRGVza3RvcCB2YXJpYW50IChmdWxsLXNpemUsIGxhcmdlciBpY29ucyAmIHBhZGRpbmcpIOKUgOKUgCAqL1xuLnNlYXJjaC1maWVsZC0tZGVza3RvcCAuc2VhcmNoLWZpZWxkX19pY29uIHtcbiAgbGVmdDogMC44NzVyZW07XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG59XG5cbi5zZWFyY2gtZmllbGQtLWRlc2t0b3AgLnNlYXJjaC1maWVsZF9faW5wdXQge1xuICBwYWRkaW5nOiAwLjYyNXJlbSAxcmVtIDAuNjI1cmVtIDIuNzVyZW07XG4gIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbn1cblxuLnNlYXJjaC1maWVsZC0tZGVza3RvcCAuc2VhcmNoLWZpZWxkX19pbnB1dDpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmcpO1xufVxuXG4uc2VhcmNoLWZpZWxkLS1kZXNrdG9wIC5zZWFyY2gtZmllbGRfX2NsZWFyIHtcbiAgcmlnaHQ6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuMjVyZW07XG59XG5cbi5zZWFyY2gtZmllbGQtLWRlc2t0b3AgLnNlYXJjaC1maWVsZF9fY2xlYXI6aG92ZXIgeyBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOyB9XG4uZGFyayAuc2VhcmNoLWZpZWxkLS1kZXNrdG9wIC5zZWFyY2gtZmllbGRfX2NsZWFyOmhvdmVyIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMjAwKTsgfVxuXG4vKiAtLS0gTW9iaWxlIEZpbHRlcnMgU3VtbWFyeSAtLS0gKi9cbi5tb2JpbGUtZmlsdGVycy1zdW1tYXJ5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBtYXJnaW4tdG9wOiAwLjM3NXJlbTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApO1xufVxuXG4ubW9iaWxlLWZpbHRlcnMtc3VtbWFyeS1kb3Qge1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC0zMDApO1xufVxuXG4uZGFyayAubW9iaWxlLWZpbHRlcnMtc3VtbWFyeSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7IH1cblxuLm1vYmlsZS1maWx0ZXJzLXN1bW1hcnkgYnV0dG9uIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIHRleHQtdW5kZXJsaW5lLW9mZnNldDogMnB4O1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLm1vYmlsZS1maWx0ZXJzLXN1bW1hcnkgeyBkaXNwbGF5OiBub25lOyB9IH1cblxuLyogLS0tIERlc2t0b3AgSW5saW5lIEZpbHRlcnMgLS0tICovXG4uZGVza3RvcC1maWx0ZXJzIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmRlc2t0b3AtZmlsdGVycyB7IGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLmRlc2t0b3AtZmlsdGVycyA+ICogKyAqIHsgbWFyZ2luLXRvcDogMS4yNXJlbTsgfVxuXG4uZmlsdGVyLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5maWx0ZXItcm93LWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApO1xuICBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtO1xufVxuXG4uZGFyayAuZmlsdGVyLXJvdy1sYWJlbCB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7IH1cblxuLyogLS0tIERlc2t0b3AgU2VhcmNoIEJhciAoc2VhcmNoIGZpZWxkICsgY29udHJvbHMpIC0tLSAqL1xuLyogTWF0Y2hlcyB0aGUgc3RpY2t5IGJhcidzIGZpbHRlci1iYXIgZ2xhc3MgbW9ycGhpc20gcGF0dGVybiAqL1xuLmRlc2t0b3Atc2VhcmNoLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC43NXJlbTtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLmRlc2t0b3Atc2VhcmNoLWNvbnRyb2xzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucGlsbC1jb3VudCB7XG4gIG1hcmdpbi1sZWZ0OiAwLjM3NXJlbTtcbiAgb3BhY2l0eTogMC41NTtcbn1cblxuLyogLS0tIERlc2t0b3AgUmVzdWx0cyBCYXIgLS0tICovXG4uZGVza3RvcC1yZXN1bHRzLWJhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmRlc2t0b3AtcmVzdWx0cy1iYXIgeyBkaXNwbGF5OiBmbGV4OyB9IH1cblxuLmRlc2t0b3AtcmVzdWx0cy1jb3VudCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG59XG5cbi5kYXJrIC5kZXNrdG9wLXJlc3VsdHMtY291bnQgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5kZXNrdG9wLWNsZWFyLWJ0biB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmRlc2t0b3AtY2xlYXItYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuXG4vKiAtLS0gRmlsdGVyIFBpbGxzIC0tLSAqL1xuLmNhdGVnb3J5LXBpbGwsIC5icmFuZC1waWxsIHtcbiAgcGFkZGluZzogMC41cmVtIDEuMTI1cmVtO1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBjb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGJvcmRlci1jb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWluLWhlaWdodDogNDBweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jYXRlZ29yeS1waWxsLS1hY3RpdmUsIC5icmFuZC1waWxsLS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHZhcigtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyksIGluc2V0IDAgMXB4IDAgdmFyKC0tYnRuLWluc2V0KTtcbn1cblxuLmNhdGVnb3J5LXBpbGwtLWluYWN0aXZlLCAuYnJhbmQtcGlsbC0taW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1waWxsLWluYWN0aXZlLWJnKTtcbiAgY29sb3I6IHZhcigtLXBpbGwtaW5hY3RpdmUtdGV4dCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBpbGwtaW5hY3RpdmUtYm9yZGVyKTtcbn1cblxuXG4uY2F0ZWdvcnktcGlsbC0taW5hY3RpdmU6aG92ZXIsIC5icmFuZC1waWxsLS1pbmFjdGl2ZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWhvdmVyLWJnKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIpO1xufVxuXG4vKiBCcmFuZCBwaWxscyB1c2UgLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIgb24gaG92ZXIsIHNhbWUgYXMgY2F0ZWdvcnkgcGlsbHMsXG4gICBzbyBib3RoIGZvbGxvdyB0aGUgYWN0aXZlIHRoZW1lIGNvbnNpc3RlbnRseS4gKi9cblxuXG4vKiAtLS0gVmlldyBUb2dnbGUgLS0tICovXG4udmlldy10b2dnbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tcGlsbC1pbmFjdGl2ZS1iZyk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDNweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcGlsbC1pbmFjdGl2ZS1ib3JkZXIpO1xufVxuXG4udmlldy10b2dnbGUtYnRuIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjYyNXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLXdpZHRoOiA0MHB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xufVxuXG4udmlldy10b2dnbGUtYnRuLS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tYWNjZW50LXByaW1hcnktc2hhZG93KTtcbn1cblxuLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmU6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1waWxsLWluYWN0aXZlLWJnKTsgfVxuLmRhcmsgLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmUgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cblxuLyogU3RpY2t5IGJhciB2aWV3IHRvZ2dsZSDigJQgY29tcGFjdCBvbiBtb2JpbGUgKi9cbi5zdGlja3ktYmFyIC52aWV3LXRvZ2dsZSB7IHBhZGRpbmc6IDJweDsgZmxleC1zaHJpbms6IDA7IH1cbi5zdGlja3ktYmFyIC52aWV3LXRvZ2dsZS1idG4geyBtaW4td2lkdGg6IDM0cHg7IG1pbi1oZWlnaHQ6IDM0cHg7IHBhZGRpbmc6IDZweDsgfVxuLnN0aWNreS1iYXIgLnZpZXctdG9nZ2xlLWJ0biBzdmcgeyB3aWR0aDogMTRweDsgaGVpZ2h0OiAxNHB4OyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc3RpY2t5LWJhciAudmlldy10b2dnbGUtYnRuIHsgbWluLXdpZHRoOiAzOHB4OyBtaW4taGVpZ2h0OiAzOHB4OyBwYWRkaW5nOiA4cHg7IH1cbiAgLnN0aWNreS1iYXIgLnZpZXctdG9nZ2xlLWJ0biBzdmcgeyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNy4gUFJPRFVDVCBDQVJEXG4gICBQcm9kdWN0IGNhcmQgbGF5b3V0LCBpbWFnZSB3cmFwLCBob3ZlciBvdmVybGF5LCBjb250ZW50LCB0YWdzLCBuYW1lLFxuICAgYnV0dG9ucywgZmVhdHVyZWQgYmFkZ2UsIHNjcm9sbGluZyBkZXNjcmlwdGlvbiwgZmx1aWQgZ3JpZHMsIGVtcHR5IHN0YXRlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gUHJvZHVjdCBDYXJkIC0tLSAqL1xuLnByb2R1Y3QtY2FyZCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgY29udGFpbjogbGF5b3V0O1xufVxuXG4ucHJvZHVjdC1jYXJkLmxpc3QtdmlldyB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLWltYWdlLXdyYXAtYmcpO1xuICBmbGV4LXNocmluazogMDtcbiAgYXNwZWN0LXJhdGlvOiAxO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRhcmsgLnByb2R1Y3QtY2FyZC1pbWFnZS13cmFwIHsgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLWltYWdlLXdyYXAtYmctZGFyayk7IH1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtY2FyZC1pbWFnZS13cmFwIHtcbiAgd2lkdGg6IDdyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgeyB3aWR0aDogMTByZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCB7IHdpZHRoOiAxNHJlbTsgfVxufVxuXG4ucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgcGljdHVyZSB7XG4gIGRpc3BsYXk6IGNvbnRlbnRzO1xufVxuXG4ucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGVhc2Utb3V0O1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4ucHJvZHVjdC1jYXJkOmhvdmVyIC5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCBpbWcge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4vKiBJbWFnZSBlcnJvciBwbGFjZWhvbGRlciDigJQgYWJzb2x1dGVseSBwb3NpdGlvbmVkIHRvIG92ZXJsYXkgaW1hZ2UgYXJlYSAqL1xuLnByb2R1Y3QtY2FyZC1pbWFnZS1lcnJvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTMwMCk7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5kYXJrIC5wcm9kdWN0LWNhcmQtaW1hZ2UtZXJyb3IgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5wcm9kdWN0LWNhcmQtaW1hZ2UtZXJyb3ItdGV4dCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLnByb2R1Y3QtY2FyZC1ob3Zlci1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgdmFyKC0tc2NoZW1lLW92ZXJsYXktZ3JhZGllbnQpLCB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGFyayAucHJvZHVjdC1jYXJkLWhvdmVyLW92ZXJsYXkgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCB2YXIoLS1zY2hlbWUtb3ZlcmxheS1ncmFkaWVudC1kYXJrKSwgdHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTsgfVxuXG4ucHJvZHVjdC1jYXJkOmhvdmVyIC5wcm9kdWN0LWNhcmQtaG92ZXItb3ZlcmxheSB7IG9wYWNpdHk6IDE7IH1cblxuLyogLS0tIENhcmQgQ29udGVudCAtLS0gKi9cbi5wcm9kdWN0LWNhcmQtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuNXJlbTsgfSB9XG5cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDAuNzVyZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuMjVyZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuNXJlbTsgfVxufVxuXG4vKiAtLS0gVGFncyAtLS0gKi9cbi5wcm9kdWN0LXRhZ3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zNzVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLnRhZy1icmFuZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC42MjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTtcbn1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnRhZy1icmFuZCB7IGZvbnQtc2l6ZTogMC42MjVyZW07IHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTsgfVxuXG4udGFnLWNhdGVnb3J5IHtcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICBwYWRkaW5nOiAwLjEyNXJlbSAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtcHJpbWFyeSkgNTUlLCB2YXIoLS10ZXh0LW11dGVkKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIpIDUwJSwgdmFyKC0tZ2xhc3MtYm9yZGVyKSk7XG59XG5cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC50YWctY2F0ZWdvcnkgeyBmb250LXNpemU6IDAuNjI1cmVtOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2MzlweCkgeyAudGFnLWNhdGVnb3J5IHsgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qIC0tLSBQcm9kdWN0IE5hbWUgLS0tICovXG4ucHJvZHVjdC1uYW1lIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjM3NTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xufVxuXG4uZGFyayAucHJvZHVjdC1uYW1lIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLnByb2R1Y3QtbmFtZSB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgfSB9XG5cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LW5hbWUgeyBmb250LXNpemU6IDAuODc1cmVtOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1uYW1lIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG59XG5cbi8qIC0tLSBQcm9kdWN0IEJ1dHRvbnMgLS0tICovXG4ucHJvZHVjdC1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjYyNXJlbTtcbiAgbWFyZ2luLXRvcDogYXV0bztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWJ1dHRvbnMgeyBmbGV4LWRpcmVjdGlvbjogcm93OyBnYXA6IDAuNzVyZW07IH1cbn1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtYnV0dG9ucyAuYnRuLW1sLFxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtYnV0dG9ucyAuYnRuLXNob3BlZSB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1idXR0b25zIC5idG4tbWwsXG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWJ1dHRvbnMgLmJ0bi1zaG9wZWUge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIH1cbn1cblxuLyogLS0tIEZlYXR1cmVkIEJhZGdlIC0tLSAqL1xuLmZlYXR1cmVkLWJhZGdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuNzVyZW07XG4gIGxlZnQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1iYWRnZS1iZyk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDAuMzEyNXJlbSAwLjc1cmVtO1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4IHZhcigtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB6LWluZGV4OiAyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG59XG5cbi5mZWF0dXJlZC1iYWRnZSBzdmcge1xuICB3aWR0aDogMC42MjVyZW07XG4gIGhlaWdodDogMC42MjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBMaXN0LXZpZXc6IGNvbXBhY3QgYmFkZ2UgKi9cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5mZWF0dXJlZC1iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgdG9wOiAwLjM3NXJlbTtcbiAgbGVmdDogMC4zNzVyZW07XG59XG5cbi5mZWF0dXJlZC10ZXh0LWZ1bGwgeyBkaXNwbGF5OiBub25lOyB9XG4uZmVhdHVyZWQtdGV4dC1zaG9ydCB7IGRpc3BsYXk6IGlubGluZTsgfVxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5mZWF0dXJlZC10ZXh0LWZ1bGwgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbiAgLmZlYXR1cmVkLXRleHQtc2hvcnQgeyBkaXNwbGF5OiBub25lOyB9XG59XG5cbi8qIC0tLSBTY3JvbGxpbmcgRGVzY3JpcHRpb24gLS0tICovXG4uZGVzYy1zY3JvbGwtdmlld3BvcnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLWxpbmVzLCAzKSAqIDEuNmVtKTtcbiAgbWF4LWhlaWdodDogY2FsYyh2YXIoLS1saW5lcywgMykgKiAxLjZlbSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5kZXNjLXNjcm9sbC12aWV3cG9ydDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEuNGVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgdmFyKC0tZGVzYy1mYWRlKSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5kZXNjLXNjcm9sbC12aWV3cG9ydC5maXRzOjphZnRlciB7IG9wYWNpdHk6IDA7IH1cblxuLmRlc2Mtc2Nyb2xsLWlubmVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbn1cblxuLmRhcmsgLmRlc2Mtc2Nyb2xsLWlubmVyIHtcbiAgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTtcbn1cblxuLnByb2R1Y3QtY2FyZDpob3ZlciAuZGVzYy1zY3JvbGwtaW5uZXIub3ZlcmZsb3dzIHtcbiAgYW5pbWF0aW9uOiBzY3JvbGwtdGV4dCB2YXIoLS1zY3JvbGwtZHVyYXRpb24sIDRzKSBlYXNlLWluLW91dCAwLjNzIDEgYm90aDtcbn1cblxuLnByb2R1Y3QtY2FyZDpob3ZlciAuZGVzYy1zY3JvbGwtdmlld3BvcnQub3ZlcmZsb3dzOjphZnRlciB7IG9wYWNpdHk6IDA7IH1cblxuLyogLS0tIEZsdWlkIEdyaWRzIC0tLSAqL1xuLmZsdWlkLWdyaWQtcHJvZHVjdHMge1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IDEuMjVyZW07XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI2MHB4LCAxZnIpKTtcbn1cblxuLnByb2R1Y3QtbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMS4yNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5mbHVpZC1ncmlkLXByb2R1Y3RzIHsgZ2FwOiAxLjVyZW07IH1cbiAgLnByb2R1Y3QtbGlzdCB7IGdhcDogMS41cmVtOyB9XG59XG5cbi5mbHVpZC1ncmlkLXRydXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAxLjI1cmVtO1xufVxuXG4uZmx1aWQtZ3JpZC10cnVzdCA+ICoge1xuICBmbGV4OiAwIDEgMjYwcHg7XG4gIG1pbi13aWR0aDogMjIwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuZmx1aWQtZ3JpZC10cnVzdCB7IGdhcDogMS41cmVtOyB9XG59XG5cbi8qIC0tLSBFbXB0eSBTdGF0ZSAtLS0gKi9cbi5lbXB0eS1zdGF0ZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogNHJlbSAyLjVyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAuZW1wdHktc3RhdGUgeyBwYWRkaW5nOiA2cmVtIDIuNXJlbTsgfSB9XG5cbi5lbXB0eS1zdGF0ZS1pY29uIHsgZm9udC1zaXplOiAzcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9XG5cbi5lbXB0eS1zdGF0ZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmRhcmsgLmVtcHR5LXN0YXRlLXRpdGxlIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMjAwKTsgfVxuXG4uZW1wdHktc3RhdGUtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmRhcmsgLmVtcHR5LXN0YXRlLXRleHQgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5lbXB0eS1zdGF0ZS1idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmVtcHR5LXN0YXRlLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDguIERSQVdFUlxuICAgRmlsdGVyIGRyYXdlciBvdmVybGF5LCBwYW5lbCwgaGVhZGVyLCBzZWN0aW9ucywgZm9vdGVyLCBkcmF3ZXItb3BlbiBib2R5IHN0YXRlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gRHJhd2VyIE92ZXJsYXkgLS0tICovXG4uZHJhd2VyLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItb3ZlcmxheS1iZyk7XG4gIHotaW5kZXg6IDU5O1xuICBhbmltYXRpb246IGZhZGUtaW4gMC4yNXMgdmFyKC0tZWFzZS1vdXQpIGJvdGg7XG59XG5cbi5kcmF3ZXItb3ZlcmxheS0tY2xvc2luZyB7IGFuaW1hdGlvbjogb3ZlcmxheS1vdXQgMC4ycyB2YXIoLS1lYXNlLW91dCkgYm90aDsgfVxuXG4vKiAtLS0gRHJhd2VyIFBhbmVsIC0tLSAqL1xuLmRyYXdlci1wYW5lbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiA4NSU7XG4gIG1heC13aWR0aDogMzYwcHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWRyYXdlci1wYW5lbC1iZyk7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRyYXdlci1ib3JkZXIpO1xuICBib3gtc2hhZG93OiAwIDAgNDBweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTtcbiAgei1pbmRleDogNjA7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGFuaW1hdGlvbjogZHJhd2VyLWluIDAuM3MgdmFyKC0tZWFzZS1vdXQpIGJvdGg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG59XG5cbi5kcmF3ZXItcGFuZWwtLWNsb3NpbmcgeyBhbmltYXRpb246IGRyYXdlci1vdXQgMC4ycyB2YXIoLS1lYXNlLW91dCkgYm90aDsgfVxuXG4vKiAtLS0gRHJhd2VyIEhlYWRlciAtLS0gKi9cbi5kcmF3ZXItaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbn1cblxuLmRyYXdlci1oZWFkZXItbGVmdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC42MjVyZW07XG59XG5cbi5kcmF3ZXItaGVhZGVyLWljb24td3JhcCB7XG4gIHdpZHRoOiAyLjVyZW07XG4gIGhlaWdodDogMi41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1saWdodCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFjY2VudC1wcmltYXJ5LWJvcmRlcik7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmRyYXdlci1oZWFkZXItaWNvbi13cmFwOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTsgfVxuXG4uZHJhd2VyLWhlYWRlci1pY29uIHsgd2lkdGg6IDEuMTI1cmVtOyBoZWlnaHQ6IDEuMTI1cmVtOyB9XG5cbi5kcmF3ZXItdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTtcbn1cblxuLmRhcmsgLmRyYXdlci10aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTEwMCk7IH1cblxuLmRyYXdlci1maWx0ZXItYmFkZ2Uge1xuICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWluLXdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDAuNjI1cmVtO1xuICBwYWRkaW5nOiAwIDAuMzc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG59XG5cbi5kcmF3ZXItY2xvc2UtYnRuIHtcbiAgd2lkdGg6IDIuMjVyZW07XG4gIGhlaWdodDogMi4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItY2xvc2UtYmcpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBjb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5kYXJrIC5kcmF3ZXItY2xvc2UtYnRuLFxuW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdLmRhcmsgLmRyYXdlci1jbG9zZS1idG4geyBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItY2xvc2UtYmctZGFyayk7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTMwMCk7IH1cbi5kcmF3ZXItY2xvc2UtYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLW5ldXRyYWwtNzAwKTsgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpOyB9XG4uZGFyayAuZHJhd2VyLWNsb3NlLWJ0bjpob3ZlcixcbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIC5kcmF3ZXItY2xvc2UtYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgYmFja2dyb3VuZDogdmFyKC0tZHJhd2VyLWNsb3NlLWJnLWRhcmstaG92ZXIpOyB9XG5cbi8qIC0tLSBEcmF3ZXIgU2VjdGlvbnMgLS0tICovXG4uZHJhd2VyLXNlY3Rpb24geyBwYWRkaW5nOiAxcmVtIDFyZW0gMC41cmVtOyB9XG5cbi5kcmF3ZXItc2VjdGlvbi10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmRhcmsgLmRyYXdlci1zZWN0aW9uLXRpdGxlIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4uZHJhd2VyLXBpbGxzIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDAuNXJlbTsgfVxuXG4vKiAtLS0gRHJhd2VyIEZvb3RlciAtLS0gKi9cbi5kcmF3ZXItZm9vdGVyIHtcbiAgcGFkZGluZzogMXJlbTtcbiAgbWFyZ2luLXRvcDogYXV0bztcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWdsYXNzLWJvcmRlcik7XG59XG5cbi5kcmF3ZXItc3VibWl0LWJ0biB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3cpO1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5kcmF3ZXItc3VibWl0LWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuXG4vKiAtLS0gRHJhd2VyIE9wZW46IFByZXZlbnQgcGFnZSBzaGlmdCBvbiBmaXhlZCBlbGVtZW50cyAtLS0gKi9cbmJvZHkuZHJhd2VyLW9wZW4gLmRhcmstdG9nZ2xlIHtcbiAgcmlnaHQ6IGNhbGMoMS4yNXJlbSArIHZhcigtLXNjcm9sbGJhci1jb21wZW5zYXRpb24sIDBweCkpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDkuIFRSVVNUXG4gICBUcnVzdCBzZWN0aW9uLCBkaXZpZGVyLCBoZWFkZXIsIGNhcmRzLCBDVEFcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50cnVzdC1zZWN0aW9uIHtcbiAgcGFkZGluZzogNHJlbSAxcmVtO1xuICBtYXgtd2lkdGg6IDE2MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAudHJ1c3Qtc2VjdGlvbiB7IHBhZGRpbmc6IDVyZW0gMS41cmVtOyB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnRydXN0LXNlY3Rpb24geyBwYWRkaW5nLWxlZnQ6IDJyZW07IHBhZGRpbmctcmlnaHQ6IDJyZW07IH1cbn1cblxuLnRydXN0LWRpdmlkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC50cnVzdC1kaXZpZGVyIHsgbWFyZ2luLWJvdHRvbTogM3JlbTsgfSB9XG5cbi50cnVzdC1kaXZpZGVyLWxpbmUge1xuICBmbGV4OiAxO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdmFyKC0tc2NoZW1lLXRydXN0LWRpdmlkZXIpLCB0cmFuc3BhcmVudCk7XG59XG5cbi5kYXJrIC50cnVzdC1kaXZpZGVyLWxpbmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCB2YXIoLS1zY2hlbWUtdHJ1c3QtZGl2aWRlci1kYXJrKSwgdHJhbnNwYXJlbnQpOyB9XG5cbi50cnVzdC1kaXZpZGVyLWNpcmNsZSB7XG4gIHdpZHRoOiAyLjVyZW07XG4gIGhlaWdodDogMi41cmVtO1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLXVpLXN1cmZhY2UtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS11aS1zdXJmYWNlLWJvcmRlcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGFyayAudHJ1c3QtZGl2aWRlci1jaXJjbGUgeyBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspOyBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspOyB9XG5cbi50cnVzdC1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuLnRydXN0LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS41cmVtLCAzdncsIDJyZW0pO1xufVxuXG4uZGFyayAudHJ1c3QtdGl0bGUgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG5cbi50cnVzdC1zdWJ0aXRsZSB7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG1heC13aWR0aDogMjhyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZGFyayAudHJ1c3Qtc3VidGl0bGUgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAudHJ1c3Qtc3VidGl0bGUgeyBmb250LXNpemU6IDFyZW07IH0gfVxuXG4vKiAtLS0gVHJ1c3QgQ2FyZCAtLS0gKi9cbi50cnVzdC1jYXJkIHtcbiAgcGFkZGluZzogMS41cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAudHJ1c3QtY2FyZCB7IHBhZGRpbmc6IDEuNzVyZW07IH0gfVxuXG4udHJ1c3QtY2FyZC1pY29uLXdyYXAge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAzLjVyZW07XG4gIGhlaWdodDogMy41cmVtO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLnRydXN0LWNhcmQtaWNvbi13cmFwLS1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWJvcmRlcik7XG59XG5cbi50cnVzdC1jYXJkLWljb24td3JhcC0tc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXNlY29uZGFyeS1saWdodCk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5LWJvcmRlcik7XG59XG5cbi50cnVzdC1jYXJkLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uZGFyayAudHJ1c3QtY2FyZC10aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTEwMCk7IH1cblxuLnRydXN0LWNhcmQtdGV4dCB7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbn1cblxuLmRhcmsgLnRydXN0LWNhcmQtdGV4dCB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7IH1cblxuLyogLS0tIFRydXN0IENUQSAtLS0gKi9cbi50cnVzdC1jdGEge1xuICBtYXJnaW4tdG9wOiAyLjVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRydXN0LWN0YS1wYW5lbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMXJlbSAycmVtO1xufVxuXG4udHJ1c3QtY3RhLXRleHQge1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uZGFyayAudHJ1c3QtY3RhLXRleHQgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi50cnVzdC1jdGEtbGluayB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlO1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnRydXN0LWN0YS1saW5rOmhvdmVyIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEwLiBGT09URVJcbiAgIFNpdGUgZm9vdGVyIGdyaWQsIGJyYW5kIGNvbHVtbiwgbGlua3MsIHNlY3VyaXR5IHRleHQsIGJvdHRvbSBiYXIsXG4gICBkYXJrIG1vZGUgdG9nZ2xlIEZBQlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNpdGUtZm9vdGVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZm9vdGVyLWJnKTtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci10ZXh0KTtcbiAgcGFkZGluZzogM3JlbSAxLjI1cmVtIDJyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc2l0ZS1mb290ZXIgeyBwYWRkaW5nLXRvcDogMy41cmVtOyBwYWRkaW5nLWxlZnQ6IDEuNXJlbTsgcGFkZGluZy1yaWdodDogMS41cmVtOyB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnNpdGUtZm9vdGVyIHsgcGFkZGluZy1sZWZ0OiAycmVtOyBwYWRkaW5nLXJpZ2h0OiAycmVtOyB9XG59XG5cbi5mb290ZXItaW5uZXIgeyBtYXgtd2lkdGg6IDE2MDBweDsgbWFyZ2luOiAwIGF1dG87IH1cblxuLmZvb3Rlci1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmZvb3Rlci1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyB9IH1cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHsgLmZvb3Rlci1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjsgfSB9XG5cbi5mb290ZXItYnJhbmQtdGl0bGUge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLmZvb3Rlci1sb2dvLWltZyB7XG4gIHdpZHRoOiAxLjc1cmVtO1xuICBoZWlnaHQ6IDEuNzVyZW07XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG59XG5cbi5mb290ZXItYnJhbmQtaHViIHsgY29sb3I6IHZhcigtLWZvb3Rlci10ZXh0KTsgfVxuLmZvb3Rlci1icmFuZC1yYWl6IHsgY29sb3I6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTsgfVxuXG4uZm9vdGVyLWJyYW5kLWRlc2Mge1xuICBjb2xvcjogdmFyKC0tZm9vdGVyLW11dGVkKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xufVxuXG4uZm9vdGVyLWhlYWRpbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4uZm9vdGVyLWxpbmtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IDAuNXJlbSAxLjI1cmVtO1xufVxuXG4uZm9vdGVyLWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmZvb3Rlci1saW5rOmhvdmVyIHsgY29sb3I6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTsgfVxuXG4uZm9vdGVyLWxpbmstaWNvbiB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWZvb3Rlci1pY29uKTtcbn1cblxuLmZvb3Rlci1zZWN1cml0eS10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmZvb3Rlci1tYXJrZXRwbGFjZS1iYWRnZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS1mb290ZXItbXV0ZWQpO1xufVxuXG4uZm9vdGVyLW1hcmtldHBsYWNlLWJhZGdlIHtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNjI1cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJvcmRlcik7XG4gIGNvbG9yOiB2YXIoLS1zY2hlbWUtZm9vdGVyLWFjY2VudCk7XG59XG5cbi5mb290ZXItbWFya2V0cGxhY2UtcGx1cyB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmZvb3Rlci1lbWFpbCB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbn1cblxuLmZvb3Rlci1ib3R0b20ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc2NoZW1lLWZvb3Rlci1ib3JkZXIpO1xuICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZvb3Rlci1jb3B5cmlnaHQge1xuICBjb2xvcjogdmFyKC0tZm9vdGVyLW11dGVkKTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4uZm9vdGVyLWRpc2NsYWltZXIge1xuICBjb2xvcjogdmFyKC0tZm9vdGVyLWRpc2NsYWltZXIpO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIG1heC13aWR0aDogMjhyZW07XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTAuIERBUksgTU9ERSBUT0dHTEUgKEZBQikgJiBDT0xPUiBTQ0hFTUUgUElDS0VSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmRhcmstdG9nZ2xlIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDEuMjVyZW07XG4gIHJpZ2h0OiAxLjI1cmVtO1xuICB6LWluZGV4OiA1MDtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS10b2dnbGUtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10b2dnbGUtYm9yZGVyKTtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tY2hyb21lLXNoYWRvdy1tZCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG59XG5cbi5kYXJrLXRvZ2dsZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7XG59XG5cbi5kYXJrLXRvZ2dsZTphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpOyB9XG5cbi5kYXJrIC5kYXJrLXRvZ2dsZSxcbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIC5kYXJrLXRvZ2dsZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXRvZ2dsZS1iZy1kYXJrKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10b2dnbGUtYm9yZGVyLWRhcmspO1xuICBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LWRhcmspO1xufVxuXG4uZGFyay10b2dnbGUtaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbn1cblxuLyogU3VuIHZpc2libGUgaW4gZGFyayBtb2RlLCBoaWRkZW4gaW4gbGlnaHQgKi9cbi5kYXJrLXRvZ2dsZS1pY29uLS1zdW4ge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgc2NhbGUoMC41KTtcbn1cblxuLmRhcmsgLmRhcmstdG9nZ2xlLWljb24tLXN1biB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogcm90YXRlKDApIHNjYWxlKDEpO1xufVxuXG4vKiBNb29uIHZpc2libGUgaW4gbGlnaHQgbW9kZSwgaGlkZGVuIGluIGRhcmsgKi9cbi5kYXJrLXRvZ2dsZS1pY29uLS1tb29uIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMCkgc2NhbGUoMSk7XG59XG5cbi5kYXJrIC5kYXJrLXRvZ2dsZS1pY29uLS1tb29uIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKSBzY2FsZSgwLjUpO1xufVxuXG4vKiDilIDilIAgTG9uZy1wcmVzcyBoaW50IHB1bHNlIG9uIHRvZ2dsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbi5kYXJrLXRvZ2dsZVtkYXRhLXNjaGVtZS1waWNrZXItaGludF0ge1xuICBhbmltYXRpb246IHNjaGVtZS1oaW50LXB1bHNlIDAuNnMgZWFzZTtcbn1cbkBrZXlmcmFtZXMgc2NoZW1lLWhpbnQtcHVsc2Uge1xuICAwJSAgIHsgYm94LXNoYWRvdzogMCAwIDAgMCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3cpOyB9XG4gIDcwJSAgeyBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHRyYW5zcGFyZW50OyB9XG4gIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMCAwIHRyYW5zcGFyZW50OyB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTIuIENPTE9SIFNDSEVNRSBQSUNLRVJcbiAgIFBvcHVwIHBhbmVsIGZvciBzZWxlY3RpbmcgY29sb3Igc2NoZW1lcywgdHJpZ2dlcmVkIGJ5IGxvbmctcHJlc3NcbiAgIG9uIHRoZSBkYXJrL2xpZ2h0IG1vZGUgdG9nZ2xlIEZBQlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tIERyb3Bkb3duIFBhbmVsIChzaGFyZWQgYmFzZSkgLS0tXG4gICBHbGFzcyBtb3JwaGlzbSBwb3B1cCB3aXRoIHNob3cvaGlkZSB0cmFuc2l0aW9uLlxuICAgVXNlZCBieSBib3RoIC5zY2hlbWUtcGlja2VyIGFuZCAucGVyLXBhZ2UtcGFuZWwuXG4gICBWYXJpYW50IHBvc2l0aW9uaW5nIGlzIGFwcGxpZWQgdmlhIHRoZSBjb25jcmV0ZSBjb21wb25lbnQgY2xhc3Nlcy4gKi9cblxuLmRyb3Bkb3duLXBhbmVsIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nbGFzcy1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICBib3gtc2hhZG93OiAwIDAgMzJweCB2YXIoLS1jaHJvbWUtc2hhZG93LWxnKTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KSBzY2FsZSgwLjk3KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdmlzaWJpbGl0eSAwcyBsaW5lYXIgdmFyKC0tZHVyYXRpb24tc2xvdyk7XG59XG5cbi5kcm9wZG93bi1wYW5lbC5pcy1vcGVuIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB2aXNpYmlsaXR5IDBzIGxpbmVhciAwcztcbn1cblxuLmRyb3Bkb3duLW9wdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjYyNXJlbSAwLjc1cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBib3JkZXI6IDEuNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlO1xufVxuXG4uZHJvcGRvd24tb3B0aW9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpO1xufVxuXG4uZHJvcGRvd24tb3B0aW9uLmlzLWFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1ob3Zlci1iZyk7XG59XG5cbi5kcm9wZG93bi10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xufVxuXG4uc2NoZW1lLXBpY2tlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiA1cmVtO1xuICByaWdodDogMS4yNXJlbTtcbiAgei1pbmRleDogNDk7XG4gIHdpZHRoOiAyNjBweDtcbiAgcGFkZGluZzogMXJlbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkgc2NhbGUoMC45NSk7XG59XG5cbi5zY2hlbWUtcGlja2VyLXRpdGxlIHtcbiAgLyogLmRyb3Bkb3duLXRpdGxlIGlzIGluaGVyaXRlZCDigJQgZXh0ZW5kcyB3aXRoIHNwYWNpbmcgKi9cbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLnNjaGVtZS1waWNrZXItbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC4zNzVyZW07XG59XG5cbi5zY2hlbWUtb3B0aW9uIHtcbiAgLyogLmRyb3Bkb3duLW9wdGlvbiBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBmbGV4IGxheW91dCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG59XG5cbi5zY2hlbWUtb3B0aW9uLXN3YXRjaGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAzcHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2NoZW1lLXN3YXRjaCB7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2NoZW1lLXN3YXRjaC1ib3JkZXIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnNjaGVtZS1vcHRpb24taW5mbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1pbi13aWR0aDogMDtcbn1cblxuLnNjaGVtZS1vcHRpb24tbmFtZSB7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uc2NoZW1lLW9wdGlvbi1kZXNjIHtcbiAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5zY2hlbWUtb3B0aW9uLWNoZWNrIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIG9wYWNpdHk6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2NoZW1lLW9wdGlvbi5pcy1hY3RpdmUgLnNjaGVtZS1vcHRpb24tY2hlY2sge1xuICBvcGFjaXR5OiAxO1xufVxuIiwiLyog4pSA4pSAIEFsdGVybmF0ZSBzY2hlbWUgb3ZlcnJpZGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgT25seSBydWxlcyB3aGVyZSB0aGUgZGVzaXJlZCBjb2xvciBkaWZmZXJzIGZyb20gd2hhdFxuICAgdmFyKC0tYWNjZW50LXByaW1hcnkpIGFuZCB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5KSByZXNvbHZlIHRvXG4gICBpbiB0aGUgYWx0ZXJuYXRlIGNvbnRleHQuIE1vc3Qgc3dpdGNoaW5nIGlzIGhhbmRsZWQgYnkgdG9rZW5zLlxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi8qIENhcmQgc2hhZG93cyAqL1xuW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdIC5maWx0ZXItYmFyIHtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2FyZC1zaGFkb3cpO1xufVxuXG4vKiBTZWxlY3Rpb24gKi9cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXSA6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH1cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIDo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tc2VsZWN0aW9uLWJnLWRhcmspOyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG5cbi8qIENpcmN1bGFyIGdsYXNzIGVsZW1lbnRzIOKAlCBtYXRjaCB0aGUgc2NoZW1lLXRpbnRlZCBnbGFzcyBib3JkZXIgc28gdGhleSdyZVxuICAgY29uc2lzdGVudCB3aXRoIGdsYXNzLWNhcmQgLyBnbGFzcy1wYW5lbCBpbiB0aGUgYWx0IHRoZW1lICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0gLmhlcm8tc2Nyb2xsLWJ0biAgIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nbGFzcy1ib3JkZXIpOyB9XG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0gLnRydXN0LWRpdmlkZXItY2lyY2xlIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nbGFzcy1ib3JkZXIpOyB9XG4vKiBkYXJrLXRvZ2dsZTogbGlnaHQtbW9kZSBvbmx5IOKAlCB0aGUgYWx0LmRhcmsgc3RhdGUgYWxyZWFkeSB1c2VzIHRyYW5zcGFyZW50IHdoaXRlICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl06bm90KC5kYXJrKSAuZGFyay10b2dnbGUgeyBib3JkZXItY29sb3I6IHZhcigtLWdsYXNzLWJvcmRlcik7IH1cblxuLyogQWx0IGRhcmsgbW9kZTogaGVybyBzY3JvbGwgYnV0dG9uIGNvbnNpc3RlbnQgd2l0aCBkZWZhdWx0IGRhcmsgKi9cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIC5oZXJvLXNjcm9sbC1idG4ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspO1xuICBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4vKiBBbHQgZGFyayBtb2RlOiB0cnVzdCBkaXZpZGVyIGNpcmNsZSBjb25zaXN0ZW50IHdpdGggZGVmYXVsdCBkYXJrICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayAudHJ1c3QtZGl2aWRlci1jaXJjbGUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspO1xuICBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspO1xufVxuXG4vKiDilIDilIAgQWx0ZXJuYXRlIERhcms6IENvbXBvbmVudCBvdmVycmlkZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi8qIERhcmsgdG9nZ2xlIEZBQiDigJQgYWxyZWFkeSBjb21iaW5lZCB3aXRoIGRlZmF1bHQgZGFyayB2aWEgc2VsZWN0b3IgZ3JvdXBpbmcgKi9cblxuLyogTG9uZy1wcmVzcyBoaW50IHB1bHNlIOKAlCByZXVzZXMgc2NoZW1lLWhpbnQtcHVsc2Uga2V5ZnJhbWUgKGlkZW50aWNhbCB2YWx1ZXM7XG4gICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyByZXNvbHZlcyBjb3JyZWN0bHkgcGVyLXRoZW1lIGF1dG9tYXRpY2FsbHkpICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayAuZGFyay10b2dnbGVbZGF0YS1zY2hlbWUtcGlja2VyLWhpbnRdIHtcbiAgYW5pbWF0aW9uOiBzY2hlbWUtaGludC1wdWxzZSAwLjZzIGVhc2U7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTEuIDQwNCBQQUdFXG4gICBOb3QgZm91bmQgcGFnZSBzdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ub3QtZm91bmQge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgbWluLWhlaWdodDogMTAwZHZoO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMnJlbSAxLjI1cmVtO1xufVxuXG4ubm90LWZvdW5kLWNvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5ub3QtZm91bmQtZ2xhc3Mge1xuICBwYWRkaW5nOiAzcmVtIDJyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm5vdC1mb3VuZC1pY29uIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4ubm90LWZvdW5kLXRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gIGZvbnQtc2l6ZTogY2xhbXAoNHJlbSwgMTB2dywgNnJlbSk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5cbi5ub3QtZm91bmQtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmRhcmsgLm5vdC1mb3VuZC10ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG4ubm90LWZvdW5kLXN1YnRleHQge1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApO1xuICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmRhcmsgLm5vdC1mb3VuZC1zdWJ0ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4ubm90LWZvdW5kLWJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB3aWR0aDogYXV0bztcbiAgcGFkZGluZzogMC44NzVyZW0gMS43NXJlbTtcbn1cblxuLyog4pSA4pSAIFBhZ2luYXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5wYWdlLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKiBUcmlnZ2VyIGJ1dHRvbiDigJQgbWF0Y2hlcyB2aWV3LXRvZ2dsZSBjb250YWluZXIgc3R5bGUgKi9cbi5wZXItcGFnZS13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucGVyLXBhZ2UtdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDAgMC42MjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXBpbGwtaW5hY3RpdmUtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1waWxsLWluYWN0aXZlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5wZXItcGFnZS10cmlnZ2VyOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cblxuLnBlci1wYWdlLXRyaWdnZXJbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpO1xufVxuXG4ucGVyLXBhZ2UtY2hldnJvbiB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG59XG5cbi5wZXItcGFnZS10cmlnZ2VyW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIC5wZXItcGFnZS1jaGV2cm9uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLyogUGFuZWwg4oCUIG1pcnJvcnMgLnNjaGVtZS1waWNrZXIgKi9cbi5wZXItcGFnZS1wYW5lbCB7XG4gIC8qIC5kcm9wZG93bi1wYW5lbCBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBwb3NpdGlvbmluZyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgMC41cmVtKTtcbiAgcmlnaHQ6IDA7XG4gIHotaW5kZXg6IDU1O1xuICB3aWR0aDogMTYwcHg7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG59XG5cbi5wZXItcGFnZS1wYW5lbC10aXRsZSB7XG4gIC8qIC5kcm9wZG93bi10aXRsZSBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBzcGFjaW5nICovXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgcGFkZGluZzogMCAwLjI1cmVtO1xufVxuXG4ucGVyLXBhZ2Utb3B0aW9uIHtcbiAgLyogLmRyb3Bkb3duLW9wdGlvbiBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCB0ZXh0IHNpemluZyAqL1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG5cbi5wYWdpbmF0aW9uLWNvbnRyb2xzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMXJlbTtcbiAgbWFyZ2luLXRvcDogMi41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbn1cblxuLnBhZ2luYXRpb24tYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC40cmVtO1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC42MjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMjAwKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZS01MCk7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTcwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1cywgY29sb3IgMC4xNXM7XG59XG5cbi5wYWdpbmF0aW9uLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG59XG5cbi5wYWdpbmF0aW9uLWJ0bjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuMzU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5kYXJrIC5wYWdpbmF0aW9uLWJ0biB7XG4gIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtODAwKTtcbiAgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG59XG5cbi5kYXJrIC5wYWdpbmF0aW9uLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG59XG5cbi5wYWdpbmF0aW9uLWluZGljYXRvciB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIG1pbi13aWR0aDogNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFyayAucGFnaW5hdGlvbi1pbmRpY2F0b3IgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG4iXX0= */