/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  :root, :host {
    --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
      "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --color-red-50: oklch(97.1% 0.013 17.38);
    --color-red-100: oklch(93.6% 0.032 17.717);
    --color-red-200: oklch(88.5% 0.062 18.334);
    --color-red-300: oklch(80.8% 0.114 19.571);
    --color-red-400: oklch(70.4% 0.191 22.216);
    --color-red-500: oklch(63.7% 0.237 25.331);
    --color-red-600: oklch(57.7% 0.245 27.325);
    --color-red-700: oklch(50.5% 0.213 27.518);
    --color-red-800: oklch(44.4% 0.177 26.899);
    --color-red-900: oklch(39.6% 0.141 25.723);
    --color-orange-50: oklch(98% 0.016 73.684);
    --color-orange-100: oklch(95.4% 0.038 75.164);
    --color-orange-200: oklch(90.1% 0.076 70.697);
    --color-orange-300: oklch(83.7% 0.128 66.29);
    --color-orange-400: oklch(75% 0.183 55.934);
    --color-orange-500: oklch(70.5% 0.213 47.604);
    --color-orange-600: oklch(64.6% 0.222 41.116);
    --color-orange-700: oklch(55.3% 0.195 38.402);
    --color-orange-800: oklch(47% 0.157 37.304);
    --color-orange-900: oklch(40.8% 0.123 38.172);
    --color-amber-600: oklch(66.6% 0.179 58.318);
    --color-yellow-50: oklch(98.7% 0.026 102.212);
    --color-yellow-200: oklch(94.5% 0.129 101.54);
    --color-yellow-300: oklch(90.5% 0.182 98.111);
    --color-yellow-400: oklch(85.2% 0.199 91.936);
    --color-yellow-500: oklch(79.5% 0.184 86.047);
    --color-yellow-600: oklch(68.1% 0.162 75.834);
    --color-yellow-700: oklch(55.4% 0.135 66.442);
    --color-yellow-800: oklch(47.6% 0.114 61.907);
    --color-yellow-900: oklch(42.1% 0.095 57.708);
    --color-green-50: oklch(98.2% 0.018 155.826);
    --color-green-100: oklch(96.2% 0.044 156.743);
    --color-green-200: oklch(92.5% 0.084 155.995);
    --color-green-300: oklch(87.1% 0.15 154.449);
    --color-green-400: oklch(79.2% 0.209 151.711);
    --color-green-500: oklch(72.3% 0.219 149.579);
    --color-green-600: oklch(62.7% 0.194 149.214);
    --color-green-700: oklch(52.7% 0.154 150.069);
    --color-green-800: oklch(44.8% 0.119 151.328);
    --color-green-900: oklch(39.3% 0.095 152.535);
    --color-emerald-50: oklch(97.9% 0.021 166.113);
    --color-emerald-100: oklch(95% 0.052 163.051);
    --color-emerald-500: oklch(69.6% 0.17 162.48);
    --color-emerald-600: oklch(59.6% 0.145 163.225);
    --color-emerald-900: oklch(37.8% 0.077 168.94);
    --color-teal-700: oklch(51.1% 0.096 186.391);
    --color-cyan-50: oklch(98.4% 0.019 200.873);
    --color-cyan-100: oklch(95.6% 0.045 203.388);
    --color-cyan-900: oklch(39.8% 0.07 227.392);
    --color-blue-50: oklch(97% 0.014 254.604);
    --color-blue-100: oklch(93.2% 0.032 255.585);
    --color-blue-200: oklch(88.2% 0.059 254.128);
    --color-blue-300: oklch(80.9% 0.105 251.813);
    --color-blue-400: oklch(70.7% 0.165 254.624);
    --color-blue-500: oklch(62.3% 0.214 259.815);
    --color-blue-600: oklch(54.6% 0.245 262.881);
    --color-blue-700: oklch(48.8% 0.243 264.376);
    --color-blue-800: oklch(42.4% 0.199 265.638);
    --color-blue-900: oklch(37.9% 0.146 265.522);
    --color-blue-950: oklch(28.2% 0.091 267.935);
    --color-indigo-50: oklch(96.2% 0.018 272.314);
    --color-indigo-100: oklch(93% 0.034 272.788);
    --color-indigo-900: oklch(35.9% 0.144 278.697);
    --color-purple-50: oklch(97.7% 0.014 308.299);
    --color-purple-100: oklch(94.6% 0.033 307.174);
    --color-purple-200: oklch(90.2% 0.063 306.703);
    --color-purple-300: oklch(82.7% 0.119 306.383);
    --color-purple-400: oklch(71.4% 0.203 305.504);
    --color-purple-500: oklch(62.7% 0.265 303.9);
    --color-purple-600: oklch(55.8% 0.288 302.321);
    --color-purple-700: oklch(49.6% 0.265 301.924);
    --color-purple-800: oklch(43.8% 0.218 303.724);
    --color-purple-900: oklch(38.1% 0.176 304.987);
    --color-purple-950: oklch(29.1% 0.149 302.717);
    --color-pink-50: oklch(97.1% 0.014 343.198);
    --color-pink-100: oklch(94.8% 0.028 342.258);
    --color-pink-400: oklch(71.8% 0.202 349.761);
    --color-pink-500: oklch(65.6% 0.241 354.308);
    --color-pink-900: oklch(40.8% 0.153 2.432);
    --color-slate-50: oklch(98.4% 0.003 247.858);
    --color-slate-100: oklch(96.8% 0.007 247.896);
    --color-slate-200: oklch(92.9% 0.013 255.508);
    --color-slate-300: oklch(86.9% 0.022 252.894);
    --color-slate-400: oklch(70.4% 0.04 256.788);
    --color-slate-500: oklch(55.4% 0.046 257.417);
    --color-slate-600: oklch(44.6% 0.043 257.281);
    --color-slate-700: oklch(37.2% 0.044 257.287);
    --color-slate-800: oklch(27.9% 0.041 260.031);
    --color-slate-900: oklch(20.8% 0.042 265.755);
    --color-slate-950: oklch(12.9% 0.042 264.695);
    --color-gray-50: oklch(98.5% 0.002 247.839);
    --color-gray-100: oklch(96.7% 0.003 264.542);
    --color-gray-200: oklch(92.8% 0.006 264.531);
    --color-gray-300: oklch(87.2% 0.01 258.338);
    --color-gray-400: oklch(70.7% 0.022 261.325);
    --color-gray-500: oklch(55.1% 0.027 264.364);
    --color-gray-600: oklch(44.6% 0.03 256.802);
    --color-gray-700: oklch(37.3% 0.034 259.733);
    --color-gray-900: oklch(21% 0.034 264.665);
    --color-stone-50: oklch(98.5% 0.001 106.423);
    --color-stone-100: oklch(97% 0.001 106.424);
    --color-stone-200: oklch(92.3% 0.003 48.717);
    --color-stone-300: oklch(86.9% 0.005 56.366);
    --color-stone-900: oklch(21.6% 0.006 56.043);
    --color-black: #000;
    --color-white: #fff;
    --spacing: 0.25rem;
    --breakpoint-sm: 40rem;
    --breakpoint-md: 48rem;
    --breakpoint-lg: 64rem;
    --breakpoint-xl: 80rem;
    --container-lg: 32rem;
    --container-2xl: 42rem;
    --container-3xl: 48rem;
    --container-4xl: 56rem;
    --container-6xl: 72rem;
    --container-7xl: 80rem;
    --text-xs: 0.75rem;
    --text-xs--line-height: calc(1 / 0.75);
    --text-sm: 0.875rem;
    --text-sm--line-height: calc(1.25 / 0.875);
    --text-base: 1rem;
    --text-base--line-height: calc(1.5 / 1);
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --text-xl: 1.25rem;
    --text-xl--line-height: calc(1.75 / 1.25);
    --text-2xl: 1.5rem;
    --text-2xl--line-height: calc(2 / 1.5);
    --text-3xl: 1.875rem;
    --text-3xl--line-height: calc(2.25 / 1.875);
    --text-4xl: 2.25rem;
    --text-4xl--line-height: calc(2.5 / 2.25);
    --text-5xl: 3rem;
    --text-5xl--line-height: 1;
    --text-6xl: 3.75rem;
    --text-6xl--line-height: 1;
    --text-7xl: 4.5rem;
    --text-7xl--line-height: 1;
    --text-8xl: 6rem;
    --text-8xl--line-height: 1;
    --font-weight-extralight: 200;
    --font-weight-light: 300;
    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --font-weight-extrabold: 800;
    --font-weight-black: 900;
    --tracking-wide: 0.025em;
    --leading-tight: 1.25;
    --leading-relaxed: 1.625;
    --radius-sm: 0.25rem;
    --radius-md: 0.375rem;
    --radius-lg: 0.5rem;
    --radius-xl: 0.75rem;
    --radius-2xl: 1rem;
    --radius-3xl: 1.5rem;
    --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
    --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
    --animate-bounce: bounce 1s infinite;
    --blur-sm: 8px;
    --default-transition-duration: 150ms;
    --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
  }
}
@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    border: 0 solid;
  }
  html,
  :host {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    -moz-tab-size: 4;
      -o-tab-size: 4;
         tab-size: 4;
    font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b,
  strong {
    font-weight: bolder;
  }
  code,
  kbd,
  samp,
  pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub,
  sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol,
  ul,
  menu {
    list-style: none;
  }
  img,
  svg,
  video,
  canvas,
  audio,
  iframe,
  embed,
  object {
    display: block;
    vertical-align: middle;
  }
  img,
  video {
    max-width: 100%;
    height: auto;
  }
  button,
  input,
  select,
  optgroup,
  textarea,
  ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    border-radius: 0;
    background-color: transparent;
    opacity: 1;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::-moz-placeholder {
    opacity: 1;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not (-webkit-appearance: -apple-pay-button))  or
    (contain-intrinsic-size: 1px) {
    ::-moz-placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
    ::placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit,
  ::-webkit-datetime-edit-year-field,
  ::-webkit-datetime-edit-month-field,
  ::-webkit-datetime-edit-day-field,
  ::-webkit-datetime-edit-hour-field,
  ::-webkit-datetime-edit-minute-field,
  ::-webkit-datetime-edit-second-field,
  ::-webkit-datetime-edit-millisecond-field,
  ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button,
  input:where([type="button"], [type="reset"], [type="submit"]),
  ::file-selector-button {
    -webkit-appearance: button;
       -moz-appearance: button;
            appearance: button;
  }
  ::-webkit-inner-spin-button,
  ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}
@layer utilities {
  .collapse {
    visibility: collapse;
  }
  .invisible {
    visibility: hidden;
  }
  .visible {
    visibility: visible;
  }
  .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;
  }
  .absolute {
    position: absolute;
  }
  .fixed {
    position: fixed;
  }
  .relative {
    position: relative;
  }
  .static {
    position: static;
  }
  .inset-0 {
    inset: calc(var(--spacing) * 0);
  }
  .-top-4 {
    top: calc(var(--spacing) * -4);
  }
  .top-0 {
    top: calc(var(--spacing) * 0);
  }
  .top-1\/2 {
    top: calc(1/2 * 100%);
  }
  .top-4 {
    top: calc(var(--spacing) * 4);
  }
  .top-20 {
    top: calc(var(--spacing) * 20);
  }
  .right-4 {
    right: calc(var(--spacing) * 4);
  }
  .bottom-4 {
    bottom: calc(var(--spacing) * 4);
  }
  .left-0 {
    left: calc(var(--spacing) * 0);
  }
  .left-1\/2 {
    left: calc(1/2 * 100%);
  }
  .left-4 {
    left: calc(var(--spacing) * 4);
  }
  .z-30 {
    z-index: 30;
  }
  .z-40 {
    z-index: 40;
  }
  .z-50 {
    z-index: 50;
  }
  .container {
    width: 100%;
    @media (width >= 40rem) {
      max-width: 40rem;
    }
    @media (width >= 48rem) {
      max-width: 48rem;
    }
    @media (width >= 64rem) {
      max-width: 64rem;
    }
    @media (width >= 80rem) {
      max-width: 80rem;
    }
    @media (width >= 96rem) {
      max-width: 96rem;
    }
  }
  .mx-auto {
    margin-inline: auto;
  }
  .mt-0\.5 {
    margin-top: calc(var(--spacing) * 0.5);
  }
  .mt-1 {
    margin-top: calc(var(--spacing) * 1);
  }
  .mt-2 {
    margin-top: calc(var(--spacing) * 2);
  }
  .mt-3 {
    margin-top: calc(var(--spacing) * 3);
  }
  .mt-4 {
    margin-top: calc(var(--spacing) * 4);
  }
  .mt-6 {
    margin-top: calc(var(--spacing) * 6);
  }
  .mt-8 {
    margin-top: calc(var(--spacing) * 8);
  }
  .mt-12 {
    margin-top: calc(var(--spacing) * 12);
  }
  .mt-16 {
    margin-top: calc(var(--spacing) * 16);
  }
  .mr-2 {
    margin-right: calc(var(--spacing) * 2);
  }
  .mr-3 {
    margin-right: calc(var(--spacing) * 3);
  }
  .mr-6 {
    margin-right: calc(var(--spacing) * 6);
  }
  .mb-1 {
    margin-bottom: calc(var(--spacing) * 1);
  }
  .mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .mb-3 {
    margin-bottom: calc(var(--spacing) * 3);
  }
  .mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
  }
  .mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
  }
  .mb-8 {
    margin-bottom: calc(var(--spacing) * 8);
  }
  .mb-12 {
    margin-bottom: calc(var(--spacing) * 12);
  }
  .mb-16 {
    margin-bottom: calc(var(--spacing) * 16);
  }
  .mb-20 {
    margin-bottom: calc(var(--spacing) * 20);
  }
  .ml-1 {
    margin-left: calc(var(--spacing) * 1);
  }
  .ml-2 {
    margin-left: calc(var(--spacing) * 2);
  }
  .block {
    display: block;
  }
  .flex {
    display: flex;
  }
  .grid {
    display: grid;
  }
  .hidden {
    display: none;
  }
  .inline {
    display: inline;
  }
  .inline-block {
    display: inline-block;
  }
  .inline-flex {
    display: inline-flex;
  }
  .table {
    display: table;
  }
  .h-0\.5 {
    height: calc(var(--spacing) * 0.5);
  }
  .h-2 {
    height: calc(var(--spacing) * 2);
  }
  .h-3 {
    height: calc(var(--spacing) * 3);
  }
  .h-4 {
    height: calc(var(--spacing) * 4);
  }
  .h-5 {
    height: calc(var(--spacing) * 5);
  }
  .h-6 {
    height: calc(var(--spacing) * 6);
  }
  .h-8 {
    height: calc(var(--spacing) * 8);
  }
  .h-10 {
    height: calc(var(--spacing) * 10);
  }
  .h-12 {
    height: calc(var(--spacing) * 12);
  }
  .h-16 {
    height: calc(var(--spacing) * 16);
  }
  .h-20 {
    height: calc(var(--spacing) * 20);
  }
  .h-full {
    height: 100%;
  }
  .h-screen {
    height: 100vh;
  }
  .max-h-32 {
    max-height: calc(var(--spacing) * 32);
  }
  .min-h-\[60vh\] {
    min-height: 60vh;
  }
  .min-h-screen {
    min-height: 100vh;
  }
  .w-0\.5 {
    width: calc(var(--spacing) * 0.5);
  }
  .w-2 {
    width: calc(var(--spacing) * 2);
  }
  .w-3 {
    width: calc(var(--spacing) * 3);
  }
  .w-4 {
    width: calc(var(--spacing) * 4);
  }
  .w-5 {
    width: calc(var(--spacing) * 5);
  }
  .w-6 {
    width: calc(var(--spacing) * 6);
  }
  .w-8 {
    width: calc(var(--spacing) * 8);
  }
  .w-10 {
    width: calc(var(--spacing) * 10);
  }
  .w-12 {
    width: calc(var(--spacing) * 12);
  }
  .w-16 {
    width: calc(var(--spacing) * 16);
  }
  .w-20 {
    width: calc(var(--spacing) * 20);
  }
  .w-64 {
    width: calc(var(--spacing) * 64);
  }
  .w-full {
    width: 100%;
  }
  .max-w-2xl {
    max-width: var(--container-2xl);
  }
  .max-w-3xl {
    max-width: var(--container-3xl);
  }
  .max-w-4xl {
    max-width: var(--container-4xl);
  }
  .max-w-6xl {
    max-width: var(--container-6xl);
  }
  .max-w-7xl {
    max-width: var(--container-7xl);
  }
  .flex-1 {
    flex: 1;
  }
  .flex-shrink-0 {
    flex-shrink: 0;
  }
  .grow {
    flex-grow: 1;
  }
  .border-collapse {
    border-collapse: collapse;
  }
  .-translate-x-1\/2 {
    --tw-translate-x: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-x-full {
    --tw-translate-x: -100%;
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .translate-x-0 {
    --tw-translate-x: calc(var(--spacing) * 0);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-y-1\/2 {
    --tw-translate-y: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .scale-105 {
    --tw-scale-x: 105%;
    --tw-scale-y: 105%;
    --tw-scale-z: 105%;
    scale: var(--tw-scale-x) var(--tw-scale-y);
  }
  .rotate-180 {
    rotate: 180deg;
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .cursor-not-allowed {
    cursor: not-allowed;
  }
  .cursor-pointer {
    cursor: pointer;
  }
  .resize {
    resize: both;
  }
  .resize-none {
    resize: none;
  }
  .list-inside {
    list-style-position: inside;
  }
  .list-disc {
    list-style-type: disc;
  }
  .grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }
  .grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .flex-col {
    flex-direction: column;
  }
  .flex-row {
    flex-direction: row;
  }
  .flex-wrap {
    flex-wrap: wrap;
  }
  .items-center {
    align-items: center;
  }
  .items-start {
    align-items: flex-start;
  }
  .justify-between {
    justify-content: space-between;
  }
  .justify-center {
    justify-content: center;
  }
  .gap-1 {
    gap: calc(var(--spacing) * 1);
  }
  .gap-2 {
    gap: calc(var(--spacing) * 2);
  }
  .gap-3 {
    gap: calc(var(--spacing) * 3);
  }
  .gap-4 {
    gap: calc(var(--spacing) * 4);
  }
  .gap-6 {
    gap: calc(var(--spacing) * 6);
  }
  .gap-8 {
    gap: calc(var(--spacing) * 8);
  }
  .gap-12 {
    gap: calc(var(--spacing) * 12);
  }
  .gap-16 {
    gap: calc(var(--spacing) * 16);
  }
  .space-y-1 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-2 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-3 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-4 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-6 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-8 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-12 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-x-2 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-3 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-4 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .self-center {
    align-self: center;
  }
  .overflow-hidden {
    overflow: hidden;
  }
  .overflow-x-auto {
    overflow-x: auto;
  }
  .overflow-y-auto {
    overflow-y: auto;
  }
  .scroll-smooth {
    scroll-behavior: smooth;
  }
  .rounded {
    border-radius: 0.25rem;
  }
  .rounded-2xl {
    border-radius: var(--radius-2xl);
  }
  .rounded-3xl {
    border-radius: var(--radius-3xl);
  }
  .rounded-full {
    border-radius: calc(infinity * 1px);
  }
  .rounded-lg {
    border-radius: var(--radius-lg);
  }
  .rounded-md {
    border-radius: var(--radius-md);
  }
  .rounded-xl {
    border-radius: var(--radius-xl);
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .border-2 {
    border-style: var(--tw-border-style);
    border-width: 2px;
  }
  .border-t {
    border-top-style: var(--tw-border-style);
    border-top-width: 1px;
  }
  .border-r {
    border-right-style: var(--tw-border-style);
    border-right-width: 1px;
  }
  .border-r-2 {
    border-right-style: var(--tw-border-style);
    border-right-width: 2px;
  }
  .border-b {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 1px;
  }
  .border-b-2 {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 2px;
  }
  .border-l-4 {
    border-left-style: var(--tw-border-style);
    border-left-width: 4px;
  }
  .border-blue-200 {
    border-color: var(--color-blue-200);
  }
  .border-blue-500 {
    border-color: var(--color-blue-500);
  }
  .border-blue-500\/30 {
    border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-blue-500) 30%, transparent);
    }
  }
  .border-gray-200 {
    border-color: var(--color-gray-200);
  }
  .border-green-200 {
    border-color: var(--color-green-200);
  }
  .border-green-500 {
    border-color: var(--color-green-500);
  }
  .border-orange-200 {
    border-color: var(--color-orange-200);
  }
  .border-orange-500 {
    border-color: var(--color-orange-500);
  }
  .border-orange-600 {
    border-color: var(--color-orange-600);
  }
  .border-purple-200 {
    border-color: var(--color-purple-200);
  }
  .border-red-200 {
    border-color: var(--color-red-200);
  }
  .border-red-500 {
    border-color: var(--color-red-500);
  }
  .border-slate-200 {
    border-color: var(--color-slate-200);
  }
  .border-stone-200 {
    border-color: var(--color-stone-200);
  }
  .border-stone-300 {
    border-color: var(--color-stone-300);
  }
  .border-white\/10 {
    border-color: color-mix(in srgb, #fff 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
    }
  }
  .border-white\/30 {
    border-color: color-mix(in srgb, #fff 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-white) 30%, transparent);
    }
  }
  .border-yellow-200 {
    border-color: var(--color-yellow-200);
  }
  .border-yellow-500 {
    border-color: var(--color-yellow-500);
  }
  .bg-black {
    background-color: var(--color-black);
  }
  .bg-blue-50 {
    background-color: var(--color-blue-50);
  }
  .bg-blue-100 {
    background-color: var(--color-blue-100);
  }
  .bg-blue-400 {
    background-color: var(--color-blue-400);
  }
  .bg-blue-500 {
    background-color: var(--color-blue-500);
  }
  .bg-blue-500\/20 {
    background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent);
    }
  }
  .bg-blue-600 {
    background-color: var(--color-blue-600);
  }
  .bg-gray-50 {
    background-color: var(--color-gray-50);
  }
  .bg-gray-300 {
    background-color: var(--color-gray-300);
  }
  .bg-green-50 {
    background-color: var(--color-green-50);
  }
  .bg-green-100 {
    background-color: var(--color-green-100);
  }
  .bg-green-500 {
    background-color: var(--color-green-500);
  }
  .bg-orange-50 {
    background-color: var(--color-orange-50);
  }
  .bg-orange-100 {
    background-color: var(--color-orange-100);
  }
  .bg-orange-500 {
    background-color: var(--color-orange-500);
  }
  .bg-orange-600 {
    background-color: var(--color-orange-600);
  }
  .bg-purple-50 {
    background-color: var(--color-purple-50);
  }
  .bg-purple-100 {
    background-color: var(--color-purple-100);
  }
  .bg-purple-400 {
    background-color: var(--color-purple-400);
  }
  .bg-purple-500 {
    background-color: var(--color-purple-500);
  }
  .bg-red-50 {
    background-color: var(--color-red-50);
  }
  .bg-red-500 {
    background-color: var(--color-red-500);
  }
  .bg-slate-50 {
    background-color: var(--color-slate-50);
  }
  .bg-slate-100 {
    background-color: var(--color-slate-100);
  }
  .bg-slate-200 {
    background-color: var(--color-slate-200);
  }
  .bg-slate-900 {
    background-color: var(--color-slate-900);
  }
  .bg-stone-50 {
    background-color: var(--color-stone-50);
  }
  .bg-white {
    background-color: var(--color-white);
  }
  .bg-white\/5 {
    background-color: color-mix(in srgb, #fff 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 5%, transparent);
    }
  }
  .bg-white\/10 {
    background-color: color-mix(in srgb, #fff 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
    }
  }
  .bg-white\/20 {
    background-color: color-mix(in srgb, #fff 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
    }
  }
  .bg-yellow-50 {
    background-color: var(--color-yellow-50);
  }
  .bg-gradient-to-br {
    --tw-gradient-position: to bottom right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .bg-gradient-to-r {
    --tw-gradient-position: to right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .from-blue-50 {
    --tw-gradient-from: var(--color-blue-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-100 {
    --tw-gradient-from: var(--color-blue-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-400 {
    --tw-gradient-from: var(--color-blue-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500 {
    --tw-gradient-from: var(--color-blue-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500\/5 {
    --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 5%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500\/10 {
    --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-600 {
    --tw-gradient-from: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-50 {
    --tw-gradient-from: var(--color-green-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-100 {
    --tw-gradient-from: var(--color-green-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-500 {
    --tw-gradient-from: var(--color-green-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-600 {
    --tw-gradient-from: var(--color-green-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-orange-50 {
    --tw-gradient-from: var(--color-orange-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-orange-100 {
    --tw-gradient-from: var(--color-orange-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-50 {
    --tw-gradient-from: var(--color-purple-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-100 {
    --tw-gradient-from: var(--color-purple-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-500 {
    --tw-gradient-from: var(--color-purple-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-50 {
    --tw-gradient-from: var(--color-slate-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-100 {
    --tw-gradient-from: var(--color-slate-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-900 {
    --tw-gradient-from: var(--color-slate-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .via-blue-900 {
    --tw-gradient-via: var(--color-blue-900);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .via-purple-400 {
    --tw-gradient-via: var(--color-purple-400);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .to-blue-600 {
    --tw-gradient-to: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-cyan-50 {
    --tw-gradient-to: var(--color-cyan-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-cyan-100 {
    --tw-gradient-to: var(--color-cyan-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-emerald-50 {
    --tw-gradient-to: var(--color-emerald-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-emerald-100 {
    --tw-gradient-to: var(--color-emerald-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-green-600 {
    --tw-gradient-to: var(--color-green-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-50 {
    --tw-gradient-to: var(--color-indigo-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-100 {
    --tw-gradient-to: var(--color-indigo-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-50 {
    --tw-gradient-to: var(--color-pink-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-100 {
    --tw-gradient-to: var(--color-pink-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-400 {
    --tw-gradient-to: var(--color-pink-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-50 {
    --tw-gradient-to: var(--color-purple-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-500\/5 {
    --tw-gradient-to: color-mix(in srgb, oklch(62.7% 0.265 303.9) 5%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-purple-500) 5%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-500\/10 {
    --tw-gradient-to: color-mix(in srgb, oklch(62.7% 0.265 303.9) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-purple-500) 10%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-600 {
    --tw-gradient-to: var(--color-purple-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-700 {
    --tw-gradient-to: var(--color-purple-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-900 {
    --tw-gradient-to: var(--color-purple-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-red-50 {
    --tw-gradient-to: var(--color-red-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-red-100 {
    --tw-gradient-to: var(--color-red-100);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-slate-200 {
    --tw-gradient-to: var(--color-slate-200);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-stone-50 {
    --tw-gradient-to: var(--color-stone-50);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-teal-700 {
    --tw-gradient-to: var(--color-teal-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .bg-clip-text {
    -webkit-background-clip: text;
            background-clip: text;
  }
  .p-1 {
    padding: calc(var(--spacing) * 1);
  }
  .p-1\.5 {
    padding: calc(var(--spacing) * 1.5);
  }
  .p-2 {
    padding: calc(var(--spacing) * 2);
  }
  .p-3 {
    padding: calc(var(--spacing) * 3);
  }
  .p-4 {
    padding: calc(var(--spacing) * 4);
  }
  .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .p-8 {
    padding: calc(var(--spacing) * 8);
  }
  .p-10 {
    padding: calc(var(--spacing) * 10);
  }
  .p-12 {
    padding: calc(var(--spacing) * 12);
  }
  .px-2 {
    padding-inline: calc(var(--spacing) * 2);
  }
  .px-3 {
    padding-inline: calc(var(--spacing) * 3);
  }
  .px-4 {
    padding-inline: calc(var(--spacing) * 4);
  }
  .px-6 {
    padding-inline: calc(var(--spacing) * 6);
  }
  .px-12 {
    padding-inline: calc(var(--spacing) * 12);
  }
  .px-16 {
    padding-inline: calc(var(--spacing) * 16);
  }
  .py-1 {
    padding-block: calc(var(--spacing) * 1);
  }
  .py-1\.5 {
    padding-block: calc(var(--spacing) * 1.5);
  }
  .py-2 {
    padding-block: calc(var(--spacing) * 2);
  }
  .py-3 {
    padding-block: calc(var(--spacing) * 3);
  }
  .py-4 {
    padding-block: calc(var(--spacing) * 4);
  }
  .py-6 {
    padding-block: calc(var(--spacing) * 6);
  }
  .py-8 {
    padding-block: calc(var(--spacing) * 8);
  }
  .py-16 {
    padding-block: calc(var(--spacing) * 16);
  }
  .py-24 {
    padding-block: calc(var(--spacing) * 24);
  }
  .py-32 {
    padding-block: calc(var(--spacing) * 32);
  }
  .pt-3 {
    padding-top: calc(var(--spacing) * 3);
  }
  .pb-6 {
    padding-bottom: calc(var(--spacing) * 6);
  }
  .pl-3 {
    padding-left: calc(var(--spacing) * 3);
  }
  .pl-4 {
    padding-left: calc(var(--spacing) * 4);
  }
  .pl-8 {
    padding-left: calc(var(--spacing) * 8);
  }
  .pl-12 {
    padding-left: calc(var(--spacing) * 12);
  }
  .text-center {
    text-align: center;
  }
  .text-left {
    text-align: left;
  }
  .font-mono {
    font-family: var(--font-mono);
  }
  .font-sans {
    font-family: var(--font-sans);
  }
  .text-2xl {
    font-size: var(--text-2xl);
    line-height: var(--tw-leading, var(--text-2xl--line-height));
  }
  .text-3xl {
    font-size: var(--text-3xl);
    line-height: var(--tw-leading, var(--text-3xl--line-height));
  }
  .text-4xl {
    font-size: var(--text-4xl);
    line-height: var(--tw-leading, var(--text-4xl--line-height));
  }
  .text-5xl {
    font-size: var(--text-5xl);
    line-height: var(--tw-leading, var(--text-5xl--line-height));
  }
  .text-6xl {
    font-size: var(--text-6xl);
    line-height: var(--tw-leading, var(--text-6xl--line-height));
  }
  .text-base {
    font-size: var(--text-base);
    line-height: var(--tw-leading, var(--text-base--line-height));
  }
  .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .text-sm {
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .text-xl {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
  }
  .text-xs {
    font-size: var(--text-xs);
    line-height: var(--tw-leading, var(--text-xs--line-height));
  }
  .leading-relaxed {
    --tw-leading: var(--leading-relaxed);
    line-height: var(--leading-relaxed);
  }
  .leading-tight {
    --tw-leading: var(--leading-tight);
    line-height: var(--leading-tight);
  }
  .font-black {
    --tw-font-weight: var(--font-weight-black);
    font-weight: var(--font-weight-black);
  }
  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .font-medium {
    --tw-font-weight: var(--font-weight-medium);
    font-weight: var(--font-weight-medium);
  }
  .font-normal {
    --tw-font-weight: var(--font-weight-normal);
    font-weight: var(--font-weight-normal);
  }
  .font-semibold {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  .tracking-wide {
    --tw-tracking: var(--tracking-wide);
    letter-spacing: var(--tracking-wide);
  }
  .text-amber-600 {
    color: var(--color-amber-600);
  }
  .text-blue-200 {
    color: var(--color-blue-200);
  }
  .text-blue-400 {
    color: var(--color-blue-400);
  }
  .text-blue-600 {
    color: var(--color-blue-600);
  }
  .text-blue-700 {
    color: var(--color-blue-700);
  }
  .text-blue-800 {
    color: var(--color-blue-800);
  }
  .text-blue-900 {
    color: var(--color-blue-900);
  }
  .text-gray-600 {
    color: var(--color-gray-600);
  }
  .text-gray-700 {
    color: var(--color-gray-700);
  }
  .text-gray-900 {
    color: var(--color-gray-900);
  }
  .text-green-200 {
    color: var(--color-green-200);
  }
  .text-green-400 {
    color: var(--color-green-400);
  }
  .text-green-500 {
    color: var(--color-green-500);
  }
  .text-green-600 {
    color: var(--color-green-600);
  }
  .text-green-700 {
    color: var(--color-green-700);
  }
  .text-green-800 {
    color: var(--color-green-800);
  }
  .text-green-900 {
    color: var(--color-green-900);
  }
  .text-orange-600 {
    color: var(--color-orange-600);
  }
  .text-orange-700 {
    color: var(--color-orange-700);
  }
  .text-orange-800 {
    color: var(--color-orange-800);
  }
  .text-orange-900 {
    color: var(--color-orange-900);
  }
  .text-pink-400 {
    color: var(--color-pink-400);
  }
  .text-purple-400 {
    color: var(--color-purple-400);
  }
  .text-purple-600 {
    color: var(--color-purple-600);
  }
  .text-purple-700 {
    color: var(--color-purple-700);
  }
  .text-purple-800 {
    color: var(--color-purple-800);
  }
  .text-purple-900 {
    color: var(--color-purple-900);
  }
  .text-red-500 {
    color: var(--color-red-500);
  }
  .text-red-600 {
    color: var(--color-red-600);
  }
  .text-red-700 {
    color: var(--color-red-700);
  }
  .text-slate-300 {
    color: var(--color-slate-300);
  }
  .text-slate-400 {
    color: var(--color-slate-400);
  }
  .text-slate-500 {
    color: var(--color-slate-500);
  }
  .text-slate-600 {
    color: var(--color-slate-600);
  }
  .text-slate-700 {
    color: var(--color-slate-700);
  }
  .text-slate-800 {
    color: var(--color-slate-800);
  }
  .text-slate-900 {
    color: var(--color-slate-900);
  }
  .text-transparent {
    color: transparent;
  }
  .text-white {
    color: var(--color-white);
  }
  .text-white\/70 {
    color: color-mix(in srgb, #fff 70%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, var(--color-white) 70%, transparent);
    }
  }
  .text-white\/90 {
    color: color-mix(in srgb, #fff 90%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, var(--color-white) 90%, transparent);
    }
  }
  .text-yellow-600 {
    color: var(--color-yellow-600);
  }
  .text-yellow-800 {
    color: var(--color-yellow-800);
  }
  .uppercase {
    text-transform: uppercase;
  }
  .italic {
    font-style: italic;
  }
  .underline {
    text-decoration-line: underline;
  }
  .antialiased {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .placeholder-slate-500 {
    &::-moz-placeholder {
      color: var(--color-slate-500);
    }
    &::placeholder {
      color: var(--color-slate-500);
    }
  }
  .opacity-20 {
    opacity: 20%;
  }
  .opacity-30 {
    opacity: 30%;
  }
  .opacity-50 {
    opacity: 50%;
  }
  .opacity-80 {
    opacity: 80%;
  }
  .opacity-90 {
    opacity: 90%;
  }
  .shadow {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-2xl {
    --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-lg {
    --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-sm {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-xl {
    --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring-2 {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring-purple-500 {
    --tw-ring-color: var(--color-purple-500);
  }
  .outline {
    outline-style: var(--tw-outline-style);
    outline-width: 1px;
  }
  .backdrop-blur-sm {
    --tw-backdrop-blur: blur(var(--blur-sm));
    -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
  }
  .backdrop-filter {
    -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
  }
  .transition {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-all {
    transition-property: all;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-colors {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-transform {
    transition-property: transform, translate, scale, rotate;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .duration-200 {
    --tw-duration: 200ms;
    transition-duration: 200ms;
  }
  .duration-300 {
    --tw-duration: 300ms;
    transition-duration: 300ms;
  }
  .group-hover\:scale-110 {
    &:is(:where(.group):hover *) {
      @media (hover: hover) {
        --tw-scale-x: 110%;
        --tw-scale-y: 110%;
        --tw-scale-z: 110%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .group-hover\:animate-bounce {
    &:is(:where(.group):hover *) {
      @media (hover: hover) {
        animation: var(--animate-bounce);
      }
    }
  }
  .last\:mb-0 {
    &:last-child {
      margin-bottom: calc(var(--spacing) * 0);
    }
  }
  .hover\:-translate-y-2 {
    &:hover {
      @media (hover: hover) {
        --tw-translate-y: calc(var(--spacing) * -2);
        translate: var(--tw-translate-x) var(--tw-translate-y);
      }
    }
  }
  .hover\:scale-105 {
    &:hover {
      @media (hover: hover) {
        --tw-scale-x: 105%;
        --tw-scale-y: 105%;
        --tw-scale-z: 105%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .hover\:scale-110 {
    &:hover {
      @media (hover: hover) {
        --tw-scale-x: 110%;
        --tw-scale-y: 110%;
        --tw-scale-z: 110%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .hover\:bg-blue-700 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-blue-700);
      }
    }
  }
  .hover\:bg-orange-700 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-orange-700);
      }
    }
  }
  .hover\:bg-slate-50 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-50);
      }
    }
  }
  .hover\:bg-slate-300 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-300);
      }
    }
  }
  .hover\:bg-stone-50 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-stone-50);
      }
    }
  }
  .hover\:bg-white\/20 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, #fff 20%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
        }
      }
    }
  }
  .hover\:from-blue-600 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-blue-600);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-purple-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-purple-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:text-blue-300 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-300);
      }
    }
  }
  .hover\:text-blue-600 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-600);
      }
    }
  }
  .hover\:text-blue-700 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-700);
      }
    }
  }
  .hover\:text-blue-800 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-blue-800);
      }
    }
  }
  .hover\:text-orange-600 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-orange-600);
      }
    }
  }
  .hover\:text-slate-900 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-slate-900);
      }
    }
  }
  .hover\:shadow-2xl {
    &:hover {
      @media (hover: hover) {
        --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
        box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      }
    }
  }
  .focus\:ring-2 {
    &:focus {
      --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
      box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    }
  }
  .focus\:ring-blue-500 {
    &:focus {
      --tw-ring-color: var(--color-blue-500);
    }
  }
  .focus\:ring-orange-500 {
    &:focus {
      --tw-ring-color: var(--color-orange-500);
    }
  }
  .focus\:ring-offset-2 {
    &:focus {
      --tw-ring-offset-width: 2px;
      --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
    }
  }
  .focus\:outline-none {
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
    }
  }
  .sm\:block {
    @media (width >= 40rem) {
      display: block;
    }
  }
  .sm\:flex-row {
    @media (width >= 40rem) {
      flex-direction: row;
    }
  }
  .sm\:px-6 {
    @media (width >= 40rem) {
      padding-inline: calc(var(--spacing) * 6);
    }
  }
  .sm\:text-5xl {
    @media (width >= 40rem) {
      font-size: var(--text-5xl);
      line-height: var(--tw-leading, var(--text-5xl--line-height));
    }
  }
  .md\:grid-cols-2 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }
  .md\:grid-cols-3 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }
  }
  .md\:grid-cols-4 {
    @media (width >= 48rem) {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }
  }
  .md\:flex-col {
    @media (width >= 48rem) {
      flex-direction: column;
    }
  }
  .md\:flex-row {
    @media (width >= 48rem) {
      flex-direction: row;
    }
  }
  .md\:p-5 {
    @media (width >= 48rem) {
      padding: calc(var(--spacing) * 5);
    }
  }
  .md\:text-3xl {
    @media (width >= 48rem) {
      font-size: var(--text-3xl);
      line-height: var(--tw-leading, var(--text-3xl--line-height));
    }
  }
  .md\:text-4xl {
    @media (width >= 48rem) {
      font-size: var(--text-4xl);
      line-height: var(--tw-leading, var(--text-4xl--line-height));
    }
  }
  .md\:text-6xl {
    @media (width >= 48rem) {
      font-size: var(--text-6xl);
      line-height: var(--tw-leading, var(--text-6xl--line-height));
    }
  }
  .md\:text-7xl {
    @media (width >= 48rem) {
      font-size: var(--text-7xl);
      line-height: var(--tw-leading, var(--text-7xl--line-height));
    }
  }
  .md\:text-8xl {
    @media (width >= 48rem) {
      font-size: var(--text-8xl);
      line-height: var(--tw-leading, var(--text-8xl--line-height));
    }
  }
  .lg\:sticky {
    @media (width >= 64rem) {
      position: sticky;
    }
  }
  .lg\:z-auto {
    @media (width >= 64rem) {
      z-index: auto;
    }
  }
  .lg\:block {
    @media (width >= 64rem) {
      display: block;
    }
  }
  .lg\:hidden {
    @media (width >= 64rem) {
      display: none;
    }
  }
  .lg\:w-1\/4 {
    @media (width >= 64rem) {
      width: calc(1/4 * 100%);
    }
  }
  .lg\:w-3\/4 {
    @media (width >= 64rem) {
      width: calc(3/4 * 100%);
    }
  }
  .lg\:grid-cols-2 {
    @media (width >= 64rem) {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }
  .lg\:grid-cols-3 {
    @media (width >= 64rem) {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }
  }
  .lg\:flex-row {
    @media (width >= 64rem) {
      flex-direction: row;
    }
  }
  .lg\:px-8 {
    @media (width >= 64rem) {
      padding-inline: calc(var(--spacing) * 8);
    }
  }
  .lg\:text-6xl {
    @media (width >= 64rem) {
      font-size: var(--text-6xl);
      line-height: var(--tw-leading, var(--text-6xl--line-height));
    }
  }
  .dark\:border-blue-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-blue-800);
    }
  }
  .dark\:border-green-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-green-800);
    }
  }
  .dark\:border-orange-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-orange-800);
    }
  }
  .dark\:border-purple-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-purple-800);
    }
  }
  .dark\:border-red-800 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-red-800);
    }
  }
  .dark\:border-slate-700 {
    @media (prefers-color-scheme: dark) {
      border-color: var(--color-slate-700);
    }
  }
  .dark\:bg-blue-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-blue-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-blue-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/30 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 30%, transparent);
      }
    }
  }
  .dark\:bg-green-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-green-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-orange-900 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-orange-900);
    }
  }
  .dark\:bg-orange-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-purple-900\/40 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 40%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-purple-900) 40%, transparent);
      }
    }
  }
  .dark\:bg-red-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);
      }
    }
  }
  .dark\:bg-slate-800 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-800);
    }
  }
  .dark\:bg-slate-900 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-900);
    }
  }
  .dark\:bg-slate-900\/30 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-slate-900) 30%, transparent);
      }
    }
  }
  .dark\:bg-slate-900\/50 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 50%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-slate-900) 50%, transparent);
      }
    }
  }
  .dark\:bg-slate-950 {
    @media (prefers-color-scheme: dark) {
      background-color: var(--color-slate-950);
    }
  }
  .dark\:bg-yellow-900\/20 {
    @media (prefers-color-scheme: dark) {
      background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);
      }
    }
  }
  .dark\:from-blue-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-blue-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-blue-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(37.9% 0.146 265.522) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-blue-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-green-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-green-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-green-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-green-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/10 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 10%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 10%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-orange-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(40.8% 0.123 38.172) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-orange-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-purple-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: color-mix(in srgb, oklch(38.1% 0.176 304.987) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-from: color-mix(in oklab, var(--color-purple-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-slate-900 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: var(--color-slate-900);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:from-slate-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-from: var(--color-slate-950);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:via-blue-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-via: var(--color-blue-950);
      --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
      --tw-gradient-stops: var(--tw-gradient-via-stops);
    }
  }
  .dark\:to-cyan-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.8% 0.07 227.392) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-cyan-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-cyan-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.8% 0.07 227.392) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-cyan-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-emerald-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(37.8% 0.077 168.94) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-emerald-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-emerald-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(37.8% 0.077 168.94) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-emerald-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-indigo-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(35.9% 0.144 278.697) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-indigo-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-indigo-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(35.9% 0.144 278.697) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-indigo-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-pink-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(40.8% 0.153 2.432) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-pink-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-pink-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(40.8% 0.153 2.432) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-pink-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-purple-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-purple-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-purple-950 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-purple-950);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/10 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 10%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 10%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/20 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 20%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-red-900\/30 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: color-mix(in srgb, oklch(39.6% 0.141 25.723) 30%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-gradient-to: color-mix(in oklab, var(--color-red-900) 30%, transparent);
      }
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-slate-800 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-slate-800);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:to-stone-900 {
    @media (prefers-color-scheme: dark) {
      --tw-gradient-to: var(--color-stone-900);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .dark\:text-blue-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-100);
    }
  }
  .dark\:text-blue-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-200);
    }
  }
  .dark\:text-blue-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-300);
    }
  }
  .dark\:text-blue-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-blue-400);
    }
  }
  .dark\:text-green-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-100);
    }
  }
  .dark\:text-green-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-200);
    }
  }
  .dark\:text-green-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-300);
    }
  }
  .dark\:text-green-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-green-400);
    }
  }
  .dark\:text-orange-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-100);
    }
  }
  .dark\:text-orange-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-200);
    }
  }
  .dark\:text-orange-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-300);
    }
  }
  .dark\:text-orange-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-orange-400);
    }
  }
  .dark\:text-purple-100 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-100);
    }
  }
  .dark\:text-purple-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-200);
    }
  }
  .dark\:text-purple-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-300);
    }
  }
  .dark\:text-purple-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-purple-400);
    }
  }
  .dark\:text-red-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-red-300);
    }
  }
  .dark\:text-red-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-red-400);
    }
  }
  .dark\:text-slate-200 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-200);
    }
  }
  .dark\:text-slate-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-300);
    }
  }
  .dark\:text-slate-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-slate-400);
    }
  }
  .dark\:text-white {
    @media (prefers-color-scheme: dark) {
      color: var(--color-white);
    }
  }
  .dark\:text-yellow-300 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-yellow-300);
    }
  }
  .dark\:text-yellow-400 {
    @media (prefers-color-scheme: dark) {
      color: var(--color-yellow-400);
    }
  }
  .dark\:placeholder-slate-400 {
    @media (prefers-color-scheme: dark) {
      &::-moz-placeholder {
        color: var(--color-slate-400);
      }
      &::placeholder {
        color: var(--color-slate-400);
      }
    }
  }
  .dark\:hover\:bg-slate-800 {
    @media (prefers-color-scheme: dark) {
      &:hover {
        @media (hover: hover) {
          background-color: var(--color-slate-800);
        }
      }
    }
  }
  .dark\:hover\:text-white {
    @media (prefers-color-scheme: dark) {
      &:hover {
        @media (hover: hover) {
          color: var(--color-white);
        }
      }
    }
  }
  .dark\:focus\:ring-offset-slate-800 {
    @media (prefers-color-scheme: dark) {
      &:focus {
        --tw-ring-offset-color: var(--color-slate-800);
      }
    }
  }
  .dark\:focus\:ring-offset-slate-900 {
    @media (prefers-color-scheme: dark) {
      &:focus {
        --tw-ring-offset-color: var(--color-slate-900);
      }
    }
  }
}
.about-page {
  min-height: 100vh;
  background: var(--color-background);
}
.about-hero-background {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, rgba(var(--color-primary-rgb), 0.02) 0%, transparent 100%);
  z-index: 1;
}
.about-hero-content {
  position: relative;
  z-index: 2;
}
.about-story-timeline {
  position: relative;
}
.about-story-timeline::before {
  content: '';
  position: absolute;
  left: 2rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--color-border);
}
.about-story-chapter {
  position: relative;
  padding-left: 4rem;
}
.about-story-year {
  position: absolute;
  left: 0;
  top: 0;
  width: 4rem;
  height: 4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-background);
  border: 2px solid var(--color-primary);
  border-radius: 50%;
  font-weight: 700;
  color: var(--color-primary);
}
.about-vision-card,
.about-mission-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.about-vision-card:hover,
.about-mission-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}
.about-values-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
}
.about-value-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  text-align: center;
  transition: all 0.3s ease;
}
.about-value-card.featured {
  border: 2px solid var(--color-heritage);
  box-shadow: 0 0 20px rgba(var(--color-heritage-rgb), 0.15);
}
.about-value-example {
  margin-top: 1rem;
  padding: 1rem;
  background: var(--color-muted);
  border-radius: var(--radius-md);
  font-style: italic;
  font-size: 0.875rem;
}
.about-team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
}
.about-team-member {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  text-align: center;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.about-team-member:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.about-team-avatar {
  width: 6rem;
  height: 6rem;
  margin: 0 auto 1rem;
  border-radius: 50%;
  overflow: hidden;
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark));
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: 700;
  font-size: 1.5rem;
}
.about-team-avatar img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}
.about-team-expertise {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 1rem;
}
.about-expertise-tag {
  padding: 0.25rem 0.75rem;
  background: rgba(var(--color-primary-rgb), 0.1);
  color: var(--color-primary);
  border-radius: var(--radius-full);
  font-size: 0.75rem;
  font-weight: 500;
}
.about-team-social {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 1rem;
}
.about-social-link {
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--color-primary-rgb), 0.1);
  border-radius: 50%;
  transition: background-color 0.3s ease;
}
.about-social-link:hover {
  background: rgba(var(--color-primary-rgb), 0.2);
}
.about-milestones-timeline {
  position: relative;
  padding-left: 3rem;
}
.about-milestone-item {
  position: relative;
  padding-bottom: 3rem;
}
.about-milestone-item::before {
  content: '';
  position: absolute;
  left: -2.5rem;
  top: 0.5rem;
  width: 0.75rem;
  height: 0.75rem;
  background: var(--color-heritage);
  border-radius: 50%;
}
.about-milestone-item::after {
  content: '';
  position: absolute;
  left: -2.125rem;
  top: 1.25rem;
  bottom: -3rem;
  width: 2px;
  background: var(--color-border);
}
.about-milestone-item:last-child::after {
  display: none;
}
.about-milestone-content {
  background: rgba(var(--color-muted-rgb), 0.3);
  padding: 1.5rem;
  border-radius: var(--radius-lg);
}
.about-metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  text-align: center;
  margin-bottom: 3rem;
}
.about-metric-value {
  font-size: 3rem;
  font-weight: 700;
  color: var(--color-heritage);
  line-height: 1;
  margin-bottom: 0.5rem;
}
.about-metric-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 0.25rem;
}
.about-metric-description {
  font-size: 0.75rem;
  color: var(--color-text-muted);
}
.about-achievements-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  margin-top: 2rem;
}
.about-achievement-card {
  text-align: center;
  padding: 1.5rem;
}
.about-achievement-icon {
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--color-primary-rgb), 0.1);
  border-radius: var(--radius-lg);
}
.about-achievement-card.featured .about-achievement-icon {
  background: rgba(var(--color-heritage-rgb), 0.1);
}
.about-testimonial-card {
  background: var(--color-background);
  border-radius: var(--radius-lg);
  padding: 2rem;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.about-testimonial-card.featured {
  border: 2px solid var(--color-heritage);
  box-shadow: 0 0 20px rgba(var(--color-heritage-rgb), 0.1);
}
.about-testimonial-quote {
  font-size: 1.125rem;
  font-style: italic;
  color: var(--color-text);
  margin-bottom: 1.5rem;
  flex-grow: 1;
}
.about-testimonial-author {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.about-testimonial-avatar {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: var(--color-muted);
  flex-shrink: 0;
}
.about-testimonial-info {
  flex-grow: 1;
}
.about-testimonial-name {
  font-weight: 600;
  color: var(--color-primary);
  margin-bottom: 0.125rem;
}
.about-testimonial-role {
  font-size: 0.875rem;
  color: var(--color-text-muted);
}
.about-careers-section {
  background: var(--color-accent-light);
  padding: 4rem 0;
}
.about-careers-benefits,
.about-careers-culture {
  background: rgba(255, 255, 255, 0.8);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
}
.about-careers-list {
  list-style: none;
  padding: 0;
  margin: 0;
  space-y: 0.75rem;
}
.about-careers-list-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}
.about-careers-cta-buttons {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: center;
  margin-top: 2rem;
}
@media (min-width: 640px) {
  .about-careers-cta-buttons {
    flex-direction: row;
    justify-content: center;
  }
}
.about-final-cta {
  background: var(--color-primary);
  color: white;
  padding: 6rem 0;
  text-align: center;
}
.about-final-cta-title {
  color: white;
  margin-bottom: 1.5rem;
}
.about-final-cta-description {
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: 2rem;
}
.about-final-cta-buttons {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: center;
  margin-bottom: 2rem;
}
@media (min-width: 640px) {
  .about-final-cta-buttons {
    flex-direction: row;
    justify-content: center;
  }
}
.about-final-cta-trust {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.5rem;
  color: rgba(255, 255, 255, 0.7);
}
.about-trust-indicator {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
}
@media (max-width: 767px) {
  .about-story-timeline::before {
    left: 1rem;
  }
  .about-story-chapter {
    padding-left: 3rem;
  }
  .about-story-year {
    width: 3rem;
    height: 3rem;
    font-size: 0.875rem;
  }
  .about-values-grid,
  .about-team-grid,
  .about-achievements-grid {
    grid-template-columns: 1fr;
  }
  .about-metrics-grid {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .about-metric-value {
    font-size: 2.5rem;
  }
  .about-milestones-timeline {
    padding-left: 2rem;
  }
  .about-milestone-item::before {
    left: -1.5rem;
  }
  .about-milestone-item::after {
    left: -1.125rem;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .about-values-grid,
  .about-team-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .about-metrics-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.about-page .pwa-scroll-fade {
  animation-delay: calc(var(--stagger-index, 0) * 100ms);
}
.about-page .pwa-scroll-slide-left {
  animation-delay: calc(var(--stagger-index, 0) * 150ms);
}
.about-page .pwa-scroll-slide-right {
  animation-delay: calc(var(--stagger-index, 0) * 150ms);
}
@media print {
  .about-page {
    background: white;
  }
  .about-hero-background {
    display: none;
  }
  .about-team-social,
  .about-careers-cta-buttons,
  .about-final-cta-buttons {
    display: none;
  }
  .about-page section {
    page-break-inside: avoid;
  }
}
.breadcrumb-nav {
  padding: var(--space-4) 0;
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
  font-size: var(--text-sm);
}
.breadcrumb-list {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}
.breadcrumb-item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.breadcrumb-link {
  color: rgb(var(--color-text-secondary));
  text-decoration: none;
  transition: color var(--timing-fast) var(--ease-smooth);
  font-weight: 500;
}
.breadcrumb-link:hover {
  color: rgb(var(--color-primary));
  text-decoration: underline;
}
.breadcrumb-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.breadcrumb-current {
  color: rgb(var(--color-text));
  font-weight: 600;
}
.breadcrumb-separator {
  display: flex;
  align-items: center;
  color: rgb(var(--color-text-muted));
}
.breadcrumb-separator-icon {
  width: 1rem;
  height: 1rem;
}
@media (max-width: 767px) {
  .breadcrumb-nav {
    padding: var(--space-3) 0;
    font-size: var(--text-xs);
  }
  .breadcrumb-list {
    gap: var(--space-1);
  }
  .breadcrumb-item {
    gap: var(--space-1);
  }
  .breadcrumb-item:not(:first-child):not(:last-child) {
    display: none;
  }
  .breadcrumb-item:first-child::after {
    content: "...";
    margin: 0 var(--space-2);
    color: rgb(var(--color-text-muted));
  }
  .breadcrumb-item:first-child:nth-last-child(2)::after {
    display: none;
  }
}
@media (prefers-color-scheme: dark) {
  .breadcrumb-nav {
    background: rgb(var(--color-surface-dark));
    border-bottom-color: rgb(var(--color-border-dark));
  }
  .breadcrumb-link {
    color: rgb(var(--color-text-secondary-dark));
  }
  .breadcrumb-link:hover {
    color: rgb(var(--color-primary-dark));
  }
  .breadcrumb-current {
    color: rgb(var(--color-text-dark));
  }
}
@media print {
  .breadcrumb-nav {
    display: none;
  }
}
.btn-text {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-weight: inherit;
  line-height: 1.2;
}
.btn .icon-container-xs,
.btn .icon-container-sm {
  margin: 0;
  flex-shrink: 0;
}
.btn .icon-container-xs + .btn-text,
.btn .icon-container-sm + .btn-text {
  margin-left: var(--space-2);
}
.btn .btn-text + .icon-container-xs,
.btn .btn-text + .icon-container-sm {
  margin-left: var(--space-2);
}
.btn-block {
  display: flex;
  width: 100%;
  justify-content: center;
  align-items: center;
}
.btn-loading-spinner {
  display: inline-flex;
  align-items: center;
  margin-right: var(--space-2);
}
.loading-dots {
  display: inline-flex;
  gap: var(--space-1);
}
.loading-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: currentColor;
  opacity: 0.3;
  animation: pulse 1.4s ease-in-out infinite;
}
.loading-dot:nth-child(2) {
  animation-delay: 0.2s;
}
.loading-dot:nth-child(3) {
  animation-delay: 0.4s;
}
@keyframes pulse {
  0%, 60%, 100% {
    opacity: 0.3;
    transform: scale(1);
  }
  30% {
    opacity: 1;
    transform: scale(1.2);
  }
}
.btn-disabled {
  position: relative;
  overflow: hidden;
}
.btn-disabled::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.5);
  pointer-events: none;
}
.touch-scale {
  transition: transform var(--timing-fast) ease-out;
  -webkit-tap-highlight-color: transparent;
}
.touch-scale:active {
  transform: scale(0.96);
}
.btn {
  will-change: transform, box-shadow;
  backface-visibility: hidden;
  transform-style: preserve-3d;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.btn:hover:not(:disabled):not(.btn-disabled) {
  transform: translateY(-1px);
}
.btn:active:not(:disabled):not(.btn-disabled) {
  transform: translateY(0);
}
.btn:not(:hover):not(:focus):not(:active) {
  will-change: auto;
}
.btn:focus-visible {
  outline-offset: 2px;
  position: relative;
  z-index: 1;
}
.btn:has(.icon-container-xs):not(:has(.btn-text)),
.btn:has(.icon-container-sm):not(:has(.btn-text)) {
  padding: var(--space-2);
  min-width: 48px;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
@media (max-width: 767px) {
  .btn {
    min-height: 48px;
    font-size: max(1rem, 16px);
  }
  .btn:has(.icon-container-xs):not(:has(.btn-text)),
  .btn:has(.icon-container-sm):not(:has(.btn-text)) {
    min-width: 52px;
    min-height: 52px;
  }
  .touch-scale:active {
    transform: scale(0.94);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .btn {
    min-height: 44px;
  }
}
@media (min-width: 1024px) {
  .btn {
    min-height: 40px;
  }
  .btn:hover:not(:disabled):not(.btn-disabled) {
    transform: translateY(-2px);
  }
  .btn:has(.icon-container-xs):not(:has(.btn-text)),
  .btn:has(.icon-container-sm):not(:has(.btn-text)) {
    min-width: 40px;
    min-height: 40px;
  }
}
@media (min-width: 2560px) {
  .btn:hover:not(:disabled):not(.btn-disabled) {
    transform: translateY(-3px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none !important;
  }
  .loading-dot {
    animation: none !important;
  }
  .touch-scale:active {
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .btn {
    border: 2px solid currentColor;
  }
  .btn:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 3px;
  }
}
.btn-loading {
  position: relative;
  color: transparent;
  pointer-events: none;
}
.btn-loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1rem;
  height: 1rem;
  margin-top: -0.5rem;
  margin-left: -0.5rem;
  border: 2px solid currentColor;
  border-radius: 50%;
  border-top-color: transparent;
  animation: btn-spin 1s linear infinite;
}
@keyframes btn-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.btn-icon-left {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.btn-icon-right {
  display: flex;
  align-items: center;
  flex-direction: row-reverse;
  gap: 0.5rem;
}
.btn-xs {
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
}
.btn-sm {
  padding: 0.5rem 0.75rem;
  font-size: 0.875rem;
}
.btn-md {
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
}
.btn-lg {
  padding: 1rem 1.5rem;
  font-size: 1rem;
}
.btn-xl {
  padding: 1.25rem 2rem;
  font-size: 1.125rem;
}
.btn-full {
  width: 100%;
  justify-content: center;
}
.btn-auto {
  width: auto;
}
@media (max-width: 640px) {
  .btn-responsive {
    width: 100%;
    justify-content: center;
  }
}
:root {
  --capabilities-padding: 5rem 0;
  --capabilities-grid-cols: repeat(auto-fit, minmax(300px, 1fr));
  --capabilities-grid-gap: 2rem;
  --capabilities-title-size: 2.25rem;
  --capabilities-title-weight: 700;
  --capabilities-title-color: #0f172a;
  --capabilities-title-color-dark: #ffffff;
  --capabilities-title-margin: 0 0 1rem 0;
  --capabilities-desc-size: 1.25rem;
  --capabilities-desc-color: #475569;
  --capabilities-desc-color-dark: #cbd5e1;
  --capabilities-desc-margin: 0 0 4rem 0;
}
.capabilities {
  padding: var(--capabilities-padding);
  transition: color 0.3s ease;
}
.capabilities__container {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1.5rem;
}
.capabilities__header {
  text-align: center;
  margin-bottom: 4rem;
}
.capabilities__title {
  font-size: var(--capabilities-title-size);
  font-weight: var(--capabilities-title-weight);
  color: var(--capabilities-title-color);
  margin: var(--capabilities-title-margin);
  line-height: 1.1;
}
.dark .capabilities__title {
  color: var(--capabilities-title-color-dark);
}
.capabilities__description {
  font-size: var(--capabilities-desc-size);
  color: var(--capabilities-desc-color);
  margin: var(--capabilities-desc-margin);
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.625;
}
.dark .capabilities__description {
  color: var(--capabilities-desc-color-dark);
}
.capabilities__grid {
  display: grid;
  grid-template-columns: var(--capabilities-grid-cols);
  gap: var(--capabilities-grid-gap);
}
@media (max-width: 768px) {
  :root {
    --capabilities-padding: 4rem 0;
    --capabilities-title-size: 1.875rem;
    --capabilities-desc-size: 1.125rem;
    --capabilities-grid-cols: 1fr;
    --capabilities-grid-gap: 1.5rem;
  }
  .capabilities__container {
    padding: 0 1rem;
  }
  .capabilities__header {
    margin-bottom: 3rem;
  }
}
@media (max-width: 480px) {
  :root {
    --capabilities-padding: 3rem 0;
    --capabilities-title-size: 1.5rem;
    --capabilities-desc-size: 1rem;
  }
}
.capability-card {
  padding: calc(var(--space-8) * 1.3);
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.capability-card:hover {
  border: 0;
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
}
.capability-card:active {
  transform: scale(0.98) translateY(-2px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.capability-card:not(:hover):not(:focus) {
  will-change: auto;
}
.capability-card-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) * 1.3);
}
.capability-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--space-16) * 1.3);
  height: calc(var(--space-16) * 1.3);
  border-radius: var(--radius-lg);
  margin-bottom: calc(var(--space-6) * 1.3);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.capability-card:hover .capability-card-icon {
  transform: scale(1.05);
}
.capability-icon {
  color: rgb(var(--color-primary));
  width: var(--space-12);
  height: var(--space-12);
}
.capability-content {
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) * 1.3);
}
.capability-card-title {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.capability-card-description {
  line-height: 1.6;
  margin-bottom: calc(var(--space-4) * 1.3);
}
.capability-card-features {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-3) * 1.3);
}
.capability-feature {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--space-3) * 1.3);
}
.capability-feature-icon {
  flex-shrink: 0;
  width: var(--space-5);
  height: var(--space-5);
  color: rgb(var(--color-success));
  margin-top: 2px;
}
.capability-feature-text {
  flex: 1;
  line-height: 1.6;
}
.capability-card-primary {
  background: rgb(var(--color-card));
}
.capability-card-secondary {
  background: rgb(var(--color-secondary) / 0.05);
}
.capability-card-heritage {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-8) * 1.3 + var(--space-2));
  background: rgba(var(--color-accent-heritage) / 0.02);
  margin: calc(var(--space-8) * 1.3) 0;
}
.capability-card-heritage:hover {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
  background: rgba(var(--color-accent-heritage) / 0.04);
}
@media (max-width: 767px) {
  .capability-card {
    padding: calc(var(--space-6) * 1.3);
  }
  .capability-card-icon {
    width: calc(var(--space-12) * 1.3);
    height: calc(var(--space-12) * 1.3);
    margin-bottom: calc(var(--space-4) * 1.3);
  }
  .capability-icon {
    width: var(--space-8);
    height: var(--space-8);
  }
  .capability-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .capability-card {
    padding: calc(var(--space-8) * 1.2);
  }
}
@media (min-width: 2560px) {
  .capability-card {
    padding: calc(var(--space-12) * 1.3);
    border-radius: var(--radius-xl);
  }
  .capability-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
  }
}
.capability-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
@media (prefers-contrast: high) {
  .capability-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .capability-card-heritage {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .capability-card,
  .capability-card-icon,
  .capability-feature-icon {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
  .capability-card:hover,
  .capability-card:active {
    transform: none !important;
  }
}
.challenges-container {
  padding: var(--space-8) 0;
  background: rgb(var(--color-background));
  color: rgb(var(--color-foreground));
  min-height: 500px;
  position: relative;
}
@media (prefers-color-scheme: dark) {
  .challenges-container {
    background: rgb(var(--color-background));
  }
}
.challenges-header {
  text-align: center;
  margin-bottom: var(--space-12);
  padding: 0 var(--space-4);
}
.challenges-layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: var(--space-8);
  align-items: start;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 var(--space-6);
}
@media (max-width: 767px) {
  .challenges-layout {
    grid-template-columns: 1fr;
    gap: var(--space-6);
    padding: 0 var(--space-4);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .challenges-layout {
    grid-template-columns: 280px 1fr;
    gap: var(--space-6);
  }
}
.challenges-sidebar {
  background: rgb(var(--color-muted) / 0.03);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  transition: all var(--timing-fast) var(--ease-smooth);
}
@media (prefers-color-scheme: dark) {
  .challenges-sidebar {
    background: rgb(var(--color-muted) / 0.05);
  }
}
@media (min-width: 768px) {
  .challenges-sidebar {
    position: sticky;
    top: calc(80px + var(--space-4));
  }
}
@media (max-width: 767px) {
  .challenges-sidebar {
    display: flex;
    gap: var(--space-3);
    overflow-x: auto;
    padding: var(--space-3);
    border-radius: var(--radius-md);
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .challenges-sidebar::-webkit-scrollbar {
    display: none;
  }
}
.challenge-nav-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  margin-bottom: var(--space-3);
  border-radius: var(--radius-md);
  background: transparent;
  cursor: pointer;
  transition: all var(--timing-fast) var(--ease-smooth);
  min-height: 72px;
  width: 100%;
  text-align: left;
  font-family: inherit;
  font-size: inherit;
  color: inherit;
}
.challenge-nav-item:last-child {
  margin-bottom: 0;
}
@media (max-width: 767px) {
  .challenge-nav-item {
    flex-shrink: 0;
    width: 280px;
    margin-bottom: 0;
    margin-right: var(--space-3);
    min-height: 64px;
  }
  .challenge-nav-item:last-child {
    margin-right: 0;
  }
}
.challenge-nav-item:hover:not(.active) {
  background: rgb(var(--color-muted) / 0.08);
  transform: translateX(2px);
}
.challenge-nav-item.active {
  background: rgb(var(--color-muted) / 0.1);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage));
  font-weight: 600;
  margin-top: var(--space-2);
  margin-bottom: calc(var(--space-3) + var(--space-2));
}
@media (prefers-color-scheme: dark) {
  .challenge-nav-item:hover:not(.active) {
    background: rgb(var(--color-muted) / 0.15);
  }
  .challenge-nav-item.active {
    background: rgb(var(--color-muted) / 0.2);
    box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage));
  }
}
.challenge-nav-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.challenge-nav-title {
  font-weight: 500;
  font-size: 1rem;
  line-height: 1.4;
  color: rgb(var(--color-foreground));
  display: block;
}
.challenge-nav-description {
  font-size: 0.875rem;
  line-height: 1.4;
  color: rgb(var(--color-muted-foreground));
  opacity: 0.8;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.challenges-content {
  background: rgb(var(--color-card));
  border-radius: var(--radius-lg);
  overflow: hidden;
}
@media (prefers-color-scheme: dark) {
  .challenges-content {
    background: rgb(var(--color-card));
  }
}
.challenge-detail {
  display: none;
  padding: var(--space-6);
  animation: fadeIn var(--timing-fast) var(--ease-smooth);
}
.challenge-detail.active {
  display: block;
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.challenge-detail-header {
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-6);
}
.challenge-comparison {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-8);
  margin: var(--space-6) 0;
  padding: var(--space-6) 0;
}
@media (max-width: 767px) {
  .challenge-comparison {
    grid-template-columns: 1fr;
    gap: var(--space-6);
    margin: var(--space-4) 0;
    padding: var(--space-4) 0;
  }
}
.challenge-problems,
.challenge-solutions {
  padding: var(--space-4);
}
.challenge-problems {
  padding-right: var(--space-6);
}
@media (max-width: 767px) {
  .challenge-problems {
    padding-right: 0;
    padding-bottom: var(--space-6);
  }
  .challenge-solutions {
    padding-top: var(--space-6);
  }
}
.challenge-problems-list,
.challenge-solutions-list {
  list-style: none;
  padding: 0;
  margin: var(--space-4) 0 0 0;
}
.challenge-problem-item,
.challenge-solution-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  line-height: 1.6;
}
.challenge-problem-item svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: rgb(var(--color-destructive));
}
.challenge-solution-item svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: rgb(var(--color-success));
}
.challenge-metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
  padding: var(--space-6) 0;
  margin-top: var(--space-6);
}
@media (max-width: 767px) {
  .challenge-metrics {
    grid-template-columns: 1fr;
    padding: var(--space-4);
  }
}
.metric-card {
  background: rgb(var(--color-muted) / 0.05);
  padding: var(--space-6);
  border-radius: var(--radius-md);
  text-align: center;
  transition: all var(--timing-fast) var(--ease-smooth);
}
@media (prefers-color-scheme: dark) {
  .metric-card {
    background: rgb(var(--color-muted) / 0.08);
  }
}
.metric-card:hover {
  transform: translateY(-2px);
  background: rgb(var(--color-muted) / 0.1);
}
@media (prefers-color-scheme: dark) {
  .metric-card:hover {
    background: rgb(var(--color-muted) / 0.15);
  }
}
.metric-value {
  font-size: 2rem;
  font-weight: 700;
  color: rgb(var(--color-primary));
  line-height: 1.2;
  margin-bottom: var(--space-2);
}
.metric-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: rgb(var(--color-foreground));
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--space-1);
}
.metric-description {
  font-size: 0.875rem;
  color: rgb(var(--color-muted-foreground));
  opacity: 0.8;
  line-height: 1.4;
}
.challenge-nav-item:focus-visible {
  outline: 3px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.challenge-nav-item:focus:not(:focus-visible) {
  outline: none;
}
@media (prefers-reduced-motion: reduce) {
  .challenge-nav-item,
  .challenge-detail,
  .metric-card {
    transition: none;
    animation: none;
  }
}
@media (prefers-contrast: high) {
  .challenge-nav-item.active {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
  .challenge-problems,
  .challenge-solutions {
    border: 1px solid currentColor;
  }
  .metric-card {
    border: 2px solid currentColor;
  }
}
@media print {
  .challenges-sidebar {
    display: none;
  }
  .challenge-detail {
    display: block !important;
    page-break-inside: avoid;
    margin-bottom: var(--space-8);
  }
  .challenges-layout {
    grid-template-columns: 1fr;
  }
  .challenge-metrics {
    page-break-inside: avoid;
  }
}
.code-example {
  background: rgb(var(--color-card));
  border-radius: var(--radius-md);
  border: 1px solid rgb(var(--color-border));
  overflow: hidden;
  margin-bottom: var(--space-6);
}
.code-example-header {
  padding: var(--space-4) var(--space-5);
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
}
.code-example-header-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.code-example-title {
  font-size: var(--text-lg);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
  margin: 0;
}
.code-example-description {
  font-size: var(--text-sm);
  color: rgb(var(--color-text-secondary));
  margin: 0;
}
.code-example-block {
  position: relative;
  background: #191c2c;
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}
.code-example-language {
  position: absolute;
  top: var(--space-2);
  right: var(--space-3);
  font-size: var(--text-xs);
  color: #94a3b8;
  text-transform: lowercase;
  font-family: var(--font-mono);
  padding: var(--space-1) var(--space-2);
  background: rgba(148, 163, 184, 0.1);
  border-radius: var(--radius-sm);
  z-index: 1;
}
.code-example-pre {
  margin: 0;
  padding: var(--space-5);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}
.code-example-code {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  line-height: 1.6;
  color: #22d3ee;
  display: block;
  white-space: pre;
}
.code-example-code.language-yaml {
  color: #22d3ee;
}
.code-example-code.language-bash {
  color: #86efac;
}
.code-example-code.language-json {
  color: #fbbf24;
}
.code-example-code.language-typescript,
.code-example-code.language-javascript {
  color: #a5f3fc;
}
.code-example-pre::-webkit-scrollbar {
  height: 8px;
  background: rgba(148, 163, 184, 0.1);
}
.code-example-pre::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.3);
  border-radius: var(--radius-sm);
}
.code-example-pre::-webkit-scrollbar-thumb:hover {
  background: rgba(148, 163, 184, 0.5);
}
@media (max-width: 767px) {
  .code-example {
    margin-bottom: var(--space-4);
    border-radius: var(--radius-sm);
  }
  .code-example-header {
    padding: var(--space-3) var(--space-4);
  }
  .code-example-title {
    font-size: var(--text-base);
  }
  .code-example-pre {
    padding: var(--space-4);
  }
  .code-example-code {
    font-size: var(--text-xs);
  }
  .code-example-language {
    font-size: 10px;
    padding: 2px 6px;
  }
}
@media (prefers-color-scheme: dark) {
  .code-example {
    background: rgb(var(--color-card-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .code-example-header {
    background: rgb(var(--color-surface-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .code-example-block {
    background: #0f1117;
  }
}
.code-example.code-example-compact .code-example-header {
  padding: var(--space-3) var(--space-4);
  background: transparent;
  border-bottom: none;
}
.code-example.code-example-compact .code-example-title {
  font-size: var(--text-base);
}
.code-example.code-example-inline {
  background: transparent;
  border: none;
  margin-bottom: var(--space-3);
}
.code-example.code-example-inline .code-example-block {
  background: #191c2c;
  border-radius: var(--radius-sm);
}
.comparison-wrapper {
  width: 100% !important;
  position: relative;
  display: flex !important;
  flex-direction: column;
  gap: var(--space-8);
  overflow-x: auto;
  visibility: visible !important;
  opacity: 1 !important;
  background: linear-gradient(
    to bottom,
    rgba(var(--color-primary-50), 0.02) 0%,
    transparent 40%
  );
  border-radius: var(--radius-xl);
  padding: var(--space-2);
}
.comparison-global-headers {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-8);
  position: relative;
}
.comparison-global-header {
  padding: var(--space-6) var(--space-4);
  background: linear-gradient(135deg, 
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-primary-50), 0.3) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.3);
  border-radius: var(--radius-lg);
  text-align: center;
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.05),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-global-header::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.1) 0%,
    transparent 60%
  );
  pointer-events: none;
}
.comparison-global-header:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow: 0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.06),
    0 16px 32px rgba(var(--color-primary-900), 0.08),
    0 24px 48px rgba(var(--color-primary-900), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.4) 100%
  );
  border-color: rgba(var(--color-primary-300), 0.4);
}
.comparison-global-header.comparison-primary-header {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.2) 50%,
    rgba(var(--color-accent-heritage-100), 0.1) 100%
  );
  border-color: rgba(var(--color-accent-heritage), 0.12);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.15),
    inset 0 0 20px rgba(var(--color-accent-heritage), 0.03);
}
.comparison-global-header.comparison-primary-header::after {
  content: '';
  position: absolute;
  inset: -50%;
  background: radial-gradient(
    circle at center,
    rgba(var(--color-accent-heritage), 0.05) 0%,
    transparent 70%
  );
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--timing-slow) var(--easing-smooth);
}
.comparison-global-header.comparison-primary-header:hover {
  border-color: rgba(var(--color-accent-heritage), 0.18);
  box-shadow: 0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    0 16px 32px rgba(var(--color-accent-heritage), 0.1),
    0 24px 48px rgba(var(--color-primary-900), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.2),
    inset 0 0 30px rgba(var(--color-accent-heritage), 0.05);
  transform: translateY(-5px) scale(1.02);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-accent-heritage-50), 0.25) 50%,
    rgba(var(--color-accent-heritage-100), 0.15) 100%
  );
}
.comparison-global-header.comparison-primary-header:hover::after {
  opacity: 1;
}
.comparison-category-section {
  position: relative;
  padding-bottom: var(--space-6);
  margin-bottom: var(--space-6);
}
.comparison-category-title {
  color: rgb(var(--color-primary-700));
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.875em;
  text-align: center;
  position: relative;
  padding: var(--space-2) var(--space-4);
}
.comparison-category-title::after {
  content: '';
  position: absolute;
  bottom: calc(-1 * var(--space-1));
  left: 50%;
  transform: translateX(-50%);
  width: var(--space-16);
  height: var(--space-0-5);
  background: linear-gradient(90deg,
    transparent,
    rgb(var(--color-primary-400)),
    transparent
  );
  border-radius: var(--radius-full);
}
.comparison-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
}
.comparison-table thead th {
  width: 33.333%;
  vertical-align: top;
  padding: 0;
  border: none;
}
.comparison-feature-column {
  width: calc(var(--space-72) - var(--space-2));
  text-align: center;
  position: relative;
}
.comparison-table tbody {
  position: relative;
}
.comparison-table tr {
  position: relative;
  display: table-row;
}
.comparison-table td {
  vertical-align: middle;
  padding: 0;
  border: none;
  position: relative;
}
.comparison-feature-card {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.15) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.25);
  border-radius: var(--radius-lg);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.04),
    0 8px 16px rgba(var(--color-primary-900), 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.comparison-feature-row {
  margin-bottom: var(--space-4);
}
.comparison-feature-row td {
  padding: var(--space-4);
}
.comparison-feature-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-lg);
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.05) 0%,
    transparent 50%
  );
  pointer-events: none;
}
.comparison-feature-card:hover {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-primary-50), 0.2) 100%
  );
  transform: translateY(-6px) scale(1.01);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.05),
    0 8px 16px rgba(var(--color-primary-900), 0.07),
    0 16px 32px rgba(var(--color-primary-900), 0.09),
    0 24px 48px rgba(var(--color-primary-900), 0.11),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
  border-color: rgba(var(--color-primary-300), 0.35);
  backdrop-filter: blur(15px) saturate(1.1);
  -webkit-backdrop-filter: blur(15px) saturate(1.1);
}
.comparison-feature-header {
  text-align: center;
  padding: var(--space-4);
  background: linear-gradient(to bottom,
    rgba(var(--color-primary-50), 0.05) 0%,
    transparent 100%
  );
  border-left: 1px solid rgba(var(--color-primary-200), 0.15);
  border-right: 1px solid rgba(var(--color-primary-200), 0.15);
  position: relative;
}
.comparison-table .comparison-feature-name {
  text-align: center;
  margin-bottom: var(--space-1);
}
.comparison-table .comparison-feature-description {
  text-align: center;
  max-width: calc(var(--space-72) - var(--space-2));
  margin: 0 auto;
  opacity: 0.8;
}
.comparison-feature-name {
  text-align: left;
  margin-bottom: var(--space-1);
}
.comparison-feature-description {
  max-width: 100%;
  margin: 0;
  opacity: 0.8;
  text-align: left;
}
.comparison-value-card {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-primary-50), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.2);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  transition: all var(--timing-fast) var(--easing-smooth);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.comparison-value-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.04) 45%,
    rgba(255, 255, 255, 0.08) 50%,
    rgba(255, 255, 255, 0.04) 55%,
    transparent 60%
  );
  transform: translateX(-100%);
  transition: transform 0.6s var(--easing-smooth);
}
.comparison-feature-card:hover .comparison-value-card::before {
  transform: translateX(100%);
}
.comparison-value-content {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: var(--space-16);
  padding: var(--space-2);
}
.comparison-value-card.comparison-primary-column {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.15) 50%,
    rgba(var(--color-accent-heritage-100), 0.08) 100%
  );
  border: 1px solid rgba(var(--color-accent-heritage), 0.1);
  position: relative;
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.02),
    0 2px 4px rgba(var(--color-accent-heritage), 0.03),
    0 4px 8px rgba(var(--color-accent-heritage), 0.04),
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 0 12px rgba(var(--color-accent-heritage), 0.02);
}
.comparison-value-card.comparison-primary-column::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(var(--color-accent-heritage), 0.06) 0%,
    transparent 70%
  );
  opacity: 0;
  transition: opacity var(--timing-slow) var(--easing-smooth);
  pointer-events: none;
}
.comparison-feature-card:hover .comparison-value-card.comparison-primary-column::after {
  opacity: 1;
}
.comparison-value-wrapper {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  justify-content: center;
}
.comparison-checkmark {
  color: rgb(var(--color-success));
  font-size: 1.5rem;
  font-weight: var(--font-weight-bold);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-10);
  min-height: var(--space-12);
  background: linear-gradient(135deg,
    rgba(var(--color-success), 0.12) 0%,
    rgba(var(--color-success), 0.04) 100%
  );
  border: 1px solid rgba(var(--color-success), 0.15);
  border-radius: var(--radius-full);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  box-shadow: 0 1px 2px rgba(var(--color-success), 0.04),
    0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-checkmark::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: var(--radius-full);
  border: 2px solid rgba(var(--color-success), 0.2);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--timing-fast) var(--easing-smooth);
}
.comparison-feature-row:hover .comparison-checkmark {
  transform: scale(1.15) rotate(5deg);
  background: linear-gradient(135deg,
    rgba(var(--color-success), 0.16) 0%,
    rgba(var(--color-success), 0.06) 100%
  );
  border-color: rgba(var(--color-success), 0.25);
  box-shadow: 0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    0 8px 16px rgba(var(--color-success), 0.1),
    0 12px 24px rgba(var(--color-success), 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-feature-row:hover .comparison-checkmark::after {
  opacity: 1;
  transform: scale(1);
}
.comparison-xmark {
  color: rgb(var(--color-muted-foreground));
  opacity: 0.4;
  font-size: 1.25rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-8);
  min-height: var(--space-8);
  transition: opacity var(--timing-fast) var(--easing-standard);
}
.comparison-feature-row:hover .comparison-xmark {
  opacity: 0.6;
}
.comparison-custom-value {
  color: rgb(var(--color-primary-700));
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-relaxed);
  padding: var(--space-2) var(--space-4);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.25) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.25);
  border-radius: var(--radius-md);
  display: inline-block;
  transition: all var(--timing-fast) var(--easing-smooth);
  text-align: center;
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
  box-shadow: 0 1px 2px rgba(var(--color-primary-900), 0.02),
    0 2px 4px rgba(var(--color-primary-900), 0.03),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.comparison-custom-value::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.03) 50%,
    transparent 60%
  );
  transform: translateX(-100%);
  transition: transform 0.8s var(--easing-smooth);
}
.comparison-feature-row:hover .comparison-custom-value {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-primary-50), 0.3) 100%
  );
  transform: translateY(-3px) scale(1.02);
  box-shadow: 0 2px 4px rgba(var(--color-primary-900), 0.03),
    0 4px 8px rgba(var(--color-primary-900), 0.05),
    0 8px 16px rgba(var(--color-primary-900), 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
  border-color: rgba(var(--color-primary-300), 0.35);
}
.comparison-feature-row:hover .comparison-custom-value::before {
  transform: translateX(100%);
}
.comparison-primary-column .comparison-custom-value {
  color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-accent-heritage-50), 0.2) 50%,
    rgba(var(--color-accent-heritage-100), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-accent-heritage), 0.1);
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.03),
    0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.1),
    inset 0 0 8px rgba(var(--color-accent-heritage), 0.02);
}
.comparison-feature-row:hover .comparison-primary-column .comparison-custom-value {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 1) 0%,
    rgba(var(--color-accent-heritage-50), 0.25) 50%,
    rgba(var(--color-accent-heritage-100), 0.12) 100%
  );
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.04),
    0 4px 8px rgba(var(--color-accent-heritage), 0.06),
    0 8px 16px rgba(var(--color-accent-heritage), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.15),
    inset 0 0 12px rgba(var(--color-accent-heritage), 0.03);
  border-color: rgba(var(--color-accent-heritage), 0.15);
  transform: translateY(-4px) scale(1.03);
}
.comparison-performance-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: calc(var(--space-2) * 0.75) var(--space-3);
  border-radius: var(--radius-md);
  font-size: 0.875rem;
  font-weight: var(--font-weight-medium);
  transition: all var(--timing-fast) var(--easing-smooth);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}
.comparison-performance-excellent {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-success), 0.08) 100%
  );
  color: rgb(var(--color-success));
  border: 1px solid rgba(var(--color-success), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-success), 0.04),
    0 2px 4px rgba(var(--color-success), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-good {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-info), 0.08) 100%
  );
  color: rgb(var(--color-info));
  border: 1px solid rgba(var(--color-info), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-info), 0.04),
    0 2px 4px rgba(var(--color-info), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-moderate {
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.95) 0%,
    rgba(var(--color-warning), 0.08) 100%
  );
  color: rgb(var(--color-warning));
  border: 1px solid rgba(var(--color-warning), 0.2);
  box-shadow: 0 1px 2px rgba(var(--color-warning), 0.04),
    0 2px 4px rgba(var(--color-warning), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-performance-badge:hover {
  transform: translateY(-2px) scale(1.02);
}
.comparison-performance-excellent:hover {
  box-shadow: 0 2px 4px rgba(var(--color-success), 0.06),
    0 4px 8px rgba(var(--color-success), 0.08),
    0 8px 16px rgba(var(--color-success), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-performance-good:hover {
  box-shadow: 0 2px 4px rgba(var(--color-info), 0.06),
    0 4px 8px rgba(var(--color-info), 0.08),
    0 8px 16px rgba(var(--color-info), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-performance-moderate:hover {
  box-shadow: 0 2px 4px rgba(var(--color-warning), 0.06),
    0 4px 8px rgba(var(--color-warning), 0.08),
    0 8px 16px rgba(var(--color-warning), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  margin-left: var(--space-1);
  color: rgb(var(--color-muted-foreground));
  font-size: var(--font-size-sm);
  background: rgba(var(--color-muted), 0.5);
  border-radius: 50%;
  cursor: help;
  transition: all var(--timing-fast) var(--easing-standard);
  vertical-align: middle;
}
.comparison-info-icon:hover {
  color: rgb(var(--color-primary));
  background: rgba(var(--color-primary), 0.1);
  transform: scale(1.1);
}
@media (min-width: 768px) {
  .comparison-desktop-view {
    display: block !important;
  }
  .comparison-mobile-view {
    display: none !important;
  }
  .comparison-table thead th {
    padding: var(--space-6) var(--space-4);
  }
  .comparison-feature-column {
    width: calc(var(--space-72) - var(--space-2));
  }
  .comparison-checkmark {
    font-size: 1.75rem;
    min-width: var(--space-12);
    min-height: var(--space-12);
  }
  .comparison-custom-value {
    padding: var(--space-3) var(--space-6);
    font-size: 1.05em;
  }
}
@media (min-width: 1024px) {
  .comparison-feature-column {
    width: calc(var(--space-80) + var(--space-10));
  }
  .comparison-table .comparison-feature-description {
    max-width: var(--space-80);
  }
}
@media (max-width: 767px) {
  .comparison-desktop-view {
    display: none !important;
  }
  .comparison-table {
    display: none;
  }
  .comparison-global-headers {
    grid-template-columns: 1fr;
    gap: var(--space-3);
    margin-bottom: var(--space-6);
  }
  .comparison-global-header {
    padding: var(--space-4);
  }
  .comparison-feature-card {
    padding: var(--space-4);
    margin-bottom: var(--space-4);
  }
  .comparison-feature-row {
    display: none;
  }
  .comparison-feature-header {
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-3);
  }
  .comparison-value-card {
    padding: var(--space-3);
    min-height: auto;
  }
  .comparison-value-content {
    min-height: var(--space-12);
  }
  .comparison-custom-value {
    padding: var(--space-2) var(--space-3);
    font-size: 0.875em;
  }
  .comparison-feature-card:hover {
    transform: translateY(-2px);
  }
  .comparison-category-section {
    padding-bottom: var(--space-4);
    margin-bottom: var(--space-4);
  }
  .comparison-category-title {
    width: 100%;
    font-size: 0.8125em;
  }
  .comparison-performance-badge {
    width: 100%;
    justify-content: center;
    padding: var(--space-2) var(--space-3);
  }
  .comparison-feature-description {
    font-size: 0.875em;
  }
  .comparison-checkmark {
    min-width: var(--space-12);
    min-height: var(--space-12);
    font-size: 1.5rem;
  }
  .comparison-xmark {
    min-width: var(--space-12);
    min-height: var(--space-12);
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}
.comparison-desktop-view {
  display: none;
}
.comparison-mobile-view {
  display: block;
}
.comparison-badge {
  display: inline-flex;
  align-items: center;
  padding: calc(var(--space-1) * 0.75) var(--space-2);
  background: linear-gradient(135deg,
    rgba(var(--color-accent-heritage), 0.12) 0%,
    rgba(var(--color-accent-heritage), 0.06) 100%
  );
  color: rgb(var(--color-accent-heritage));
  border: 1px solid rgba(var(--color-accent-heritage), 0.15);
  border-radius: var(--radius-full);
  font-size: 0.875rem;
  font-weight: var(--font-weight-medium);
  transition: all var(--timing-fast) var(--easing-smooth);
  box-shadow: 0 1px 2px rgba(var(--color-accent-heritage), 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.comparison-badge:hover {
  background: linear-gradient(135deg,
    rgba(var(--color-accent-heritage), 0.16) 0%,
    rgba(var(--color-accent-heritage), 0.08) 100%
  );
  border-color: rgba(var(--color-accent-heritage), 0.2);
  transform: translateY(-1px) scale(1.02);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage), 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
.comparison-mobile {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}
.comparison-mobile-card {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: all var(--timing-fast) var(--easing-smooth);
  background: linear-gradient(135deg,
    rgba(var(--color-background), 0.98) 0%,
    rgba(var(--color-primary-50), 0.1) 100%
  );
  border: 1px solid rgba(var(--color-primary-200), 0.2);
  box-shadow: 0 4px 6px rgba(var(--color-primary-900), 0.02),
    0 8px 16px rgba(var(--color-primary-900), 0.04),
    0 16px 32px rgba(var(--color-primary-900), 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-bottom: var(--space-6);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.comparison-mobile-primary {
  border-color: rgba(var(--color-accent-heritage), 0.2);
  box-shadow: 0 0 0 1px rgba(var(--color-accent-heritage), 0.1),
    0 var(--space-1) var(--space-3) rgba(var(--color-accent-heritage), 0.08),
    0 var(--space-2) var(--space-6) rgba(var(--color-primary-900), 0.04);
}
.comparison-mobile-header {
  text-align: center;
  border-bottom: 1px solid rgba(var(--color-border), 0.5);
  padding: var(--space-6) var(--space-4);
  padding-bottom: var(--space-4);
  background: linear-gradient(to bottom,
    rgba(var(--color-primary-50), 0.03) 0%,
    transparent 100%
  );
}
.comparison-mobile-feature {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: var(--space-4);
  border-bottom: 1px solid rgba(var(--color-border), 0.3);
  transition: background-color var(--timing-fast) var(--easing-standard);
  min-height: var(--space-12);
}
.comparison-mobile-feature:last-child {
  border-bottom: none;
}
.comparison-mobile-feature:hover {
  background: rgba(var(--color-primary-50), 0.3);
}
.comparison-mobile-value {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: var(--space-12);
  min-height: var(--space-12);
  text-align: center;
  padding: var(--space-2);
}
.comparison-global-header:focus-within,
.comparison-feature-row:focus-within {
  outline: 2px solid rgb(var(--color-accent-heritage));
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage), 0.1),
    0 4px 8px rgba(0, 0, 0, 0.08);
}
@media (prefers-contrast: high) {
  .comparison-primary-header,
  .comparison-primary-column {
    border: 3px solid rgb(var(--color-accent-heritage));
  }
  .comparison-checkmark {
    font-weight: var(--font-bold);
  }
}
@media (prefers-reduced-motion: reduce) {
  .comparison-global-header,
  .comparison-feature-row,
  .comparison-checkmark,
  .comparison-custom-value,
  .comparison-performance-badge,
  .comparison-info-icon {
    transition: none !important;
  }
  .comparison-global-header:hover,
  .comparison-feature-row:hover {
    transform: none !important;
  }
  .comparison-feature-row:hover .comparison-checkmark {
    transform: none !important;
  }
}
@media print {
  .comparison-wrapper {
    display: block;
  }
  .comparison-global-headers {
    display: block;
    margin-bottom: var(--space-4);
  }
  .comparison-global-header {
    page-break-inside: avoid;
    margin-bottom: var(--space-2);
    box-shadow: none;
    border: 1px solid rgba(var(--color-border), 1);
  }
  .comparison-feature-row {
    page-break-inside: avoid;
    display: block;
    margin-bottom: var(--space-2);
    padding: var(--space-2);
    border: 1px solid rgba(var(--color-border), 0.5);
  }
  .comparison-global-header:hover,
  .comparison-feature-row:hover {
    transform: none;
    background-color: transparent;
  }
}
.contact-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
.contact-modal--fade-in {
  opacity: 1;
}
.contact-modal--fade-in .contact-modal-content {
  transform: translateY(0);
  opacity: 1;
}
.contact-modal--fade-out {
  opacity: 0;
}
.contact-modal--fade-out .contact-modal-content {
  transform: translateY(-20px);
  opacity: 0;
}
.contact-modal-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
.contact-modal-content {
  position: relative;
  background: white;
  padding: 2rem;
  border-radius: 8px;
  max-width: 500px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  z-index: 1;
  transform: translateY(20px);
  opacity: 0;
  transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
.contact-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 2rem;
  cursor: pointer;
  color: var(--color-text-secondary);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background-color 0.2s;
}
.contact-modal-close:hover {
  background-color: var(--color-background-hover);
}
.contact-modal .form-group {
  margin-bottom: 1.5rem;
}
.contact-modal label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
  color: var(--color-text-primary);
}
.contact-modal .form-input {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-size: 1rem;
  font-family: inherit;
  transition: border-color 0.2s;
  resize: vertical;
}
.contact-modal .form-input:focus {
  outline: none;
  border-color: var(--color-primary);
}
.contact-modal textarea.form-input {
  min-height: 100px;
}
.contact-modal .btn {
  width: 100%;
  margin-top: 1rem;
}
.contact-modal-success {
  padding: 2rem 0;
  text-align: center;
}
.contact-modal-success p {
  margin: 0;
  color: var(--color-text-primary);
}
.contact-modal-error {
  padding: 1rem;
  margin-top: 1rem;
  background-color: #fee;
  border: 1px solid #fcc;
  border-radius: 4px;
  text-align: center;
}
.contact-modal-error p {
  margin: 0;
  color: #c00;
}
.cta-wrapper {
  display: block;
  width: 100%;
}
.cta-section {
  color: rgb(var(--color-foreground));
  text-align: center;
  transition: all var(--timing-fast) var(--easing-standard);
  position: relative;
  overflow: hidden;
}
.cta-section-gradient {
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-section-gradient::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 30%;
  background: linear-gradient(135deg, 
    rgba(var(--color-accent-heritage) / 0.02),
    rgba(var(--color-accent-heritage) / 0.005)
  );
  opacity: 0.4;
  pointer-events: none;
}
.cta-section-minimal {
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-section .layout-container {
  animation: cta-section-reveal var(--timing-deliberate) var(--easing-standard) forwards;
  opacity: 0;
}
@keyframes cta-section-reveal {
  from {
    opacity: 0;
    transform: translateY(var(--space-2));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.cta-content {
  margin-bottom: var(--space-8);
}
.cta-title {
  margin-bottom: var(--space-4);
}
.cta-description {
  margin: 0 auto var(--space-6);
}
.cta-disclaimer {
  margin: var(--space-6) auto 0;
}
.cta-subtitle {
  margin-bottom: var(--space-4);
}
.cta-buttons {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: center;
  justify-content: center;
  margin-bottom: var(--space-8);
}
.cta-buttons .btn,
.cta-buttons a {
  min-height: 48px;
  min-width: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.cta-button-heritage {
  padding-top: calc(var(--space-4) * 0.25);
  padding-bottom: calc(var(--space-4) * 0.25);
}
@media (min-width: 640px) {
  .cta-title {
    margin-bottom: var(--space-6);
  }
  .cta-description {
    margin-bottom: var(--space-8);
  }
  .cta-buttons {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-6);
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-6) * 0.25);
    padding-right: calc(var(--space-6) * 0.25);
  }
}
@media (min-width: 768px) {
  .cta-buttons {
    gap: var(--space-6);
  }
  .cta-wrapper {
    margin-left: auto;
    margin-right: auto;
    max-width: calc(100% - var(--space-32));
  }
}
@media (min-width: 1024px) {
  .cta-buttons {
    gap: var(--space-8);
    flex-wrap: nowrap;
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-8) * 0.25);
    padding-right: calc(var(--space-8) * 0.25);
  }
  .cta-title {
    margin-bottom: var(--space-8);
  }
  .cta-description {
    margin-bottom: var(--space-12);
  }
  .cta-wrapper {
    max-width: 1400px;
  }
}
@media (min-width: 1280px) {
  .cta-wrapper {
    padding-left: var(--space-48);
    padding-right: var(--space-48);
  }
}
@media (min-width: 1920px) {
  .cta-buttons {
    gap: var(--space-12);
  }
  .cta-button-heritage {
    padding-left: calc(var(--space-12) * 0.25);
    padding-right: calc(var(--space-12) * 0.25);
  }
}
@media (min-width: 1920px) {
  .cta-buttons {
    gap: var(--space-12);
  }
  .cta-button-heritage {
    padding-top: 0;
    padding-bottom: 0;
    padding-left: calc(var(--space-12) * 0.25);
    padding-right: calc(var(--space-12) * 0.25);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cta-section,
  .cta-section-gradient,
  .cta-section-minimal {
    transition: none !important;
  }
  .cta-section .layout-container {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  @keyframes cta-section-reveal {
    from, to {
      opacity: 1;
      transform: translateY(0);
    }
  }
}
.docs-nav-spacing-sm {
  padding-inline: calc(var(--spacing) * 2);
  padding-block: calc(var(--spacing) * 1);
}
.docs-nav-spacing-md {
  padding-inline: calc(var(--spacing) * 3);
  padding-block: calc(var(--spacing) * 2);
}
.docs-nav-spacing-lg {
  padding-inline: calc(var(--spacing) * 4);
  padding-block: calc(var(--spacing) * 3);
}
.docs-nav-text-primary {
  color: var(--color-slate-900);
  @media (prefers-color-scheme: dark) {
    color: var(--color-white);
  }
}
.docs-nav-text-secondary {
  color: var(--color-slate-600);
  @media (prefers-color-scheme: dark) {
    color: var(--color-slate-400);
  }
}
.docs-nav-text-active {
  color: var(--color-orange-600);
  @media (prefers-color-scheme: dark) {
    color: var(--color-orange-400);
  }
}
.docs-nav-bg-active {
  background-color: var(--color-orange-50);
  @media (prefers-color-scheme: dark) {
    background-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-orange-900) 20%, transparent);
    }
  }
}
.docs-nav-bg-hover {
  &:hover {
    @media (hover: hover) {
      background-color: var(--color-stone-50);
    }
  }
  @media (prefers-color-scheme: dark) {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-800);
      }
    }
  }
}
.docs-nav-border-active {
  border-right-style: var(--tw-border-style);
  border-right-width: 2px;
  border-color: var(--color-orange-600);
}
.docs-nav-transition {
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
  transition-duration: var(--tw-duration, var(--default-transition-duration));
  --tw-duration: 200ms;
  transition-duration: 200ms;
}
@keyframes docs-nav-expand {
  from {
    max-height: 0;
    opacity: 0;
  }
  to {
    max-height: 500px;
    opacity: 1;
  }
}
@keyframes docs-nav-collapse {
  from {
    max-height: 500px;
    opacity: 1;
  }
  to {
    max-height: 0;
    opacity: 0;
  }
}
.docs-nav-expand {
  animation: docs-nav-expand 0.3s ease-out;
}
.docs-nav-collapse {
  animation: docs-nav-collapse 0.3s ease-out;
}
@media (prefers-contrast: high) {
  .docs-nav-item-active {
    border-style: var(--tw-border-style);
    border-width: 2px;
    border-color: var(--color-orange-600);
  }
  .docs-nav-resource-group-active {
    border-style: var(--tw-border-style);
    border-width: 2px;
    border-color: var(--color-orange-600);
  }
  .docs-nav-tab-active {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 2px;
    border-color: var(--color-orange-600);
  }
}
@media (prefers-reduced-motion: reduce) {
  .docs-nav-transition,
  .docs-navigation-sidebar,
  .rotate-180 {
    transition: none !important;
    animation: none !important;
  }
}
@media print {
  .docs-navigation-sidebar {
    display: none;
  }
  .docs-mobile-menu-toggle {
    display: none;
  }
  .docs-mobile-backdrop {
    display: none;
  }
}
.docs-layout {
  min-height: 100vh;
  background: var(--color-stone-50);
  font-family: var(--font-family-base);
}
.docs-header {
  background: white;
  border-bottom: 1px solid var(--color-stone-200);
  position: sticky;
  top: 0;
  z-index: 40;
}
.header-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1rem;
}
.header-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 4rem;
}
.header-left {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.mobile-menu-toggle {
  display: none;
  padding: 0.5rem;
  border-radius: 0.5rem;
  background: transparent;
  border: none;
  cursor: pointer;
  transition: background-color 0.2s;
}
.mobile-menu-toggle:hover {
  background: var(--color-stone-100);
}
.menu-icon {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--color-slate-600);
}
.brand {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.brand-icon {
  width: 2rem;
  height: 2rem;
  color: var(--color-heritage);
}
.brand h1 {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-slate-900);
  margin: 0;
}
.version {
  font-size: 0.875rem;
  color: var(--color-slate-600);
  background: var(--color-stone-100);
  padding: 0.25rem 0.75rem;
  border-radius: 1rem;
}
.docs-container {
  display: flex;
  position: relative;
}
.docs-sidebar {
  width: 16rem;
  background: white;
  border-right: 1px solid var(--color-stone-200);
  position: fixed;
  top: 4rem;
  left: 0;
  bottom: 0;
  z-index: 30;
  transform: translateX(0);
  transition: transform 0.3s ease-in-out;
}
.sidebar-header {
  display: none;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.sidebar-header span {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-slate-900);
}
.sidebar-header button {
  padding: 0.5rem;
  border-radius: 0.5rem;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--color-slate-600);
}
.sidebar-header button:hover {
  background: var(--color-stone-100);
}
.sidebar-content {
  padding: 1rem;
  height: calc(100vh - 4rem);
  overflow-y: auto;
}
.doc-search {
  margin-bottom: 1.5rem;
}
.search-input {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1px solid var(--color-stone-300);
  border-radius: 0.5rem;
  font-size: 0.875rem;
  background: white;
  color: var(--color-slate-900);
}
.search-input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(71, 85, 105, 0.1);
}
.search-input::-moz-placeholder {
  color: var(--color-slate-400);
}
.search-input::placeholder {
  color: var(--color-slate-400);
}
.nav-group {
  margin-bottom: 2rem;
}
.nav-group-title {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-slate-500);
  margin-bottom: 0.75rem;
}
.nav-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.nav-list li {
  margin-bottom: 0.25rem;
}
.nav-item {
  display: block;
  width: 100%;
  padding: 0.75rem 1rem;
  border-radius: 0.375rem;
  border: none;
  background: transparent;
  color: var(--color-slate-700);
  font-size: 0.875rem;
  text-align: left;
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none;
}
.nav-item:hover {
  background: var(--color-stone-100);
  color: var(--color-slate-900);
}
.nav-item-active {
  background: var(--color-heritage-light);
  color: var(--color-heritage-dark);
  font-weight: 500;
}
.docs-content {
  flex: 1;
  margin-left: 16rem;
  padding: 2rem;
  max-width: 100%;
}
.doc-article {
  max-width: 48rem;
  margin: 0 auto;
}
.doc-header {
  margin-bottom: 3rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.title-doc {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-weight: 700;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
  line-height: 1.2;
}
.title-section {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 600;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
  margin-top: 3rem;
  line-height: 1.3;
}
.description {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-slate-600);
  margin-bottom: 1.5rem;
}
.doc-toc {
  background: var(--color-stone-50);
  border: 1px solid var(--color-stone-200);
  border-radius: 0.5rem;
  padding: 1.5rem;
  margin: 2rem 0;
}
.doc-toc h2 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-slate-900);
  margin-bottom: 1rem;
}
.doc-toc ul,
.doc-toc ol {
  margin: 0;
  padding-left: 1.5rem;
}
.doc-toc li {
  margin-bottom: 0.5rem;
}
.doc-toc a {
  color: var(--color-primary);
  text-decoration: none;
  font-size: 0.875rem;
}
.doc-toc a:hover {
  color: var(--color-heritage);
  text-decoration: underline;
}
.doc-section {
  margin-bottom: 3rem;
}
.step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  background: var(--color-heritage);
  color: white;
  border-radius: 50%;
  font-size: 0.875rem;
  font-weight: 600;
  margin-right: 0.75rem;
}
.requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.requirement-item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem;
  background: white;
  border: 1px solid var(--color-stone-200);
  border-radius: 0.5rem;
  margin-bottom: 0.75rem;
}
.requirement-icon {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--color-green-500);
  flex-shrink: 0;
  margin-top: 0.125rem;
}
.step-list {
  list-style: decimal;
  padding-left: 1.5rem;
  margin: 1rem 0;
}
.step-list li {
  margin-bottom: 0.75rem;
  color: var(--color-slate-700);
  line-height: 1.6;
}
.doc-code-block {
  background: var(--color-slate-900);
  border-radius: 0.75rem;
  margin: 1.5rem 0;
  overflow: hidden;
  border: 1px solid var(--color-slate-700);
}
.code-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.5rem;
  background: var(--color-slate-800);
  border-bottom: 1px solid var(--color-slate-700);
}
.code-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-slate-200);
}
.copy-button {
  padding: 0.5rem 1rem;
  background: var(--color-primary);
  color: white;
  border: none;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.2s;
}
.copy-button:hover {
  background: var(--color-primary-dark);
}
.code-content {
  padding: 1.5rem;
  margin: 0;
  overflow-x: auto;
}
.code-content code {
  font-family: 'Monaco', 'Courier New', monospace;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-green-400);
  white-space: pre-wrap;
}
.callout-info,
.callout-warning,
.callout-error,
.callout-success {
  padding: 1.5rem;
  border-radius: 0.5rem;
  margin: 1.5rem 0;
  border-left: 4px solid;
}
.callout-info {
  background: var(--color-blue-50);
  border-left-color: var(--color-blue-500);
}
.callout-info h3 {
  color: var(--color-blue-900);
  font-size: 1.125rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.callout-info p {
  color: var(--color-blue-800);
  margin: 0;
}
.callout-warning {
  background: var(--color-yellow-50);
  border-left-color: var(--color-yellow-500);
}
.callout-warning h3 {
  color: var(--color-yellow-900);
  font-size: 1.125rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.callout-warning p {
  color: var(--color-yellow-800);
  margin: 0;
}
.provider-specs {
  display: grid;
  gap: 2rem;
}
.spec-table {
  width: 100%;
  border-collapse: collapse;
  background: white;
  border-radius: 0.5rem;
  overflow: hidden;
  border: 1px solid var(--color-stone-200);
}
.spec-table th {
  background: var(--color-stone-50);
  padding: 0.75rem 1rem;
  text-align: left;
  font-weight: 600;
  color: var(--color-slate-900);
  font-size: 0.875rem;
  border-bottom: 1px solid var(--color-stone-200);
}
.spec-table td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--color-stone-200);
  font-size: 0.875rem;
  color: var(--color-slate-700);
}
.spec-table td:first-child {
  font-family: 'Monaco', 'Courier New', monospace;
  color: var(--color-primary);
  font-weight: 500;
}
.spec-table td:nth-child(2) {
  font-family: 'Monaco', 'Courier New', monospace;
  color: var(--color-slate-600);
}
.resource-spec {
  display: grid;
  gap: 2rem;
}
.param-list {
  display: grid;
  gap: 1rem;
}
.param-item {
  padding: 1rem;
  border-radius: 0.5rem;
  border: 1px solid;
}
.param-item.input {
  background: var(--color-blue-50);
  border-color: var(--color-blue-200);
}
.param-item.output {
  background: var(--color-green-50);
  border-color: var(--color-green-200);
}
.param-item code {
  font-family: 'Monaco', 'Courier New', monospace;
  font-size: 0.875rem;
  font-weight: 600;
  display: block;
  margin-bottom: 0.5rem;
}
.param-item.input code {
  color: var(--color-blue-800);
}
.param-item.output code {
  color: var(--color-green-800);
}
.param-item p {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.5;
}
.param-item.input p {
  color: var(--color-blue-700);
}
.param-item.output p {
  color: var(--color-green-700);
}
@media (max-width: 1024px) {
  .docs-sidebar {
    transform: translateX(-100%);
  }
  .docs-sidebar.mobile-visible {
    transform: translateX(0);
  }
  .mobile-menu-toggle {
    display: block;
  }
  .sidebar-header.mobile-only {
    display: flex;
  }
  .docs-content {
    margin-left: 0;
    padding: 1rem;
  }
  .sidebar-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 25;
  }
  .title-doc {
    font-size: 1.75rem;
  }
  .title-section {
    font-size: 1.5rem;
    margin-top: 2rem;
  }
  .doc-toc {
    padding: 1rem;
  }
  .requirement-item {
    padding: 0.75rem;
  }
  .code-header {
    padding: 0.75rem 1rem;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }
  .code-content {
    padding: 1rem;
  }
  .param-list {
    grid-template-columns: 1fr;
  }
  .provider-specs {
    grid-template-columns: 1fr;
  }
}
@media (prefers-color-scheme: dark) {
  .docs-layout {
    background: var(--color-slate-900);
  }
  .docs-header {
    background: var(--color-slate-800);
    border-bottom-color: var(--color-slate-700);
  }
  .brand h1 {
    color: white;
  }
  .docs-sidebar {
    background: var(--color-slate-800);
    border-right-color: var(--color-slate-700);
  }
}
.mobile-hidden {
  display: none;
}
@media (max-width: 1024px) {
  .mobile-hidden {
    display: block;
  }
  .mobile-only {
    display: block;
  }
}
.mobile-only {
  display: none;
}
.faq-item {
  display: block;
  position: relative;
  width: 100%;
  margin-bottom: calc(var(--space-6) * 1.3);
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  color: rgb(var(--color-foreground));
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: transform var(--timing-fast) var(--ease-smooth),
    box-shadow var(--timing-fast) var(--ease-smooth);
  contain: layout style;
  transform: translate3d(0, 0, 0);
}
.faq-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
  border: 0;
}
.faq-item-heritage {
  border: 0;
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc((var(--space-4) + var(--space-2)) * 1.3);
  margin: calc(var(--space-8) * 1.3) 0;
  background: rgba(var(--color-accent-heritage) / 0.02);
}
.faq-item-content {
  padding: calc(var(--space-6) * 1.3);
}
.faq-question-button {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  background: transparent;
  border: none;
  outline: none;
  margin: 0;
  padding: calc(var(--space-2) * 1.3) 0;
  min-height: 48px;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  font-size: inherit;
  color: inherit;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.faq-question-button:hover {
  opacity: 0.9;
}
.faq-question-button:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
}
.faq-question-text {
  flex: 1;
  margin: 0 !important;
  margin-bottom: 0 !important;
}
.faq-icon {
  flex-shrink: 0;
  transition: transform var(--timing-fast) var(--ease-smooth);
  margin: 0 !important;
  margin-bottom: 0 !important;
  display: inline-flex;
  align-self: center;
}
.faq-icon.icon-sm {
  margin-bottom: 0 !important;
}
.faq-expanded .faq-icon {
  transform: rotate(90deg);
}
.faq-answer {
  margin-top: calc(var(--space-4) * 1.3);
  padding-top: calc(var(--space-4) * 1.3);
  border-top: 0;
  box-shadow: inset 0 1px 0 rgba(var(--color-border) / 0.2);
  animation: fadeIn var(--timing-fast) var(--ease-smooth);
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (max-width: 767px) {
  .faq-item {
    margin-bottom: calc(var(--space-4) * 1.3);
  }
  .faq-item-content {
    padding: calc(var(--space-4) * 1.3);
  }
  .faq-question-button {
    min-height: 48px;
    gap: var(--space-2);
  }
  .faq-answer {
    margin-top: calc(var(--space-3) * 1.3);
    padding-top: calc(var(--space-3) * 1.3);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .faq-item-content {
    padding: var(--space-5);
  }
}
@media (min-width: 1024px) {
  .faq-item {
    margin-bottom: var(--space-6);
  }
  .faq-item:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
    border: 0;
  }
}
@media (prefers-contrast: high) {
  .faq-item {
    outline: 2px solid currentColor;
    outline-offset: -2px;
    border: 0;
  }
  .faq-item-heritage {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
    border: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .faq-item,
  .faq-icon,
  .faq-answer {
    transition: none !important;
    animation: none !important;
  }
}
.faq-item,
.faq-icon {
  will-change: transform;
}
.faq-item:not(:hover),
.faq-icon:not(.rotating) {
  will-change: auto;
}
.feature-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
}
.feature-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
}
.feature-card:active {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-active);
}
.feature-card:not(:hover) {
  will-change: auto;
}
.feature-card-transparent {
  background: transparent;
  box-shadow: none;
  border: 0;
}
.feature-card-transparent:hover {
  background: rgba(var(--color-card) / 0.5);
  border: 0;
  box-shadow: var(--shadow-card);
}
.feature-card-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-4);
}
.feature-card-content .title-card {
  margin-bottom: var(--space-3);
}
.feature-card-content .description {
  margin-bottom: var(--space-4);
  max-width: 42ch;
}
.feature-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  margin-top: var(--space-2);
}
.feature-tag {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
  border-radius: var(--radius-full);
  font-size: 0.875rem;
  font-weight: 500;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.feature-tag:hover {
  background: rgb(var(--color-muted) / 0.8);
  transform: translateY(-1px);
}
.icon-pulse {
  animation: iconPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.icon-spin {
  animation: iconSpin 3s linear infinite;
}
.icon-interactive {
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.feature-card:hover .icon-interactive {
  transform: scale(1.1) rotate(5deg);
}
@keyframes iconPulse {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.8;
    transform: scale(1.05);
  }
}
@keyframes iconSpin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
@media (max-width: 767px) {
  .feature-card {
    padding: var(--space-6);
    box-shadow: var(--shadow-card);
  }
  .feature-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-card-hover);
  }
  .feature-card-content {
    gap: var(--space-3);
  }
  .feature-card-content .description {
    font-size: 0.9375rem;
    line-height: 1.6;
  }
  .feature-tags {
    gap: var(--space-1);
  }
  .feature-tag {
    font-size: 0.8125rem;
    padding: calc(var(--space-1) * 0.75) var(--space-2);
  }
}
@media (max-width: 375px) {
  .feature-card {
    padding: var(--space-4);
  }
  .feature-card-content .description {
    font-size: 0.875rem;
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .feature-card {
    padding: var(--space-7);
  }
  .feature-card-content {
    gap: var(--space-4);
  }
}
@media (min-width: 1280px) {
  .feature-card {
    padding: var(--space-10);
  }
  .feature-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-card-hover);
  }
  .feature-card-content {
    gap: var(--space-5);
  }
  .feature-card-content .title-card {
    margin-bottom: var(--space-4);
  }
  .feature-card-content .description {
    margin-bottom: var(--space-5);
    max-width: 48ch;
  }
}
.feature-card:focus-within {
  outline: 2px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.feature-card:has(.icon-container-heritage) {
  margin-top: calc(var(--space-4) * 1.3);
  margin-bottom: calc(var(--space-4) * 1.3);
}
.layout-grid-3 .feature-card,
.layout-grid-4 .feature-card {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.layout-grid-3 .feature-card-content,
.layout-grid-4 .feature-card-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
@media (prefers-contrast: high) {
  .feature-card {
    outline: 2px solid currentColor;
  }
  .feature-card:focus-within {
    outline-width: 3px;
  }
  .feature-tag {
    outline: 1px solid currentColor;
  }
}
@media (prefers-reduced-motion: reduce) {
  .feature-card {
    transition: none;
  }
  .feature-card:hover {
    transform: none;
  }
  .icon-pulse,
  .icon-spin {
    animation: none;
  }
  .icon-interactive {
    transition: none;
  }
}
@media print {
  .feature-card {
    box-shadow: none;
    outline: 1px solid #000;
    page-break-inside: avoid;
  }
  .feature-card:hover {
    transform: none;
  }
  .feature-tag {
    outline: 1px solid #000;
    background: none;
  }
}
.floating-cta {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  z-index: 40;
  transition: var(--transition-colors);
}
.floating-cta-button-enhanced {
  padding: 1rem 1.5rem;
  border: 1px solid rgb(var(--color-primary));
  border-radius: var(--radius-full);
  transition: var(--transition-colors);
  white-space: nowrap;
}
.floating-cta-button-enhanced:hover {
  opacity: 0.9;
}
.floating-cta-content {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.floating-cta-text {
  font-weight: 600;
  font-size: 0.875rem;
}
.floating-cta-icon {
  width: 1rem;
  height: 1rem;
}
.floating-cta--hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@media (max-width: 768px) {
  .floating-cta {
    bottom: 1rem;
    right: 1rem;
  }
  .floating-cta-button-enhanced {
    padding: 0.75rem 1rem;
  }
  .floating-cta-text {
    display: none;
  }
}
@media (max-width: 480px) {
  .floating-cta {
    bottom: 1rem;
    right: 1rem;
  }
}
.floating-theme-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 50;
  transition: var(--transition-colors);
}
@media (min-width: 1024px) {
  .floating-theme-toggle {
    top: 1.5rem;
    right: 1.5rem;
  }
}
.floating-theme-toggle-button-enhanced {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-full);
  background: rgb(var(--color-background) / 0.95);
  color: rgb(var(--color-muted-foreground));
  cursor: pointer;
  transition: var(--transition-colors);
}
.floating-theme-toggle-button-enhanced:hover {
  border-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary));
  background: rgb(var(--color-primary) / 0.05);
}
.floating-theme-toggle-button-enhanced:focus {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.floating-theme-toggle-icon {
  width: 1.25rem;
  height: 1.25rem;
  transition: var(--transition-colors);
}
.floating-theme-toggle--light .floating-theme-toggle-icon--sun {
  display: block;
}
.floating-theme-toggle--light .floating-theme-toggle-icon--moon {
  display: none;
}
.floating-theme-toggle--dark .floating-theme-toggle-icon--sun {
  display: none;
}
.floating-theme-toggle--dark .floating-theme-toggle-icon--moon {
  display: block;
}
@media (max-width: 768px) {
  .floating-theme-toggle {
    top: 0.75rem;
    right: 0.75rem;
  }
  .floating-theme-toggle-button-enhanced {
    width: 2.5rem;
    height: 2.5rem;
  }
  .floating-theme-toggle-icon {
    width: 1rem;
    height: 1rem;
  }
}
.footer-main {
  background-color: rgb(var(--color-background));
  border: 0;
  box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.05);
  padding: var(--space-16) 0;
  transition: all var(--timing-fast) var(--easing-standard);
}
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin-bottom: var(--space-12);
}
@media (min-width: 768px) {
  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-12);
  }
}
@media (min-width: 1024px) {
  .footer-grid {
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: var(--space-16);
  }
}
.footer-brand-section {
  max-width: 400px;
}
.footer-logo-container {
  margin-bottom: var(--space-6);
  padding: var(--space-2) 0;
}
.footer-logo {
  height: var(--space-8);
  width: auto;
  transition: all var(--timing-fast) var(--easing-standard);
}
.footer-logo:hover {
  transform: translateY(calc(var(--space-0-5) * -1));
  filter: brightness(1.1);
}
.footer-address {
  font-style: normal;
}
.footer-brand-section .description {
  margin-bottom: var(--space-6);
}
.footer-brand-section .description:last-of-type {
  margin-bottom: var(--space-6);
}
.footer-social-container {
  display: flex;
  gap: var(--space-4);
  margin-top: var(--space-6);
}
.footer-social-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--space-10);
  height: var(--space-10);
  min-width: 48px;
  min-height: 48px;
  border-radius: var(--radius-md);
  background-color: rgb(var(--color-muted) / 0.1);
  border: 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  color: rgb(var(--color-muted-foreground));
  transition: all var(--timing-fast) var(--easing-standard);
  text-decoration: none;
}
.footer-social-link:hover {
  background-color: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.footer-social-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
}
.footer-column {
  min-width: 0;
}
.footer-column .title-card {
  margin-bottom: var(--space-4);
}
.footer-link-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.footer-link-item {
  margin: 0;
}
.footer-link {
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  display: inline-block;
  position: relative;
  transition: all var(--timing-fast) var(--easing-standard);
  padding: var(--space-1) 0;
}
.footer-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: var(--space-px);
  background: rgb(var(--color-primary));
  transition: width var(--timing-medium) var(--easing-standard);
}
.footer-link:hover {
  color: rgb(var(--color-primary));
  transform: translateX(var(--space-0-5));
}
.footer-link:hover::after {
  width: 100%;
}
.footer-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
}
.footer-bottom {
  margin-top: var(--space-12);
  padding-top: var(--space-8);
  border: 0;
  box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05);
}
.footer-bottom-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  text-align: center;
}
@media (min-width: 768px) {
  .footer-bottom-content {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    text-align: left;
  }
}
.footer-bottom-content .description {
  margin: 0;
}
.footer-legal-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-6);
}
@media (min-width: 768px) {
  .footer-legal-links {
    justify-content: flex-end;
  }
}
.footer-legal-link {
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  padding: var(--space-3) var(--space-2);
  border-radius: var(--radius-sm);
  transition: all var(--timing-fast) var(--easing-standard);
  min-height: 48px;
  display: flex;
  align-items: center;
}
.footer-legal-link:hover {
  color: rgb(var(--color-primary));
  background-color: rgb(var(--color-primary) / 0.05);
}
.footer-legal-link:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
}
@media (max-width: 480px) {
  .footer-main {
    padding: var(--space-12) 0;
  }
  .footer-grid {
    gap: var(--space-6);
    margin-bottom: var(--space-8);
  }
  .footer-social-container {
    gap: var(--space-3);
    justify-content: center;
  }
  .footer-social-link {
    width: var(--space-9);
    height: var(--space-9);
  }
  .footer-legal-links {
    flex-direction: column;
    gap: var(--space-2);
    text-align: center;
  }
}
@media (prefers-reduced-motion: reduce) {
  .footer-logo,
  .footer-social-link,
  .footer-link {
    transition: none;
    transform: none;
  }
  .footer-logo:hover,
  .footer-social-link:hover,
  .footer-link:hover {
    transform: none;
  }
}
@media (prefers-contrast: high) {
  .footer-social-link {
    box-shadow: 0 0 0 2px rgb(var(--color-primary));
  }
  .footer-link {
    text-decoration: underline;
  }
  .footer-bottom {
    box-shadow: 0 -2px 0 rgba(0, 0, 0, 0.2);
  }
}
.footer-logo,
.footer-social-link,
.footer-link {
  transform: translateZ(0);
  backface-visibility: hidden;
}
.footer-social-container,
.footer-link-list {
  will-change: transform;
}
.header-container {
  position: sticky;
  top: 0;
  z-index: 50;
  width: 100%;
  background-color: rgba(var(--color-background) / 0.95);
  container-type: inline-size;
  container-name: header;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  overflow: visible !important;
  @supports not ((-webkit-backdrop-filter: blur(12px)) or (backdrop-filter: blur(12px))) {
    background-color: rgb(var(--color-background));
  }
  transform: translateZ(0);
  will-change: transform;
}
.header-container .layout-container {
  height: auto;
  background-color: rgb(var(--color-background));
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  overflow: visible !important;
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
  width: 100% !important;
  min-width: 0;
  max-width: 100vw !important;
  margin: 0 auto;
}
.header-wrapper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  max-width: 1200px;
  height: auto;
  box-sizing: border-box;
  overflow: visible !important;
  margin: 0 auto;
}
.header-container .layout-container[data-nav-wrapped="true"] {
  align-items: flex-start;
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
}
.header-wrapper[data-nav-wrapped="true"] {
  align-items: flex-start;
  height: auto;
  padding: var(--space-2) 0;
}
.header-container .layout-container:has(.header-nav-list[data-wrapped="true"]) {
  align-items: flex-start;
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
}
.header-wrapper:has(.header-nav-list[data-wrapped="true"]) {
  align-items: flex-start;
  height: auto;
  padding: var(--space-2) 0;
}
.header-fixed-container {
  display: none;
}
.header-logo-link {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  padding: var(--space-2);
  transition: opacity var(--duration-fast);
  text-decoration: none;
  box-sizing: border-box;
}
.header-logo-link:hover {
  opacity: 0.8;
}
.header-logo-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
.header-logo {
  height: auto;
  width: auto;
  max-width: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}
.header-logo-mobile {
  height: var(--space-8);
  max-width: calc(var(--space-8) * 1.875);
}
.header-logo-desktop {
  display: none;
}
.header-nav {
  display: none;
  flex: 1;
  min-width: 0;
  max-width: 100%;
  white-space: nowrap;
}
.header-nav-list {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: nowrap;
  justify-content: center;
  width: 100%;
  max-width: 100%;
  white-space: nowrap;
  row-gap: var(--space-1);
  transition: gap var(--timing-fast) var(--ease-smooth);
}
.header-nav-item {
  position: relative;
  display: flex;
  align-items: center;
}
.nav-logo-item {
  flex: none;
  margin-right: var(--space-6);
}
.nav-button-item {
  flex: none;
  margin-left: var(--space-4);
}
.header-nav-link {
  display: flex;
  align-items: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  color: rgb(var(--color-foreground));
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: all var(--timing-fast);
}
.header-nav-link:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-nav-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.header-nav-link[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-nav-link--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: var(--space-2) calc(var(--space-3) * 1.3);
  margin: 0 calc(var(--space-1) * 0.3);
}
.header-nav-link[aria-current="page"]::after {
  content: '';
  position: absolute;
  bottom: calc(-1 * var(--space-1) / 2);
  left: var(--space-3);
  right: var(--space-3);
  height: var(--space-1);
  background: rgb(var(--color-accent-heritage));
  opacity: 0;
  transition: opacity var(--timing-fast);
}
.header-nav-item:hover .header-nav-link[aria-current="page"]::after {
  opacity: 1;
}
.header-dropdown {
  position: relative;
}
.header-dropdown-group {
  display: flex;
  align-items: stretch;
  gap: 0;
}
.header-dropdown-link {
  display: flex;
  align-items: center;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  text-decoration: none;
  color: rgb(var(--color-foreground));
  transition: all var(--timing-fast);
  border-radius: var(--radius-md) 0 0 var(--radius-md);
}
.header-dropdown-link:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-link--active {
  color: rgb(var(--color-heritage));
  font-weight: 500;
}
.header-dropdown-link:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  z-index: 1;
}
.header-dropdown-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--touch-target-min, 48px);
  min-width: 28px;
  padding: calc(var(--space-1) / 2);
  box-sizing: border-box;
  line-height: 1;
  color: rgb(var(--color-foreground));
  background: none;
  border: none;
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  cursor: pointer;
  transition: all var(--timing-fast);
}
.header-dropdown-toggle .icon-container-xs {
  display: flex;
  align-items: center;
  justify-content: center;
}
.header-dropdown-toggle:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-toggle:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
  z-index: 1;
}
.header-dropdown-toggle[aria-expanded="true"] .header-dropdown-icon {
  transform: rotate(180deg);
}
.header-dropdown-trigger {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-3);
  box-sizing: border-box;
  line-height: 1;
  margin-bottom: 0 !important;
  color: rgb(var(--color-foreground));
  background: none;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--timing-fast);
  font-family: inherit;
  text-align: left;
}
.header-dropdown-trigger:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-primary));
}
.header-dropdown-trigger:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.header-dropdown-icon {
  transition: transform var(--duration-fast);
}
.header-dropdown--open .header-dropdown-icon {
  transform: rotate(180deg);
}
.header-dropdown-menu {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: var(--space-2);
  min-width: 220px;
  background-color: rgb(var(--color-background));
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15), 0 2px 10px rgba(0, 0, 0, 0.08);
  padding: var(--space-2);
  opacity: 0;
  visibility: hidden;
  transform: translateX(-50%) translateY(-10px);
  transition: all var(--timing-fast);
}
@media (min-width: 768px) {
  .header-dropdown:hover .header-dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
  }
  .header-dropdown:hover .header-dropdown-icon {
    transform: rotate(180deg);
  }
}
.header-dropdown--open .header-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.header-dropdown-item {
  display: block;
  width: 100%;
  padding: var(--space-2) var(--space-3);
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: all var(--duration-fast);
}
.header-dropdown-item:hover {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-foreground));
}
.header-dropdown-item:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: -2px;
}
.header-dropdown-item[aria-current="page"] {
  color: rgb(var(--color-primary));
  background-color: rgba(var(--color-primary) / 0.1);
}
.header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex: 0 0 auto;
  justify-self: end;
  align-self: center;
  min-width: 120px;
}
.header-mobile-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-md);
  transition: background-color var(--duration-fast);
  justify-self: end;
  flex-shrink: 0;
}
.header-mobile-toggle:hover {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-toggle:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: -2px;
}
.header-mobile-toggle-icon {
  color: rgb(var(--color-foreground));
}
.nav-button-item .header-contact-btn {
  padding: var(--space-2) var(--space-4) !important;
  min-height: 48px !important;
  height: 48px !important;
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  line-height: 1;
  flex-shrink: 0;
  min-width: 100px;
  white-space: nowrap;
}
.header-cta.btn-heritage {
  margin: 0 calc(var(--space-2) * 1.3);
  padding: calc(var(--space-2) + 2px) calc(var(--space-5) * 1.3) !important;
  transition: all var(--timing-fast) var(--ease-smooth);
  box-sizing: border-box;
}
.header-cta.btn-heritage:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--color-accent-heritage) / 0.2);
}
.header-cta.btn-heritage:active {
  transform: translateY(0);
  box-shadow: 0 2px 4px rgba(var(--color-accent-heritage) / 0.2);
}
.header-mobile-menu {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background-color: rgb(var(--color-background));
  border-bottom: 1px solid rgb(var(--color-border));
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--timing-fast);
}
.header-mobile-menu[aria-hidden="false"],
.header-mobile-menu--open {
  max-height: calc(100vh - var(--space-16));
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.header-mobile-nav {
  padding: var(--space-4) 0;
}
.header-mobile-nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.header-mobile-nav-item {
  border-bottom: 1px solid rgba(var(--color-border) / 0.5);
}
.header-mobile-nav-item:last-child {
  border-bottom: none;
}
.header-mobile-nav-link {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-3) var(--space-4);
  color: rgb(var(--color-foreground));
  text-decoration: none;
  transition: background-color var(--duration-fast);
}
.header-mobile-nav-link:hover,
.header-mobile-nav-link:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-nav-link[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-mobile-nav-link--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: calc(var(--space-3) + var(--space-1)) calc(var(--space-4) * 1.3);
  margin: var(--space-1) 0;
}
.header-mobile-dropdown {
  width: 100%;
}
.header-mobile-dropdown-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-3) var(--space-4);
  color: rgb(var(--color-foreground));
  text-align: left;
  cursor: pointer;
  background: none;
  border: none;
  list-style: none;
  transition: background-color var(--duration-fast);
}
.header-mobile-dropdown-trigger:hover,
.header-mobile-dropdown-trigger:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
}
.header-mobile-dropdown-trigger::after {
  content: "▸";
  transition: transform var(--duration-fast);
}
.header-mobile-dropdown[open] .header-mobile-dropdown-trigger::after {
  transform: rotate(90deg);
}
.header-mobile-dropdown-menu {
  background-color: rgba(var(--color-muted) / 0.3);
  padding: var(--space-2) 0;
}
.header-mobile-dropdown-item {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--touch-target-min, 48px);
  padding: var(--space-2) var(--space-6);
  color: rgb(var(--color-muted-foreground));
  text-decoration: none;
  transition: all var(--duration-fast);
}
.header-mobile-dropdown-item:hover,
.header-mobile-dropdown-item:focus-visible {
  background-color: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-foreground));
  padding-left: var(--space-7);
}
.header-mobile-dropdown-item[aria-current="page"] {
  color: rgb(var(--color-primary));
}
.header-mobile-dropdown-item--active {
  color: rgb(var(--color-accent-heritage)) !important;
  padding: calc(var(--space-2) + var(--space-1)) calc(var(--space-6) * 1.3);
  margin: var(--space-1) 0;
}
@media (max-width: 767px) {
  .header-container .layout-container {
    width: 100%;
    min-width: 100%;
    max-width: 100%;
    margin: 0;
  }
  .header-wrapper {
    grid-template-columns: 1fr auto;
  }
  .header-nav {
    display: block;
  }
  .header-nav-list {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
    white-space: normal;
  }
  .header-nav-item {
    display: none;
  }
  .nav-logo-item {
    margin-right: 0;
  }
  .nav-button-item {
    display: none;
  }
  .header-actions {
    gap: 0;
  }
}
@media (min-width: 568px) {
  .nav-button-item {
    display: flex;
  }
  .header-actions {
    display: flex;
    gap: var(--space-3);
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .header-nav-list {
    flex-wrap: nowrap;
  }
}
@media (min-width: 1024px) {
  .header-container .layout-container {
    width: 100% !important;
    min-width: 0;
    max-width: 100vw !important;
    margin: 0 auto;
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }
  .header-wrapper {
    display: flex;
    gap: var(--space-6);
    width: 100%;
    max-width: 1200px;
  }
  .header-nav-list {
    flex-wrap: nowrap;
    width: 100%;
    max-width: 100%;
  }
  .header-mobile-toggle {
    display: none;
  }
  .header-mobile-menu {
    display: none !important;
  }
  .header-nav {
    display: block;
  }
  .header-nav-item {
    display: flex;
  }
  .nav-button-item {
    display: flex;
  }
  .header-actions {
    display: none;
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-3);
    font-size: 0.9rem;
  }
}
@media (min-width: 1280px) {
  .header-container .layout-container {
    width: 100% !important;
    min-width: 0;
    max-width: 100vw !important;
    margin: 0 auto;
    padding-left: var(--space-6);
    padding-right: var(--space-6);
  }
  .header-wrapper {
    display: flex;
    gap: var(--space-6);
    width: 100%;
    max-width: 1200px;
  }
  .header-logo-mobile {
    display: none;
  }
  .header-logo-desktop {
    display: block;
    height: 32px;
    max-width: 200px;
  }
  .header-nav {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    min-width: 0;
    max-width: 100%;
  }
  .header-nav-list {
    flex-wrap: nowrap;
    justify-content: center;
    width: 100%;
    max-width: 100%;
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-3);
    font-size: inherit;
  }
}
@media (min-width: 1600px) {
  .header-wrapper {
    gap: var(--space-8);
    max-width: 1400px;
  }
  .header-nav-list {
    gap: var(--space-3);
  }
  .header-nav-link,
  .header-dropdown-trigger,
  .header-dropdown-link {
    padding: var(--space-2) var(--space-4);
  }
  .header-dropdown-menu--wide {
    min-width: 320px;
  }
}
.header-nav-list[data-wrapped="true"] {
  justify-content: center;
  align-items: flex-start;
}
.header-nav-list[data-wrapped="true"] .header-nav-item {
  margin-bottom: 0;
}
.header-wrapper:has(.header-nav-list[data-wrapped="true"]) .header-actions {
  align-self: flex-start;
  margin-top: var(--space-2);
}
@media (prefers-reduced-motion: reduce) {
  .header-mobile-menu,
  .header-dropdown-menu,
  .header-dropdown-icon,
  .header-mobile-dropdown-trigger::after,
  .header-cta.btn-heritage,
  .header-logo-link,
  .header-nav-link,
  .header-dropdown-trigger,
  .header-mobile-toggle,
  .header-mobile-nav-link,
  .header-dropdown-item,
  .header-mobile-dropdown-item {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
  .header-cta.btn-heritage:hover {
    transform: none !important;
  }
  .header-dropdown--open .header-dropdown-icon,
  .header-mobile-dropdown[open] .header-mobile-dropdown-trigger::after {
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .header-container {
    border-bottom-width: 2px;
  }
  .header-nav-link:focus-visible,
  .header-dropdown-trigger:focus-visible,
  .header-mobile-toggle:focus-visible {
    outline-width: 3px;
  }
}
@media print {
  .header-mobile-toggle,
  .header-mobile-menu,
  .header-dropdown-menu {
    display: none !important;
  }
  .header-nav {
    display: block !important;
  }
  .header-nav-list {
    display: block !important;
  }
  .header-dropdown-icon {
    display: none !important;
  }
}
.hero-section {
  --hero-section-min-height: 60vh;
  --hero-content-max-width: 56rem;
  --hero-content-gap: var(--space-6);
  --hero-content-padding: var(--space-8) 0;
  --hero-actions-gap: var(--space-4);
  --hero-actions-margin-top: var(--space-3);
  --hero-title-margin-bottom: var(--space-2);
  --hero-subtitle-margin-bottom: var(--space-2);
  --hero-description-margin-bottom: var(--space-2);
  --hero-button-heritage-padding: var(--space-3) var(--space-6);
  --hero-button-secondary-padding: var(--space-3) var(--space-6);
  --hero-button-min-height: 48px;
  --hero-button-gap: var(--space-2);
  --hero-icon-transition-duration: var(--timing-fast);
  --hero-hover-transform-y: calc(var(--space-0-5) * -1);
  --hero-hover-scale: 1.02;
  --hero-focus-outline-width: 3px;
  --hero-focus-outline-offset: 2px;
}
@container (min-width: 320px) {
  .hero-content {
    --hero-content-gap: var(--space-4);
  }
}
@container (min-width: 640px) {
  .hero-content {
    --hero-content-gap: var(--space-6);
  }
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--hero-actions-margin-top) auto 0;
    text-align: center;
  }
}
@container (min-width: 768px) {
  .hero-content {
    --hero-content-gap: var(--space-8);
    --hero-content-padding: var(--space-12) 0;
  }
}
@container (min-width: 1024px) {
  .hero-content {
    --hero-content-gap: var(--space-12);
    --hero-content-padding: var(--space-16) 0;
  }
  .hero-actions {
    --hero-actions-gap: var(--space-8);
  }
}
.hero-section {
  min-height: var(--hero-section-min-height);
  display: flex;
  align-items: center;
  position: relative;
  text-align: center;
  overflow: hidden;
  container-type: inline-size;
  contain: layout style paint;
  will-change: transform;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-section {
    --hero-section-min-height: 70vh;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-section {
    --hero-section-min-height: 80vh;
  }
}
@media (min-width: 2560px) {
  .hero-section {
    --hero-section-min-height: 85vh;
    max-height: 100vh;
    transform: translate3d(0, 0, 0);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
}
.hero-content {
  display: grid;
  gap: var(--hero-content-gap);
  justify-items: center;
  text-align: center;
  max-width: var(--hero-content-max-width);
  margin: 0 auto;
  width: 100%;
  padding: var(--hero-content-padding);
  contain: layout style;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-content {
    --hero-content-gap: var(--space-8);
    --hero-content-padding: var(--space-12) 0;
    --hero-content-max-width: 48rem;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-content {
    --hero-content-gap: var(--space-12);
    --hero-content-max-width: 64rem;
    --hero-content-padding: var(--space-16) 0;
  }
}
@media (min-width: 2560px) {
  .hero-content {
    --hero-content-gap: var(--space-16);
    --hero-content-max-width: 72rem;
    --hero-content-padding: var(--space-20) 0;
    backface-visibility: hidden;
  }
}
.hero-title {
  background: linear-gradient(135deg, 
    rgb(var(--color-foreground)), 
    rgb(var(--color-muted-foreground))
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  position: relative;
  width: 100%;
  margin-bottom: var(--hero-title-margin-bottom);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: auto;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-title {
    letter-spacing: -0.02em;
    --hero-title-margin-bottom: var(--space-3);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-title {
    letter-spacing: -0.03em;
    --hero-title-margin-bottom: var(--space-4);
  }
  .hero-title::after {
    content: '';
    position: absolute;
    bottom: calc(var(--space-3) * -1);
    left: 50%;
    transform: translateX(-50%);
    width: calc(var(--space-4) * 5);
    height: var(--space-0-5);
    background-color: rgb(var(--color-primary));
    border-radius: var(--radius-sm);
    opacity: 0.3;
    transition: opacity var(--timing-medium) var(--ease-smooth);
  }
}
@media (min-width: 2560px) {
  .hero-title {
    letter-spacing: -0.04em;
    --hero-title-margin-bottom: var(--space-6);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
  }
  .hero-title::after {
    width: calc(var(--space-4) * 6);
    height: var(--space-1);
    bottom: calc(var(--space-4) * -1);
    opacity: 0.4;
  }
}
.hero-subtitle {
  color: rgb(var(--color-primary));
  opacity: 0.9;
  max-width: 48rem;
  margin-bottom: var(--hero-subtitle-margin-bottom);
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-subtitle {
    max-width: 42rem;
    --hero-subtitle-margin-bottom: var(--space-3);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-subtitle {
    max-width: 50rem;
    --hero-subtitle-margin-bottom: var(--space-4);
  }
}
@media (min-width: 2560px) {
  .hero-subtitle {
    max-width: 56rem;
    --hero-subtitle-margin-bottom: var(--space-6);
  }
}
.hero-description {
  max-width: 42rem;
  margin: 0 auto var(--hero-description-margin-bottom);
  padding: 0;
  line-height: 1.7;
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-description {
    padding: 0;
    --hero-description-margin-bottom: var(--space-3);
    max-width: 40rem;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-description {
    max-width: 44rem;
    padding: 0;
    position: relative;
    border-bottom: var(--space-0-5) solid rgb(var(--color-primary) / 0.15);
    --hero-description-margin-bottom: var(--space-3);
  }
}
@media (min-width: 2560px) {
  .hero-description {
    max-width: 48rem;
    padding: 0;
    border-bottom: var(--space-1) solid rgb(var(--color-primary) / 0.2);
    --hero-description-margin-bottom: var(--space-4);
    line-height: 1.8;
  }
}
.hero-actions {
  display: flex;
  flex-direction: column;
  gap: var(--hero-actions-gap);
  align-items: center;
  justify-content: center;
  margin: var(--hero-actions-margin-top) auto 0;
  width: 100%;
  max-width: 100%;
  padding: calc(var(--space-2) * 1.3) 0;
  text-align: center;
  transform: translate3d(0, 0, 0);
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-3) auto 0;
    --hero-actions-gap: var(--space-6);
    --hero-actions-margin-top: var(--space-3);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 180px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-4) auto 0;
    --hero-actions-gap: var(--space-8);
    --hero-actions-margin-top: var(--space-4);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 200px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
@media (min-width: 2560px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin: var(--space-6) auto 0;
    --hero-actions-gap: var(--space-12);
    --hero-actions-margin-top: var(--space-6);
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 220px;
    flex: 0 1 auto;
    margin: 0 !important;
    white-space: nowrap;
  }
}
.hero-button-heritage {
  padding: var(--hero-button-heritage-padding) !important;
  height: var(--hero-button-min-height);
  display: inline-flex;
  align-items: center;
  gap: var(--hero-button-gap);
  position: relative;
  overflow: hidden;
  width: auto;
  flex: 0 0 auto;
  margin: 0 !important;
  border: none;
  outline: none;
  font-weight: 600;
  letter-spacing: 0.025em;
  line-height: 1.2;
  border-radius: var(--radius-md);
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    background-color var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform, box-shadow;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-button-heritage {
    --hero-button-min-height: 44px;
    --hero-button-heritage-padding: var(--space-3) var(--space-6);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-button-heritage {
    --hero-button-min-height: 48px;
    --hero-button-heritage-padding: var(--space-3) var(--space-7);
    letter-spacing: 0.03em;
  }
}
@media (min-width: 2560px) {
  .hero-button-heritage {
    --hero-button-min-height: 52px;
    --hero-button-heritage-padding: var(--space-4) var(--space-8);
    --hero-button-gap: var(--space-3);
    -webkit-font-smoothing: antialiased;
  }
}
.hero-button-heritage:hover {
  transform: translateY(var(--hero-hover-transform-y)) scale(var(--hero-hover-scale)) translate3d(0, 0, 0);
  box-shadow: 0 var(--space-3) var(--space-6) rgb(var(--color-accent-heritage) / 0.25),
    0 var(--space-1) var(--space-2) rgb(var(--color-accent-heritage) / 0.15);
  transition-delay: 0s, 0.05s;
}
.hero-button-secondary {
  padding: var(--hero-button-secondary-padding) !important;
  height: var(--hero-button-min-height);
  line-height: 1.2;
  display: inline-flex;
  align-items: center;
  gap: var(--hero-button-gap);
  overflow: hidden;
  width: auto;
  flex: 0 0 auto;
  margin: 0 !important;
  border: none;
  outline: none;
  border-radius: var(--radius-md);
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow var(--hero-icon-transition-duration) cubic-bezier(0.4, 0, 0.2, 1),
    background-color var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform, box-shadow;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .hero-button-secondary {
    --hero-button-min-height: 44px;
    --hero-button-secondary-padding: var(--space-3) var(--space-6);
  }
}
@media (min-width: 1024px) and (max-width: 2559px) {
  .hero-button-secondary {
    --hero-button-min-height: 48px;
    --hero-button-secondary-padding: var(--space-3) var(--space-7);
  }
}
@media (min-width: 2560px) {
  .hero-button-secondary {
    --hero-button-min-height: 52px;
    --hero-button-secondary-padding: var(--space-4) var(--space-8);
    --hero-button-gap: var(--space-3);
  }
}
.hero-button-secondary:hover {
  transform: translateY(var(--hero-hover-transform-y)) scale(1.01) translate3d(0, 0, 0);
  box-shadow: 0 var(--space-2) var(--space-4) rgb(var(--color-primary) / 0.15),
    0 var(--space-0-5) var(--space-1) rgb(var(--color-primary) / 0.1);
  transition-delay: 0s, 0.03s;
}
.hero-button-icon {
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
}
.hero-button-icon-play {
  transition: transform var(--hero-icon-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity var(--hero-icon-transition-duration) var(--ease-smooth);
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
}
.hero-button-heritage:hover .hero-button-icon {
  transform: translateX(var(--space-1)) translate3d(0, 0, 0);
  transition-delay: 0.05s;
}
.hero-button-secondary:hover .hero-button-icon-play {
  transform: scale(1.15) translate3d(0, 0, 0);
  transition-delay: 0.03s;
}
.hero-button-heritage .icon-container-sm,
.hero-button-secondary .icon-container-sm {
  flex-shrink: 0;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0;
  padding: 0;
}
.hero-button-heritage .icon-container-sm {
  margin: 0;
}
.hero-button-secondary .icon-container-sm {
  margin: 0;
  background-color: rgb(var(--color-primary) / 0.25);
  transition: background-color var(--hero-icon-transition-duration) var(--ease-smooth);
}
.hero-button-secondary:hover .icon-container-sm {
  background-color: rgb(var(--color-primary) / 0.35);
}
.hero-button-secondary .icon-container-sm .icon-sm {
  color: rgb(var(--color-primary-600)) !important;
  stroke-width: 2.5;
}
@media (min-width: 2560px) {
  .hero-button-heritage .icon-container-sm {
    margin-left: var(--space-2);
  }
  .hero-button-secondary .icon-container-sm {
    margin-right: var(--space-2);
  }
}
@media (max-width: 767px) {
  .hero-section {
    --hero-section-min-height: 50vh;
  }
  .hero-content {
    --hero-content-gap: var(--space-4);
    --hero-content-padding: var(--space-6) 0;
  }
  .hero-actions {
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    --hero-actions-gap: var(--space-3);
    align-items: center;
    justify-content: center;
    margin: var(--hero-actions-margin-top) auto 0;
    text-align: center;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    width: auto;
    min-width: 200px;
    max-width: 280px;
    height: 48px;
    justify-content: center;
    align-self: center;
    white-space: normal;
    text-align: center;
    contain: layout style;
    border: none;
    outline: none;
  }
  .hero-button-heritage .icon-container-sm,
  .hero-button-secondary .icon-container-sm {
    margin: 0 var(--space-1);
  }
}
.hero-button-heritage:focus-visible,
.hero-button-secondary:focus-visible {
  outline: none;
  border: none;
  box-shadow: 0 0 0 var(--hero-focus-outline-width) rgb(var(--color-primary) / 0.3),
    0 0 0 calc(var(--hero-focus-outline-width) + 1px) rgb(var(--color-primary)),
    0 var(--space-2) var(--space-4) rgb(var(--color-primary) / 0.2);
  position: relative;
  z-index: 10;
  transform: scale(1.02) translate3d(0, 0, 0);
  transition: box-shadow var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
}
.hero-button-heritage:active,
.hero-button-secondary:active {
  transform: translateY(1px) scale(0.98) translate3d(0, 0, 0);
  transition-duration: calc(var(--timing-fast) * 0.5);
  border: none;
  outline: none;
}
@media (prefers-contrast: high) {
  .hero-title {
    background: none;
    -webkit-text-fill-color: unset;
    color: rgb(var(--color-foreground));
    font-weight: 700;
  }
  .hero-title::after {
    opacity: 1;
    background-color: rgb(var(--color-foreground));
    height: var(--space-1);
  }
  .hero-button-secondary .icon-container-sm {
    background-color: rgb(var(--color-foreground) / 0.2);
    border: 1px solid rgb(var(--color-foreground));
  }
  .hero-button-heritage:focus-visible,
  .hero-button-secondary:focus-visible {
    outline: 4px solid currentColor;
    outline-offset: 4px;
    border: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero-title,
  .hero-button-icon,
  .hero-button-heritage,
  .hero-button-secondary,
  .icon-container-sm {
    transition: none !important;
    transform: translate3d(0, 0, 0) !important;
    will-change: auto !important;
    animation: none !important;
  }
  .hero-title {
    background: none;
    -webkit-text-fill-color: unset;
    color: rgb(var(--color-foreground));
  }
  .hero-button-heritage:hover,
  .hero-button-secondary:hover,
  .hero-button-heritage:focus-visible,
  .hero-button-secondary:focus-visible {
    transform: translate3d(0, 0, 0) !important;
    box-shadow: 0 0 0 2px rgb(var(--color-primary)) !important;
    border: none !important;
  }
  .hero-button-heritage:hover .hero-button-icon,
  .hero-button-secondary:hover .hero-button-icon-play {
    transform: translate3d(0, 0, 0) !important;
  }
}
.hero-trust-indicators {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  align-items: center;
  margin-top: 0;
  padding: 0;
}
@media (min-width: 768px) {
  .hero-trust-indicators {
    gap: var(--space-4);
    margin-top: 0;
  }
}
@media (min-width: 1024px) {
  .hero-trust-indicators {
    gap: var(--space-6);
    margin-top: 0;
  }
}
.hero-trust-indicator {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: rgb(var(--color-muted-foreground));
  font-size: var(--font-size-sm);
  line-height: 1.5;
  white-space: nowrap;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.hero-trust-indicator:hover {
  opacity: 0.8;
}
@media (min-width: 768px) {
  .hero-trust-indicator {
    font-size: var(--font-size-base);
  }
}
.hero-trust-indicator-icon {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background-color: rgb(var(--color-muted-foreground));
  animation: trust-indicator-pulse 3s ease-in-out infinite;
  animation-delay: calc(var(--stagger-index, 0) * 100ms);
}
@keyframes trust-indicator-pulse {
  0%, 100% {
    opacity: 0.8;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.1);
  }
}
.hero-trust-indicator-text {
  letter-spacing: 0.01em;
}
@media (prefers-contrast: high) {
  .hero-trust-indicator {
    font-weight: 500;
  }
  .hero-trust-indicator-icon {
    border: 1px solid currentColor;
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero-trust-indicator-icon {
    animation: none;
  }
  .hero-trust-indicator {
    transition: none;
  }
}
@media print {
  .hero-section {
    min-height: auto;
    padding: var(--space-8) var(--space-4);
    page-break-inside: avoid;
    border-bottom: 2px solid rgb(var(--color-muted-foreground));
    background: white !important;
    color: black !important;
  }
  .hero-content {
    padding: var(--space-4) 0;
    gap: var(--space-3);
  }
  .hero-actions {
    display: none;
  }
  .hero-title {
    background: none !important;
    -webkit-text-fill-color: unset !important;
    color: black !important;
    font-weight: 700;
    page-break-after: avoid;
  }
  .hero-title::after {
    display: none;
  }
  .hero-subtitle {
    color: rgb(var(--color-muted-foreground)) !important;
    font-weight: 500;
  }
  .hero-description {
    color: black !important;
    border-bottom: none !important;
    max-width: none;
    margin-bottom: var(--space-4);
    page-break-inside: avoid;
  }
  .icon-container-sm,
  .hero-button-icon,
  .hero-button-icon-play {
    display: none !important;
  }
  .hero-content::after {
    content: "—";
    display: block;
    text-align: center;
    font-size: 1.5rem;
    margin: var(--space-4) 0;
    color: rgb(var(--color-muted-foreground));
  }
}
@media (min-resolution: 192dpi),
  (min-resolution: 2dppx) {
  .hero-title {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .hero-button-heritage,
  .hero-button-secondary {
    -webkit-font-smoothing: antialiased;
    border-radius: calc(var(--radius-md) + 0.5px);
    border: none;
  }
}
.hero-section.critical-load {
  contain: strict;
  content-visibility: auto;
  .hero-content {
    contain-intrinsic-size: 0 400px;
  }
  .hero-title {
    contain: none;
    content-visibility: visible;
  }
}
@media (max-width: 0) {
  .hero-section::before {
    content: "Hero component loaded - Performance monitoring active - Section Pattern Compliant - Button Styling Fixed - Icon Contrast Enhanced v4.1";
    position: absolute;
    top: -1000px;
    left: -1000px;
    opacity: 0;
    pointer-events: none;
  }
}
.icon-xxs {
  width: 0.75rem;
  height: 0.75rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-xs {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-sm {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-base {
  width: 1.5rem;
  height: 1.5rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-md {
  width: 2rem;
  height: 2rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-lg {
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-xl {
  width: 3rem;
  height: 3rem;
  flex-shrink: 0;
  max-width: 100%;
  max-height: 100%;
}
.icon-default {
  color: rgb(var(--color-muted-foreground));
  stroke-width: 2;
}
.icon-primary {
  color: rgb(var(--color-primary-600));
  stroke-width: 2;
}
.icon-heritage {
  color: rgb(var(--color-accent-heritage));
  stroke-width: 2.5;
}
.icon-success {
  color: rgb(var(--color-success));
  stroke-width: 2;
}
.icon-warning {
  color: rgb(var(--color-warning));
  stroke-width: 2;
}
.icon-white {
  color: white;
  stroke-width: 2;
}
.icon-container-xs {
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.375rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-sm {
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-base {
  width: 3rem;
  height: 3rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-md {
  width: 3.5rem;
  height: 3.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.75rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-lg {
  width: 4rem;
  height: 4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.75rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
.icon-container-xl {
  width: 5rem;
  height: 5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 1rem;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
  contain: layout style paint;
}
@container (max-width: 24px) {
  .icon-container-xs > svg,
  .icon-container-xs > img,
  .icon-container-xs > span {
    max-width: calc(100% - 0.25rem);
    max-height: calc(100% - 0.25rem);
  }
}
@container (max-width: 32px) {
  .icon-container-sm > svg,
  .icon-container-sm > img,
  .icon-container-sm > span {
    max-width: calc(100% - 0.25rem);
    max-height: calc(100% - 0.25rem);
  }
}
@container (min-width: 80px) {
  .icon-container-xl > svg,
  .icon-container-xl > img,
  .icon-container-xl > span {
    max-width: calc(100% - 1.5rem);
    max-height: calc(100% - 1.5rem);
  }
}
@media (max-width: 767px) {
  .icon-base,
  .icon-sm,
  .icon-lg {
    stroke-width: 2.5;
  }
  .icon-heritage {
    stroke-width: 3;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));
  }
  .icon-touch {
    position: relative;
    min-width: 48px;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .icon-container-xs,
  .icon-container-sm,
  .icon-container-base {
    min-width: 48px;
    min-height: 48px;
  }
  .icon-interactive {
    min-width: 48px;
    min-height: 48px;
    position: relative;
  }
  .icon-interactive::before {
    content: '';
    position: absolute;
    top: -8px;
    right: -8px;
    bottom: -8px;
    left: -8px;
  }
}
@media (prefers-contrast: high) {
  .icon-default,
  .icon-primary {
    color: #000000;
    stroke-width: 3;
  }
  .icon-heritage {
    color: #cc0000;
    stroke-width: 3;
  }
  .icon-success {
    color: #006600;
    stroke-width: 3;
  }
  .icon-warning {
    color: #cc6600;
    stroke-width: 3;
  }
}
@media (prefers-reduced-motion: reduce) {
  .icon-pulse,
  .icon-spin,
  .icon-interactive {
    animation: none !important;
    transition: none !important;
  }
}
.icon-xs,
.icon-sm,
.icon-base,
.icon-md,
.icon-lg,
.icon-xl {
  transform: translateZ(0);
  backface-visibility: hidden;
}
.icon-xs img,
.icon-sm img,
.icon-base img,
.icon-md img,
.icon-lg img,
.icon-xl img {
  -o-object-fit: contain;
     object-fit: contain;
  image-rendering: auto;
  image-rendering: crisp-edges;
  image-rendering: -webkit-optimize-contrast;
}
.icon-container-xs > svg,
.icon-container-xs > img,
.icon-container-xs > span {
  max-width: calc(100% - 0.5rem);
  max-height: calc(100% - 0.5rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-sm > svg,
.icon-container-sm > img,
.icon-container-sm > span {
  max-width: calc(100% - 0.5rem);
  max-height: calc(100% - 0.5rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-base > svg,
.icon-container-base > img,
.icon-container-base > span {
  max-width: calc(100% - 0.75rem);
  max-height: calc(100% - 0.75rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-md > svg,
.icon-container-md > img,
.icon-container-md > span {
  max-width: calc(100% - 0.75rem);
  max-height: calc(100% - 0.75rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-lg > svg,
.icon-container-lg > img,
.icon-container-lg > span {
  max-width: calc(100% - 1rem);
  max-height: calc(100% - 1rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-container-xl > svg,
.icon-container-xl > img,
.icon-container-xl > span {
  max-width: calc(100% - 1rem);
  max-height: calc(100% - 1rem);
  width: auto;
  height: auto;
  position: static;
  margin: 0;
  padding: 0;
  -o-object-fit: contain;
     object-fit: contain;
  flex-shrink: 0;
}
.icon-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.icon-spin {
  animation: spin 1s linear infinite;
}
.icon-interactive {
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.icon-interactive:hover {
  transform: translateY(-2px) scale(1.05);
}
.icon-interactive:active {
  transform: translateY(0) scale(0.98);
}
.icon-interactive:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  border-radius: var(--radius-sm);
  z-index: 1;
}
button.icon-interactive {
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
}
a.icon-interactive {
  text-decoration: none;
  color: inherit;
}
@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.list-card-header {
  margin-bottom: var(--space-8);
  text-align: center;
}
.list-card-header > * + * {
  margin-top: var(--space-4);
}
.list-card {
  position: relative;
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  min-height: 48px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transform: translateZ(0);
  will-change: transform;
}
.list-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}
.list-card:active {
  transform: scale(0.98);
  box-shadow: var(--shadow-card-active);
}
.list-card:not(:hover) {
  will-change: auto;
}
.list-card.list-item-highlighted {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
  margin-top: calc(var(--space-2) * 1.3);
  margin-bottom: calc(var(--space-2) * 1.3);
  background: rgba(var(--color-accent-heritage) / 0.02);
}
.list-card.list-item-highlighted:hover {
  background: rgba(var(--color-accent-heritage) / 0.05);
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
}
.list-item-icon {
  flex-shrink: 0;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.comparison-list-card .list-item-icon {
  opacity: 0.9;
}
.comparison-list-card:hover .list-item-icon {
  opacity: 1;
}
.list-item-content {
  flex: 1;
  min-width: 0;
}
.list-item-content > * + * {
  margin-top: var(--space-2);
}
.list-item-content .title-card,
.list-item-content .description {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
}
.list-item-content .title-card {
  -webkit-line-clamp: 2;
}
.list-item-content .description {
  -webkit-line-clamp: 3;
}
@media (max-width: 767px) {
  .list-card-header {
    margin-bottom: var(--space-6);
    padding: 0 var(--space-4);
  }
  .list-card {
    padding: var(--space-4);
    box-shadow: var(--shadow-card);
  }
  .list-card:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-card-hover);
  }
  @media (max-width: 375px) {
    .list-card {
      flex-direction: column;
      text-align: center;
    }
    .list-item-icon {
      margin: 0 auto;
    }
  }
  .list-card.list-item-highlighted {
    margin: calc(var(--space-3) * 1.3) 0;
    box-shadow: inset 3px 0 0 rgb(var(--color-accent-heritage)),
      var(--shadow-card);
  }
}
@media (min-width: 768px) and (max-width: 1279px) {
  .list-card {
    padding: var(--space-5);
  }
}
@media (min-width: 1280px) {
  .list-card-header {
    margin-bottom: var(--space-10);
  }
  .list-card {
    padding: var(--space-8);
  }
  .list-card.list-item-highlighted {
    margin: calc(var(--space-6) * 1.3) 0;
  }
}
.list-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5);
  position: relative;
  z-index: 1;
}
@media (prefers-contrast: high) {
  .list-card {
    outline: 2px solid currentColor;
  }
  .list-card.list-item-highlighted {
    outline: 2px solid currentColor;
    box-shadow: inset 6px 0 0 currentColor,
      var(--shadow-card);
  }
  .list-card:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .list-card {
    transition: none;
  }
  .list-card:hover {
    transform: none;
  }
  .list-card:active {
    transform: none;
  }
}
@media print {
  .list-card {
    box-shadow: none;
    outline: 1px solid #000;
    page-break-inside: avoid;
  }
  .list-card.list-item-highlighted {
    border-left-color: #000;
    background: none;
  }
}
.comparison-column {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: stretch;
  margin-top: 0;
  padding-top: 0;
}
.comparison-column > .title-card {
  text-align: center;
  margin-bottom: var(--space-6);
  padding-bottom: var(--space-4);
  box-shadow: 0 1px 0 0 rgba(var(--color-primary) / 0.1);
  flex-shrink: 0;
  font-size: clamp(1.25rem, 2vw + 0.5rem, 1.5rem);
  font-weight: 600;
  line-height: 1.3;
  color: rgb(var(--color-foreground));
  min-height: 1.5rem;
  padding-top: 0;
}
.comparison-column-primary > .title-card {
  color: rgb(var(--color-accent-heritage));
  box-shadow: 0 1px 0 0 rgba(var(--color-accent-heritage) / 0.3);
}
.comparison-list-card.list-card {
  cursor: default;
  padding: var(--space-6);
  margin: 0;
  border: 0;
  box-shadow: var(--shadow-card);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.comparison-list-card.list-card:hover {
  transform: none !important;
  box-shadow: var(--shadow-card-hover);
}
.comparison-list-card.comparison-list-card-primary {
  background: rgba(var(--color-accent-heritage) / 0.02);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
}
.comparison-list-card.comparison-list-card-primary:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
  transform: none !important;
}
.comparison-list-card.list-card .list-item-content {
  text-align: left;
}
.comparison-list-card.list-card .list-item-content .title-card {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
  margin-bottom: var(--space-2);
}
.comparison-list-card.list-card .list-item-content .description {
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.5;
  color: rgb(var(--color-muted-foreground));
}
.layout-stack-sm {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.section-body.layout-grid-2 {
  align-items: start;
}
@media (max-width: 767px) {
  .layout-grid-2,
  .section-body.layout-grid-2 {
    grid-template-columns: 1fr;
    gap: var(--space-6);
  }
  .comparison-column > .title-card {
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-3);
    font-size: 1.25rem;
  }
  .layout-stack-sm {
    gap: var(--space-3);
  }
  .comparison-list-card.list-card {
    padding: var(--space-4);
  }
  .comparison-column + .comparison-column {
    margin-top: var(--space-8);
  }
  .comparison-list-card.comparison-list-card-primary {
    box-shadow: inset 3px 0 0 rgb(var(--color-accent-heritage)),
      var(--shadow-card);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .layout-grid-2 {
    gap: var(--space-6);
  }
}
@media (min-width: 1280px) {
  .layout-grid-2 {
    gap: var(--space-10);
  }
  .comparison-column > .title-card {
    margin-bottom: var(--space-6);
    padding-bottom: var(--space-6);
  }
}
.metric-item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: var(--space-6);
  min-height: calc(var(--space-4) * 7.5);
  min-width: calc(var(--space-4) * 8.125);
  background-color: rgb(var(--color-card));
  color: rgb(var(--color-card-foreground));
  border-radius: var(--radius);
  transition: transform var(--timing-fast) var(--easing-standard),
    background-color var(--timing-fast) var(--easing-standard);
  outline: none;
  position: relative;
}
.metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.04);
  transform: translateY(-2px);
}
.metric-item:active {
  transform: translateY(-1px) scale(0.98);
  transition: transform var(--timing-fast) var(--easing-standard);
  box-shadow: var(--shadow-sm);
}
.metric-item:focus-visible {
  outline: 2px solid rgb(var(--color-ring));
  outline-offset: 2px;
  box-shadow: 0 0 0 2px rgb(var(--color-ring) / 0.2);
}
.focus-professional:focus-visible {
  outline: 2px solid rgb(var(--color-ring));
  outline-offset: 2px;
  box-shadow: 0 0 0 2px rgb(var(--color-ring) / 0.2);
}
.metric-value {
  margin-bottom: var(--space-1);
  transition: color var(--timing-fast) var(--ease-smooth);
}
.text-heritage {
  color: rgb(var(--color-accent-heritage)) !important;
  font-weight: 600;
  font-size: max(1rem, 16px);
}
.metric-item-heritage {
  margin: calc(var(--space-4) * 1.3) 0;
  padding: calc(var(--space-6) * 1.3);
}
.metric-label {
  margin-bottom: var(--space-1);
  transition: color var(--timing-fast) var(--ease-smooth);
}
.metric-description {
  transition: color var(--timing-fast) var(--ease-smooth);
}
.metric-enhanced .metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.06);
}
.metric-enhanced .metric-value {
  color: rgb(var(--color-primary));
}
@media (min-width: 640px) {
  .metric-item {
    padding: var(--space-6);
    min-height: calc(var(--space-4) * 6.875);
  }
}
@media (min-width: 768px) {
  .metric-item {
    padding: var(--space-8);
    min-height: calc(var(--space-4) * 7.5);
  }
}
@media (min-width: 1024px) {
  .metric-item {
    min-height: calc(var(--space-4) * 8.75);
  }
}
.dark .metric-item {
  color-scheme: dark;
  background-color: transparent;
}
.dark .metric-item:hover {
  background-color: rgb(var(--color-accent-heritage) / 0.12);
}
.dark .metric-value {
  color: rgb(var(--color-foreground));
}
.dark .metric-label {
  color: rgb(var(--color-foreground));
}
.dark .metric-description {
  color: rgb(var(--color-muted-foreground));
}
@media (prefers-color-scheme: dark) {
  :root:not(.light) .metric-item {
    background-color: transparent;
  }
  :root:not(.light) .metric-item:hover {
    background-color: rgb(var(--color-accent-heritage) / 0.08);
  }
  :root:not(.light) .metric-value {
    color: rgb(var(--color-foreground));
  }
  :root:not(.light) .metric-label {
    color: rgb(var(--color-foreground));
  }
  :root:not(.light) .metric-description {
    color: rgb(var(--color-muted-foreground));
  }
}
@media (prefers-reduced-motion: reduce) {
  .metric-item {
    transition: none;
  }
  .metric-item:hover {
    transform: none;
  }
  .metric-item:active {
    transform: none;
  }
}
@media print {
  .metric-item {
    -moz-column-break-inside: avoid;
         break-inside: avoid;
  }
  .metric-item:hover {
    transform: none;
  }
}
.touch-target {
  min-height: 48px;
  min-width: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.partners-grid {
  display: grid;
  gap: 2rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .partners-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 1024px) {
  .partners-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.partner-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid #e5e7eb;
  transition: all 0.3s ease;
}
.partner-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 25px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.partner-card .partner-name {
  color: var(--text-primary);
  margin-bottom: 0.25rem;
}
.partner-card .partner-category {
  color: var(--color-blue-600);
  font-weight: 500;
  font-size: 0.875rem;
}
.partner-card .partner-description {
  color: var(--text-secondary);
  line-height: 1.6;
  flex-grow: 1;
}
.partner-card .partner-services {
  margin-bottom: 1rem;
}
.partner-card .partner-contact {
  border-top: 1px solid var(--border-light);
  padding-top: 1rem;
  margin-top: auto;
}
.partner-card .contact-cta {
  background: linear-gradient(135deg, var(--color-blue-50) 0%, var(--color-slate-50) 100%);
  border-top: 1px solid var(--border-light);
  transition: all 0.2s ease;
}
.partner-card .contact-cta:hover {
  background: linear-gradient(135deg, var(--color-blue-100) 0%, var(--color-slate-100) 100%);
  color: var(--color-blue-800);
}
.btn-heritage {
  background: var(--heritage-red);
  color: white;
  border: none;
  padding: 0.75rem 2rem;
  border-radius: 0.5rem;
  font-weight: 600;
  transition: all 0.2s ease;
  position: relative;
  overflow: hidden;
}
.btn-heritage:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
  transition: opacity 0.2s ease;
  opacity: 0;
}
.btn-heritage:hover:before {
  opacity: 1;
}
.btn-heritage:hover {
  background: var(--heritage-red-dark);
  transform: translateY(-1px);
  box-shadow: 0 8px 25px -3px rgba(220, 38, 38, 0.3);
}
.partnership-cta {
  padding-top: 6rem;
  padding-bottom: 6rem;
  margin-top: 3rem;
  margin-bottom: 3rem;
}
.partners-directory input,
.partners-directory select {
  transition: all 0.2s ease;
  border-radius: 0.5rem;
  border: 1px solid var(--border-light);
  background: white;
  color: var(--text-primary);
}
.partners-directory input:focus,
.partners-directory select:focus {
  outline: none;
  border-color: var(--color-blue-500);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.partners-directory input::-moz-placeholder {
  color: var(--text-tertiary);
}
.partners-directory input::placeholder {
  color: var(--text-tertiary);
}
.partner-rating .icon-star {
  color: #fbbf24;
  fill: #fbbf24;
}
@media (max-width: 767px) {
  .partners-grid {
    gap: 1.5rem;
  }
  .partner-card {
    margin: 0 auto;
    max-width: 100%;
  }
  .partnership-cta {
    padding-top: 4rem;
    padding-bottom: 4rem;
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
  .btn-heritage:not(:first-of-type) {
    background: var(--color-slate-600);
  }
  .btn-heritage:not(:first-of-type):hover {
    background: var(--color-slate-700);
  }
}
@media (min-width: 768px) {
  .heritage-red:nth-of-type(n+3),
  .btn-heritage:nth-of-type(n+3) {
    background: var(--color-slate-600);
    color: white;
  }
  .heritage-red:nth-of-type(n+3):hover,
  .btn-heritage:nth-of-type(n+3):hover {
    background: var(--color-slate-700);
  }
}
@media (prefers-reduced-motion: no-preference) {
  .pwa-scroll-fade {
    animation-duration: 0.6s;
    animation-fill-mode: both;
  }
  .partner-card {
    animation-delay: calc(var(--stagger-index, 0) * 0.1s);
  }
}
@media (prefers-contrast: high) {
  .partner-card {
    border-width: 2px;
    border-color: var(--text-primary);
  }
  .partner-card .partner-name {
    font-weight: 700;
  }
  .btn-heritage {
    border: 2px solid var(--heritage-red-dark);
  }
}
@media print {
  .partner-card {
    border: 1px solid #000;
    page-break-inside: avoid;
    margin-bottom: 1rem;
  }
  .partnership-cta {
    display: none;
  }
}
.section-container {
  position: relative;
  overflow: hidden;
  transition: all var(--timing-fast) var(--easing-standard);
}
.section-header {
  text-align: center;
  margin-bottom: var(--space-8);
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}
.section-title {
  margin-bottom: var(--space-4);
  position: relative;
}
.section-subtitle {
  margin-bottom: var(--space-4);
  position: relative;
}
.section-description {
  margin-bottom: 0;
  position: relative;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}
.section-content {
  position: relative;
  width: 100%;
}
.section-body {
  position: relative;
  width: 100%;
}
.section-body > * + * {
  margin-top: var(--space-6);
}
.section-body.layout-grid-2 > *,
.section-body.layout-grid-3 > *,
.section-body.layout-grid-4 > * {
  margin-top: 0;
}
.section-body .layout-grid-2,
.section-body .layout-grid-3,
.section-body .layout-grid-4 {
  margin-top: var(--space-8);
}
@media (max-width: 767px) {
  .section-header {
    margin-bottom: var(--space-6);
    text-align: left;
  }
  .section-title {
    margin-bottom: var(--space-3);
  }
  .section-subtitle {
    margin-bottom: var(--space-3);
  }
  .section-description {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }
  .section-body > * + * {
    margin-top: var(--space-4);
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
  .section-body .layout-grid-2,
  .section-body .layout-grid-3,
  .section-body .layout-grid-4 {
    margin-top: var(--space-6);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .section-header {
    margin-bottom: var(--space-8);
    text-align: center;
  }
  .section-description {
    max-width: 700px;
  }
}
@media (min-width: 1024px) {
  .section-header {
    margin-bottom: var(--space-10);
  }
  .section-body > * + * {
    margin-top: var(--space-8);
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
  .section-body .layout-grid-2,
  .section-body .layout-grid-3,
  .section-body .layout-grid-4 {
    margin-top: var(--space-12);
  }
}
.section-header .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--scroll-distance, 30px));
  transition: all var(--pwa-duration-normal) var(--pwa-easing-smooth);
}
.section-content .pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--scroll-distance, 30px));
  transition: all var(--pwa-duration-normal) var(--pwa-easing-smooth);
}
.section-container.pwa-scroll-section.pwa-animate .pwa-scroll-fade {
  opacity: 1;
  transform: translateY(0);
}
.section-container:focus-within {
  outline: none;
}
@media (prefers-reduced-motion: reduce) {
  .section-header .pwa-scroll-fade,
  .section-content .pwa-scroll-fade {
    transition: none;
    opacity: 1;
    transform: none;
  }
}
@media print {
  .section-container {
    page-break-inside: avoid;
    -moz-column-break-inside: avoid;
         break-inside: avoid;
  }
  .section-header {
    page-break-after: avoid;
    -moz-column-break-after: avoid;
         break-after: avoid;
  }
  .section-header {
    margin-bottom: 1rem;
  }
  .section-body > * + * {
    margin-top: 1rem;
  }
  .section-body.layout-grid-2 > *,
  .section-body.layout-grid-3 > *,
  .section-body.layout-grid-4 > * {
    margin-top: 0;
  }
}
.service-showcase {
  position: relative;
  width: 100%;
}
.service-showcase-container {
  padding: var(--spacing-xl) 0;
}
.service-showcase__header {
  text-align: center;
  margin-bottom: var(--spacing-xl);
}
.service-showcase__header > * + * {
  margin-top: var(--spacing-md);
}
.service-showcase__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  width: 100%;
}
.service-showcase__card {
  position: relative;
  padding: var(--spacing-lg);
  background: rgb(var(--color-card));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-lg);
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: pointer;
  text-decoration: none;
  display: block;
}
.service-showcase__card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  border-color: rgb(var(--color-primary) / 0.3);
}
.service-showcase__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  margin-bottom: var(--spacing-md);
  background: rgb(var(--color-muted) / 0.1);
  border-radius: var(--radius-md);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__icon svg {
  width: 48px;
  height: 48px;
  fill: rgb(var(--color-primary));
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__card:hover .service-showcase__icon {
  background: rgb(var(--color-primary) / 0.1);
}
.service-showcase__card:hover .service-showcase__icon svg {
  transform: scale(1.1);
  fill: rgb(var(--color-primary));
}
.service-showcase__content {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}
.service-showcase__title {
  margin: 0;
}
.service-showcase__description {
  margin: 0;
}
.service-showcase__badge {
  position: absolute;
  top: var(--spacing-md);
  right: var(--spacing-md);
  padding: 2px 8px;
  background: rgb(var(--color-accent-heritage));
  color: white;
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: var(--radius-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.service-showcase__link-icon {
  position: absolute;
  bottom: var(--spacing-md);
  right: var(--spacing-md);
  opacity: 0;
  transform: translateX(-8px);
  transition: all var(--timing-fast) var(--ease-smooth);
}
.service-showcase__link-icon svg {
  width: 20px;
  height: 20px;
  fill: rgb(var(--color-primary));
}
.service-showcase__card:hover .service-showcase__link-icon {
  opacity: 1;
  transform: translateX(0);
}
.service-showcase__grid--compact {
  gap: var(--spacing-md);
}
.service-showcase__grid--compact .service-showcase__card {
  padding: var(--spacing-md);
}
.service-showcase__grid--compact .service-showcase__icon {
  width: 48px;
  height: 48px;
  margin-bottom: var(--spacing-sm);
}
.service-showcase__grid--compact .service-showcase__icon svg {
  width: 32px;
  height: 32px;
}
.service-showcase__grid--wide {
  grid-template-columns: repeat(4, 1fr);
}
.service-showcase__card--dark {
  background: rgb(var(--color-background));
  border-color: rgb(var(--color-border) / 0.5);
}
.service-showcase__card--dark:hover {
  background: rgb(var(--color-card));
}
.service-showcase__card--highlight {
  border-color: rgb(var(--color-accent-heritage) / 0.3);
  background: rgb(var(--color-accent-heritage) / 0.05);
}
.service-showcase__card--highlight .service-showcase__icon {
  background: rgb(var(--color-accent-heritage) / 0.1);
}
.service-showcase__card--highlight .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.service-showcase.pwa-scroll-section {
  opacity: 0;
  transform: translateY(var(--pwa-section-distance));
  transition: opacity var(--pwa-section-duration) var(--ease-smooth),
              transform var(--pwa-section-duration) var(--ease-smooth);
}
.service-showcase.pwa-scroll-section.animate {
  opacity: 1;
  transform: translateY(0);
}
.service-showcase__card.pwa-scroll-fade {
  opacity: 0;
  transform: translateY(var(--pwa-scroll-distance));
  transition: opacity var(--pwa-scroll-duration) var(--ease-smooth),
              transform var(--pwa-scroll-duration) var(--ease-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay));
}
.service-showcase__card.pwa-scroll-fade.animate {
  opacity: 1;
  transform: translateY(0);
}
@media (max-width: 1023px) {
  .service-showcase__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
  }
  .service-showcase__grid--wide {
    grid-template-columns: repeat(3, 1fr);
  }
  .service-showcase-container {
    padding: var(--spacing-lg) var(--spacing-md);
  }
}
@media (max-width: 767px) {
  .service-showcase__grid {
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
  }
  .service-showcase__grid--wide {
    grid-template-columns: 1fr;
  }
  .service-showcase-container {
    padding: var(--spacing-lg) var(--spacing-sm);
  }
  .service-showcase__header {
    margin-bottom: var(--spacing-lg);
  }
  .service-showcase__card {
    padding: var(--spacing-md);
  }
  .service-showcase__icon {
    width: 56px;
    height: 56px;
  }
  .service-showcase__icon svg {
    width: 40px;
    height: 40px;
  }
  .service-showcase__card {
    min-height: 120px;
    -webkit-tap-highlight-color: transparent;
  }
  .service-showcase__card:active {
    transform: scale(0.98);
  }
  .service-showcase__card:hover {
    transform: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  }
  .service-showcase__card:hover .service-showcase__icon svg {
    transform: none;
  }
  .service-showcase__link-icon {
    opacity: 0.5;
    transform: translateX(0);
  }
}
.theme-ai-middleware .service-showcase {
  background: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%,
    rgb(var(--color-muted) / 0.05) 100%);
}
.theme-ai-middleware .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.theme-heritage .service-showcase__card:nth-child(1) {
  border-color: rgb(var(--color-accent-heritage) / 0.3);
  background: rgb(var(--color-accent-heritage) / 0.05);
}
.theme-heritage .service-showcase__card:nth-child(1) .service-showcase__icon svg {
  fill: rgb(var(--color-accent-heritage));
}
.theme-dark .service-showcase {
  background: rgb(var(--color-background));
}
.theme-dark .service-showcase__card {
  background: rgb(var(--color-card) / 0.5);
  border-color: rgb(var(--color-border) / 0.3);
}
.service-showcase__card:focus-visible {
  outline: 3px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .service-showcase__card,
  .service-showcase__icon,
  .service-showcase__icon svg,
  .service-showcase__link-icon,
  .service-showcase.pwa-scroll-section,
  .service-showcase__card.pwa-scroll-fade {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .service-showcase__card {
    border-width: 2px;
  }
  .service-showcase__card:hover {
    border-color: rgb(var(--color-foreground));
  }
}
.service-showcase__card {
  will-change: transform, box-shadow;
  backface-visibility: hidden;
  transform: translateZ(0);
}
.service-showcase__card.animate {
  will-change: auto;
}
.service-showcase__icon svg {
  shape-rendering: geometricPrecision;
}
.showcase-item {
  display: block;
  position: relative;
  width: 100%;
  contain: layout style;
  transform: translate3d(0, 0, 0);
}
.showcase-item-horizontal .showcase-card {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-8);
}
@media (max-width: 767px) {
  .showcase-item-horizontal .showcase-card {
    flex-direction: column;
    gap: var(--space-6);
  }
}
.showcase-card {
  padding: var(--space-8);
  margin: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: rgb(var(--color-card));
  color: rgb(var(--color-foreground));
  transition: background-color var(--timing-fast) var(--ease-smooth),
    box-shadow var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.showcase-card-sm {
  padding: var(--space-5);
  border-radius: var(--radius-md);
}
.showcase-card-sm .showcase-title {
  font-size: var(--font-size-lg);
}
.showcase-card-sm .showcase-description {
  font-size: var(--font-size-base);
  line-height: 1.5;
}
.showcase-card-sm .showcase-header {
  margin-bottom: var(--space-4);
  gap: var(--space-3);
}
.showcase-card-sm .showcase-icon svg {
  width: 2rem;
  height: 2rem;
}
.showcase-card-lg {
  padding: var(--space-10);
  border-radius: var(--radius-xl);
}
.showcase-card-lg .showcase-title {
  font-size: var(--font-size-2xl);
}
.showcase-card-lg .showcase-description {
  font-size: var(--font-size-lg);
  line-height: 1.7;
}
.showcase-card-lg .showcase-header {
  margin-bottom: var(--space-8);
  gap: var(--space-6);
}
.showcase-card-lg .showcase-icon svg {
  width: 3.5rem;
  height: 3.5rem;
}
.showcase-card:hover {
  background: rgb(var(--color-card-hover));
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}
.showcase-card:active {
  transform: translateY(-1px);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
@media (max-width: 767px) {
  .showcase-card {
    padding: var(--space-6);
    border-radius: var(--radius-md);
  }
  .showcase-card-sm {
    padding: var(--space-4);
  }
  .showcase-card-lg {
    padding: var(--space-7);
  }
  .showcase-item-heritage .showcase-card,
  .showcase-card-heritage {
    padding-left: calc(var(--space-6) + var(--space-1));
  }
  .showcase-item-heritage .showcase-card-sm,
  .showcase-card-heritage.showcase-card-sm {
    padding-left: calc(var(--space-4) + var(--space-1));
  }
  .showcase-item-heritage .showcase-card-lg,
  .showcase-card-heritage.showcase-card-lg {
    padding-left: calc(var(--space-7) + var(--space-1));
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .showcase-card {
    padding: calc(var(--space-6) * 1.25);
  }
  .showcase-item-heritage .showcase-card,
  .showcase-card-heritage {
    padding-left: calc(var(--space-6) * 1.25 + var(--space-1));
  }
}
@media (min-width: 1024px) {
  .showcase-card {
    padding: var(--space-8);
  }
}
.showcase-item-heritage {
  margin: 0 !important;
}
.showcase-item-heritage .showcase-card,
.showcase-card-heritage {
  box-shadow: inset 4px 0 0 0 rgb(var(--color-accent-heritage)), 0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-8) + var(--space-1));
}
.showcase-item-heritage .showcase-card-sm,
.showcase-card-heritage.showcase-card-sm {
  padding-left: calc(var(--space-5) + var(--space-1));
}
.showcase-item-heritage .showcase-card-lg,
.showcase-card-heritage.showcase-card-lg {
  padding-left: calc(var(--space-10) + var(--space-1));
}
.showcase-cta-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: white;
  font-weight: 600;
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  margin-top: var(--space-4);
}
.showcase-cta-heritage:hover {
  background-color: rgb(var(--color-accent-heritage-dark));
  transform: translateY(-2px);
  box-shadow: var(--shadow-heritage);
}
.showcase-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
  width: 100%;
}
.showcase-header-left {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  flex: 1;
  min-width: 0;
}
.showcase-icon {
  flex-shrink: 0;
}
.showcase-item-details {
  flex: 1;
  min-width: 0;
}
.showcase-title {
  margin-bottom: var(--space-2);
}
.showcase-tagline {
  margin: 0;
  opacity: 0.9;
}
.showcase-item-content {
  margin-top: var(--space-4);
}
.showcase-headline {
  margin-bottom: var(--space-3);
}
.showcase-description {
  margin-bottom: var(--space-4);
  line-height: 1.6;
}
.showcase-stats {
  margin: var(--space-6) 0;
}
.showcase-stats-centered {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}
.showcase-stats-grid-horizontal {
  display: grid;
  grid-template-columns: repeat(3, minmax(150px, 200px));
  gap: var(--space-6);
  justify-content: center;
  max-width: 700px;
  margin: 0 auto;
}
.showcase-card-sm .showcase-stats-grid-horizontal {
  grid-template-columns: repeat(3, minmax(100px, 150px));
  gap: var(--space-4);
  max-width: 500px;
}
.showcase-card-lg .showcase-stats-grid-horizontal {
  grid-template-columns: repeat(3, minmax(180px, 250px));
  gap: var(--space-8);
  max-width: 900px;
}
.showcase-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
}
@media (max-width: 767px) {
  .showcase-stats-grid-horizontal {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .showcase-stats-grid {
    grid-template-columns: 1fr;
    gap: var(--space-3);
  }
}
.showcase-benefits {
  margin: var(--space-6) 0;
}
.showcase-benefits-title {
  margin-bottom: var(--space-3);
}
.showcase-benefits-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--space-2);
}
.showcase-benefit {
  position: relative;
  padding-left: var(--space-6);
}
.showcase-benefit::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  color: rgb(var(--color-success));
  font-weight: 600;
  font-size: 1.25em;
}
.showcase-footer {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  margin-top: var(--space-6);
  padding-top: var(--space-6);
  border-top: 0;
}
@media (max-width: 767px) {
  .showcase-footer {
    flex-direction: column;
    gap: var(--space-4);
  }
}
.showcase-audience {
  flex: 1;
}
.showcase-audience-label {
  font-weight: 600;
  margin-bottom: var(--space-1);
  opacity: 0.8;
}
.showcase-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: rgb(var(--color-primary));
  text-decoration: none;
  font-weight: 500;
  min-height: 48px;
  padding: var(--space-3) var(--space-4);
  transition: color var(--timing-fast) var(--ease-smooth),
    transform var(--timing-fast) var(--ease-smooth);
  margin-top: var(--space-4);
}
.showcase-card-sm .showcase-cta {
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-base);
}
.showcase-card-lg .showcase-cta {
  min-height: 52px;
  padding: var(--space-4) var(--space-5);
  font-size: var(--font-size-lg);
}
.showcase-cta:hover {
  color: rgb(var(--color-primary-dark));
  transform: translateX(4px);
}
.showcase-cta-icon {
  transition: transform var(--timing-fast) var(--ease-smooth);
  vertical-align: middle;
}
.showcase-cta-icon.icon-sm {
  display: inline-block;
  margin-bottom: 0;
  border-radius: 0;
  width: 1.25rem;
  height: 1.25rem;
  align-items: initial;
  justify-content: initial;
  vertical-align: middle;
}
.showcase-cta:hover .showcase-cta-icon {
  transform: translateX(4px);
}
@media (max-width: 767px) {
  .showcase-item {
    font-size: 0.95rem;
  }
  .showcase-header {
    flex-direction: column;
    gap: var(--space-4);
  }
  .showcase-header-left {
    width: 100%;
    flex-direction: column;
    text-align: center;
    align-items: center;
    gap: var(--space-3);
  }
  .showcase-cta {
    width: 100%;
    justify-content: center;
  }
}
@media (min-width: 1024px) {
  .showcase-card {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
  }
}
@media (min-width: 1920px) {
  .showcase-card {
    max-width: 1400px;
  }
}
.showcase-item,
.showcase-card {
  will-change: transform;
}
.showcase-item:not(:hover),
.showcase-card:not(:hover) {
  will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
  .showcase-item,
  .showcase-card,
  .showcase-cta,
  .showcase-cta-icon {
    transition: none !important;
    transform: none !important;
  }
}
@media (prefers-contrast: high) {
  .showcase-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .showcase-item-heritage .showcase-card {
    outline-width: 3px;
  }
  .showcase-cta-heritage {
    border: 2px solid currentColor;
  }
}
.solution-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: rgb(var(--color-background));
  border: 1px solid rgba(var(--color-border), 0.2);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  transition: all var(--timing-fast) ease-out;
}
.solution-card:hover {
  border-color: rgba(var(--color-primary), 0.3);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
  transform: translateY(-2px);
}
.solution-header {
  text-align: center;
  margin-bottom: var(--space-6);
}
.solution-header .title-card {
  margin: var(--space-4) 0 var(--space-2) 0;
}
.solution-header .subtitle-lg {
  margin-bottom: var(--space-4);
  color: rgb(var(--color-accent-heritage));
  font-weight: 600;
}
.solution-benefits {
  margin: var(--space-6) 0;
}
.benefit-list {
  list-style: none;
  padding: 0;
  margin: var(--space-4) 0 0 0;
}
.benefit-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  padding: var(--space-2) 0;
}
.benefit-item:last-child {
  margin-bottom: 0;
}
.solution-metrics {
  margin: var(--space-6) 0;
}
.metrics-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}
.metric-item {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: rgba(var(--color-primary), 0.02);
  border-radius: var(--radius-md);
}
.metric-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.metric-content .title-card {
  margin: 0;
  color: rgb(var(--color-primary));
}
.metric-content .description {
  margin: 0;
  font-weight: 500;
}
.solution-matrix {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .solution-matrix {
    grid-template-columns: repeat(2, 1fr);
  }
}
.hero-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-6);
  margin: var(--space-8) 0;
}
.stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-2);
}
.stat-item .title-card {
  margin: 0;
  color: rgb(var(--color-success));
}
.hero-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: center;
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
  }
}
.challenge-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}
.challenge-impact {
  margin-top: var(--space-6);
}
.impact-metric {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: rgba(var(--color-warning), 0.05);
  border-radius: var(--radius-md);
  border-left: 4px solid rgb(var(--color-warning));
}
.faq-enterprise {
  max-width: 800px;
  margin: var(--space-8) auto 0;
}
.faq-item {
  border: 1px solid rgba(var(--color-border), 0.2);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  overflow: hidden;
}
.faq-question {
  padding: var(--space-6);
  background: rgba(var(--color-muted), 0.02);
  cursor: pointer;
  list-style: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  border: none;
  width: 100%;
  text-align: left;
}
.faq-question::-webkit-details-marker {
  display: none;
}
.question-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}
.question-content .subtitle-lg {
  margin: 0;
  flex: 1;
}
.badge-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  font-size: var(--font-size-small);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-sm);
  font-weight: 600;
  white-space: nowrap;
}
.faq-chevron {
  transition: transform var(--timing-fast) ease-out;
}
.faq-item[open] .faq-chevron {
  transform: rotate(180deg);
}
.faq-answer {
  padding: var(--space-6);
  border-top: 1px solid rgba(var(--color-border), 0.1);
}
.faq-answer .description {
  margin: 0;
  line-height: 1.6;
}
.final-cta-enterprise {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  margin: var(--space-8) 0;
  text-align: center;
}
@media (min-width: 768px) {
  .final-cta-enterprise {
    grid-template-columns: repeat(3, 1fr);
  }
}
.cta-primary,
.cta-secondary,
.cta-tertiary {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
}
.cta-details {
  margin: 0;
  font-size: var(--font-size-small);
  color: rgb(var(--color-muted-foreground));
  max-width: 250px;
}
.cta-assurance {
  margin-top: var(--space-12);
}
.assurance-items {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
  margin-top: var(--space-8);
}
@media (min-width: 768px) {
  .assurance-items {
    grid-template-columns: repeat(3, 1fr);
  }
}
.assurance-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-6);
  background: rgba(var(--color-success), 0.02);
  border: 1px solid rgba(var(--color-success), 0.1);
  border-radius: var(--radius-md);
  text-align: left;
}
.assurance-content .subtitle-lg {
  margin: 0 0 var(--space-2) 0;
  color: rgb(var(--color-success));
}
.assurance-content .description {
  margin: 0;
}
@media (max-width: 767px) {
  .solution-card {
    padding: var(--space-6);
  }
  .hero-stats {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .metrics-grid {
    gap: var(--space-3);
  }
  .metric-item {
    padding: var(--space-3);
  }
  .faq-question {
    padding: var(--space-4);
  }
  .faq-answer {
    padding: var(--space-4);
  }
  .question-content {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2);
  }
  .badge-heritage {
    align-self: flex-start;
  }
  .assurance-item {
    padding: var(--space-4);
    flex-direction: column;
    text-align: center;
  }
}
@media (max-width: 767px) {
  .btn-heritage {
    margin: var(--space-8) auto;
    display: block;
    width: calc(100% - var(--space-8));
    max-width: 320px;
  }
}
@media (min-width: 768px) {
  .btn-heritage {
    margin: var(--space-6) auto;
  }
}
.btn-heritage {
  position: relative;
}
.btn-heritage::before {
  content: '';
  position: absolute;
  top: calc(-1 * var(--space-6));
  left: calc(-1 * var(--space-6));
  right: calc(-1 * var(--space-6));
  bottom: calc(-1 * var(--space-6));
  pointer-events: none;
}
.spec-table {
  margin-bottom: var(--space-8);
}
.spec-table-title {
  font-size: var(--text-xl);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
  margin-bottom: var(--space-4);
}
.spec-table-wrapper {
  background: rgb(var(--color-card));
  border-radius: var(--radius-md);
  border: 1px solid rgb(var(--color-border));
  overflow: hidden;
}
.spec-table-content {
  width: 100%;
  border-collapse: collapse;
}
.spec-table-thead {
  background: rgb(var(--color-surface));
  border-bottom: 1px solid rgb(var(--color-border));
}
.spec-table-header-cell {
  padding: var(--space-3) var(--space-4);
  text-align: left;
  font-size: var(--text-sm);
  font-weight: 600;
  color: rgb(var(--color-text-primary));
}
.spec-table-tbody {
  background: rgb(var(--color-card));
}
.spec-table-row {
  border-bottom: 1px solid rgb(var(--color-border));
  transition: background-color var(--timing-fast);
}
.spec-table-row:last-child {
  border-bottom: none;
}
.spec-table-row:hover {
  background: rgba(var(--color-primary) / 0.02);
}
.spec-table-cell {
  padding: var(--space-3) var(--space-4);
  font-size: var(--text-sm);
  color: rgb(var(--color-text-secondary));
  vertical-align: top;
}
.spec-table-name-cell {
  font-family: var(--font-mono);
  font-weight: 500;
  color: #cd5c5c;
}
.spec-table-type-cell {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  background: rgba(var(--color-primary) / 0.05);
  color: rgb(var(--color-text-secondary));
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
}
.spec-table-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--text-xs);
  font-weight: 500;
}
.spec-table-required {
  background: rgba(220, 38, 38, 0.1);
  color: rgb(220, 38, 38);
}
.spec-table-optional {
  background: rgba(107, 114, 128, 0.1);
  color: rgb(107, 114, 128);
}
.spec-table-empty {
  padding: var(--space-8);
  text-align: center;
}
.spec-table-empty-message {
  color: rgb(var(--color-text-secondary));
  font-size: var(--text-sm);
}
.spec-table-type-inputs .spec-table-name-cell {
  color: #cd5c5c;
}
.spec-table-type-outputs .spec-table-name-cell {
  color: #22c55e;
}
.spec-table-type-configuration .spec-table-name-cell {
  color: #3b82f6;
}
@media (max-width: 767px) {
  .spec-table-mobile {
    margin-bottom: var(--space-6);
  }
  .spec-table-title {
    font-size: var(--text-lg);
    margin-bottom: var(--space-3);
  }
  .spec-table-wrapper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .spec-table-content {
    min-width: 500px;
  }
  .spec-table-header-cell,
  .spec-table-cell {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-xs);
  }
  .spec-table-type-cell {
    font-size: 10px;
    padding: 2px 6px;
  }
  .spec-table-badge {
    font-size: 10px;
    padding: 2px 4px;
  }
}
@media (prefers-color-scheme: dark) {
  .spec-table-wrapper {
    background: rgb(var(--color-card-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-thead {
    background: rgb(var(--color-surface-dark));
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-row {
    border-color: rgb(var(--color-border-dark));
  }
  .spec-table-row:hover {
    background: rgba(var(--color-primary) / 0.05);
  }
  .spec-table-type-cell {
    background: rgba(var(--color-primary) / 0.1);
  }
}
.spec-table-wrapper::-webkit-scrollbar {
  height: 8px;
  background: rgba(148, 163, 184, 0.1);
}
.spec-table-wrapper::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.3);
  border-radius: var(--radius-sm);
}
.spec-table-wrapper::-webkit-scrollbar-thumb:hover {
  background: rgba(148, 163, 184, 0.5);
}
.story-header {
  margin-bottom: var(--space-3);
}
.story-article {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  padding: var(--space-5) var(--space-8);
  display: flex;
  flex-direction: column;
  height: 100%;
  transition: all var(--timing-fast) var(--ease-smooth);
  cursor: default;
}
.story-article:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
}
.story-article:active {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.story-article.story-featured {
  background: rgba(var(--color-accent-heritage) / 0.02);
  border: 0;
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
.story-article.story-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
}
.story-image {
  margin-bottom: var(--space-6);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.story-image-img {
  width: 100%;
  height: 200px;
  -o-object-fit: cover;
     object-fit: cover;
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.story-article:hover .story-image-img {
  transform: scale(1.02);
}
.story-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.story-title-wrapper {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.story-category {
  font-size: 0.75rem;
  font-weight: 500;
  color: rgb(var(--color-primary));
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: var(--space-2);
}
.story-main {
  flex: 1;
  margin-bottom: var(--space-6);
}
.story-main .description {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.story-footer {
  margin-top: auto;
}
.story-metrics {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--space-2);
  justify-content: space-between;
  align-items: center;
  padding-top: var(--space-4);
  border: 0;
  overflow-x: auto;
}
.story-metric {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  background: rgba(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: 0.75rem;
  font-weight: 500;
  border: 0;
  box-shadow: none;
  line-height: 1.2;
  white-space: nowrap;
  flex-shrink: 0;
  transition: all var(--timing-fast) var(--ease-smooth);
}
.story-metric:hover {
  background: rgba(var(--color-success) / 0.15);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
.story-metric.metric-warning {
  background: rgba(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.story-metric.metric-warning:hover {
  background: rgba(var(--color-warning) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-warning) / 0.1);
}
.story-metric.metric-secondary {
  background: rgba(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.story-metric.metric-secondary:hover {
  background: rgba(var(--color-primary) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-primary) / 0.1);
}
.story-metric.metric-primary {
  background: rgba(var(--color-foreground) / 0.1);
  color: rgb(var(--color-foreground));
}
.story-metric.metric-primary:hover {
  background: rgba(var(--color-foreground) / 0.15);
  box-shadow: 0 2px 4px rgba(var(--color-foreground) / 0.1);
}
.story-metric strong {
  font-weight: 600;
  margin-right: var(--space-1);
}
.metric-icon {
  flex-shrink: 0;
  opacity: 0.8;
}
@media (max-width: 767px) {
  .story-header {
    margin-bottom: var(--space-8);
  }
  .story-grid {
    max-width: 100%;
  }
  .story-article {
    padding: var(--space-4) var(--space-6);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  }
  .story-article:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  }
  .story-title-wrapper {
    gap: var(--space-2);
  }
  .story-image-img {
    height: 160px;
  }
  .story-metrics {
    flex-wrap: wrap;
    gap: var(--space-2);
  }
  .story-metric {
    font-size: 0.75rem;
    padding: var(--space-1) var(--space-2);
    gap: var(--space-1);
    flex-shrink: 1;
  }
  .story-metric {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
  }
}
@media (max-width: 1023px) and (min-width: 768px) {
  .story-grid {
    max-width: 500px;
  }
  .story-article {
    padding: var(--space-7);
  }
}
@media (min-width: 1400px) {
  .story-grid {
    max-width: 700px;
  }
}
@media (prefers-contrast: high) {
  .story-article {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .story-metric {
    outline: 2px solid currentColor;
    font-weight: 600;
  }
  .story-article.story-featured {
    outline-width: 3px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .story-article,
  .story-metric,
  .story-image-img {
    transition: none;
  }
  .story-article:hover,
  .story-metric:hover {
    transform: none;
  }
  .story-article:hover .story-image-img {
    transform: none;
  }
}
@media (prefers-color-scheme: dark) {
  .story-article.story-featured {
    background: rgba(var(--color-accent-heritage) / 0.03);
  }
  .story-metric {
    background: rgba(var(--color-success) / 0.15);
  }
  .story-metric.metric-warning {
    background: rgba(var(--color-warning) / 0.15);
  }
  .story-metric.metric-secondary {
    background: rgba(var(--color-primary) / 0.15);
  }
  .story-metric.metric-primary {
    background: rgba(var(--color-foreground) / 0.15);
  }
}
.story-article:focus-within {
  outline: 2px solid rgba(var(--color-focus) / 0.5);
  outline-offset: 2px;
}
@media print {
  .story-article {
    -moz-column-break-inside: avoid;
         break-inside: avoid;
    box-shadow: none;
    border: 0;
    outline: 1px solid #ccc;
  }
  .story-article:hover {
    transform: none;
    box-shadow: none;
  }
  .story-metrics {
    border: 0;
  }
}
.streaming-carousel {
  position: relative;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  width: 100%;
  height: 100%;
  min-height: 48px;
  transform: translateZ(0);
  will-change: transform;
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel:hover {
  transform: none;
  box-shadow: none;
}
.streaming-carousel:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.carousel-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-items: center;
  justify-content: center;
  height: 100%;
  width: 100%;
}
.carousel-text {
  text-align: center;
  flex: 1;
}
.carousel-icon-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  height: 100%;
  width: 100%;
  padding: var(--space-2);
}
.streaming-carousel .icon-container {
  box-shadow: none;
  border: none;
  background: var(--color-bg-muted-alpha);
  transition: transform var(--timing-normal) var(--ease-smooth);
}
.streaming-carousel:hover .icon-container {
  transform: translateY(-2px);
}
.carousel-label {
  text-align: center;
  display: block;
  margin-top: var(--space-1);
  opacity: 0.7;
  font-size: var(--text-xs);
  line-height: 1.2;
  color: rgb(var(--color-text-muted));
  transition: opacity var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel:hover .carousel-label {
  opacity: 0.9;
}
.streaming-carousel-viewport {
  position: relative;
  background: transparent;
  overflow: hidden;
  width: 100%;
}
.streaming-carousel-track {
  display: flex;
  align-items: center;
  animation: streaming-flow 30s linear infinite;
  width: -moz-max-content;
  width: max-content;
  will-change: transform;
  transform: translateZ(0);
  contain: layout style paint;
  backface-visibility: hidden;
}
.streaming-carousel-viewport:hover .streaming-carousel-track {
  animation-play-state: paused;
}
.streaming-carousel-viewport:hover .streaming-carousel-track {
  will-change: auto;
}
.streaming-carousel-item {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
@keyframes streaming-flow {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(-50%, 0, 0);
  }
}
.streaming-carousel {
  transition: all var(--timing-normal) var(--ease-smooth);
}
.streaming-carousel-item {
  transition: transform var(--timing-fast) var(--ease-smooth);
}
.streaming-carousel-item:hover {
  transform: scale(1.05);
}
.streaming-carousel-fade-left,
.streaming-carousel-fade-right {
  position: absolute;
  top: 0;
  bottom: 0;
  width: var(--space-24);
  pointer-events: none;
  z-index: 1;
}
.streaming-carousel-fade-left {
  left: 0;
  background: linear-gradient(to right, 
    rgb(var(--color-bg-default)) 0%,
    rgba(var(--color-bg-default), 0) 100%);
}
.streaming-carousel-fade-right {
  right: 0;
  background: linear-gradient(to left,
    rgb(var(--color-bg-default)) 0%,
    rgba(var(--color-bg-default), 0) 100%);
}
@media (max-width: 767px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-content {
    flex-direction: column;
    text-align: center;
  }
  .carousel-icon-wrapper {
    margin-top: var(--space-2);
  }
  .streaming-carousel-viewport {
    padding: var(--space-4) 0;
    margin: var(--space-4) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-6);
    animation-duration: 20s;
  }
  .streaming-carousel-item {
    width: var(--space-32);
    height: var(--space-24);
  }
}
@media (min-width: 768px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-content {
    flex-direction: column;
    text-align: center;
  }
  .carousel-text {
    flex: none;
  }
  .carousel-icon-wrapper {
    margin-top: var(--space-2);
    margin-left: 0;
  }
  .streaming-carousel-viewport {
    padding: var(--space-6) 0;
    margin: var(--space-6) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-8);
    animation-duration: 30s;
  }
  .streaming-carousel-item {
    width: var(--space-40);
    height: var(--space-28);
  }
}
@media (min-width: 1280px) {
  .streaming-carousel {
    padding: 0;
  }
  .carousel-icon-wrapper {
    margin-left: 0;
  }
  .streaming-carousel-viewport {
    padding: var(--space-8) 0;
    margin: var(--space-8) 0;
  }
  .streaming-carousel-track {
    gap: var(--space-8);
    animation-duration: 45s;
  }
  .streaming-carousel-item {
    width: var(--space-40);
    height: var(--space-28);
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
@media (prefers-contrast: high) {
  .streaming-carousel-card {
    border-width: 2px;
    border-color: rgb(var(--color-border));
  }
  .streaming-carousel-logo {
    opacity: 1;
    filter: contrast(1.3);
  }
}
@media (prefers-reduced-motion: reduce) {
  .streaming-carousel-track {
    animation: none;
    will-change: auto;
  }
  .streaming-carousel-card,
  .streaming-carousel-logo,
  .streaming-carousel-label {
    transition: none;
    will-change: auto;
  }
}
.streaming-carousel .title-card {
  margin: 0;
}
.streaming-carousel .description {
  margin: 0;
}
.streaming-carousel .icon-container-heritage {
  margin: var(--space-4);
}
.streaming-carousel-heritage .title-card::after {
  content: '';
  display: block;
  width: var(--space-16);
  height: 2px;
  background: rgb(var(--color-accent-heritage));
  margin: calc(var(--space-6) * 1.3) auto 0;
  border-radius: var(--radius-full);
  opacity: 0.8;
}
@media (max-width: 767px) {
  .streaming-carousel-heritage .title-section::after {
    margin: calc(var(--space-8) * 1.35) auto 0;
  }
  .streaming-carousel-heritage {
    margin: var(--space-12) 0;
  }
}
@media (min-width: 1280px) {
  .streaming-carousel-heritage .title-section::after {
    margin: calc(var(--space-6) * 1.3) auto 0;
  }
}
.switchblade-capabilities-section {
  padding: 8rem 0;
  background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
  position: relative;
  overflow: hidden;
}
.switchblade-capabilities-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: radial-gradient(circle at 25% 25%, rgba(59, 130, 246, 0.08) 0%, transparent 50%),
    radial-gradient(circle at 75% 75%, rgba(147, 51, 234, 0.06) 0%, transparent 50%),
    radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
  pointer-events: none;
}
.dark .switchblade-capabilities-section {
  background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
}
.dark .switchblade-capabilities-section::before {
  background: radial-gradient(circle at 25% 25%, rgba(59, 130, 246, 0.15) 0%, transparent 50%),
    radial-gradient(circle at 75% 75%, rgba(147, 51, 234, 0.12) 0%, transparent 50%),
    radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.08) 0%, transparent 50%);
}
.switchblade-capabilities__container {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1.5rem;
  position: relative;
  z-index: 1;
}
@media (min-width: 640px) {
  .switchblade-capabilities__container {
    padding: 0 2rem;
  }
}
@media (min-width: 1024px) {
  .switchblade-capabilities__container {
    padding: 0 2.5rem;
  }
}
.switchblade-capabilities__header {
  text-align: center;
  margin-bottom: 5rem;
  position: relative;
}
.switchblade-capabilities__title {
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 800;
  margin-bottom: 1.5rem;
  line-height: 1.1;
  letter-spacing: -0.025em;
  background: linear-gradient(135deg, #1e293b 0%, #475569 50%, #334155 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(0, 0, 0, 0.1);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-capabilities__title {
  background: linear-gradient(135deg, #ffffff 0%, #e2e8f0 50%, #cbd5e1 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
}
.switchblade-capabilities__description {
  font-size: 1.375rem;
  color: #475569;
  max-width: 56rem;
  margin: 0 auto;
  line-height: 1.7;
  letter-spacing: -0.01em;
  opacity: 0.9;
  font-weight: 400;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-capabilities__description {
  color: #94a3b8;
}
.switchblade-cap-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-top: 4rem;
  position: relative;
}
@media (min-width: 768px) {
  .switchblade-cap-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 3rem;
  }
}
@media (min-width: 1024px) {
  .switchblade-cap-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 3.5rem;
  }
}
.switchblade-cap-card {
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.98) 0%, 
    rgba(255, 255, 255, 0.95) 50%,
    rgba(250, 250, 249, 0.92) 100%);
  border-radius: 2rem;
  padding: 3rem 2.5rem;
  border: 1px solid rgba(255, 255, 255, 0.9);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.08),
    0 10px 25px rgba(0, 0, 0, 0.04),
    inset 0 1px 0 rgba(255, 255, 255, 0.4);
  -webkit-backdrop-filter: blur(30px);
          backdrop-filter: blur(30px);
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
  text-align: center;
  animation: fadeInUp 0.8s ease forwards;
  transform: translateY(20px);
  opacity: 0;
}
.switchblade-cap-card:nth-child(1) {
  animation-delay: 0.1s;
}
.switchblade-cap-card:nth-child(2) {
  animation-delay: 0.2s;
}
.switchblade-cap-card:nth-child(3) {
  animation-delay: 0.3s;
}
.switchblade-cap-card:nth-child(4) {
  animation-delay: 0.4s;
}
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.switchblade-cap-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, 
    rgba(59, 130, 246, 0.02) 0%, 
    rgba(147, 51, 234, 0.02) 50%,
    rgba(16, 185, 129, 0.02) 100%);
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}
.switchblade-cap-card:hover {
  transform: translateY(-16px) scale(1.02);
  box-shadow: 0 35px 70px rgba(0, 0, 0, 0.15),
    0 15px 35px rgba(59, 130, 246, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.5);
  border-color: rgba(59, 130, 246, 0.3);
}
.switchblade-cap-card:hover::before {
  opacity: 1;
}
.dark .switchblade-cap-card {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.8) 0%, 
    rgba(30, 41, 59, 0.6) 50%,
    rgba(15, 23, 42, 0.4) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3),
    0 10px 25px rgba(0, 0, 0, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.dark .switchblade-cap-card:hover {
  border-color: rgba(59, 130, 246, 0.4);
  box-shadow: 0 35px 70px rgba(0, 0, 0, 0.5),
    0 15px 35px rgba(59, 130, 246, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.switchblade-cap-icon {
  width: 4rem;
  height: 4rem;
  margin: 0 auto 1.5rem;
  border-radius: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
  box-shadow: 0 10px 25px rgba(59, 130, 246, 0.25),
    0 4px 12px rgba(99, 102, 241, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.switchblade-cap-icon::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.2) 50%, transparent 70%);
  transform: translateX(-100%);
  transition: transform 0.6s ease;
}
.switchblade-cap-card:hover .switchblade-cap-icon {
  transform: scale(1.1) rotate(5deg);
  box-shadow: 0 15px 35px rgba(59, 130, 246, 0.35),
    0 8px 20px rgba(99, 102, 241, 0.25),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}
.switchblade-cap-card:hover .switchblade-cap-icon::before {
  transform: translateX(100%);
}
.switchblade-cap-icon svg {
  width: 2rem;
  height: 2rem;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
  transition: transform 0.3s ease;
}
.switchblade-cap-card:hover .switchblade-cap-icon svg {
  transform: scale(1.1);
}
.switchblade-cap-title {
  font-size: 1.5rem;
  font-weight: 700;
  margin: 1.5rem 0 1rem;
  color: #1e293b;
  line-height: 1.3;
  letter-spacing: -0.02em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-cap-title {
  color: #f1f5f9;
}
.switchblade-cap-desc {
  font-size: 1.125rem;
  color: #475569;
  line-height: 1.7;
  letter-spacing: -0.01em;
  font-weight: 400;
  margin: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-cap-desc {
  color: #cbd5e1;
}
.switchblade-dashboard__visual {
  position: relative;
  margin: 4rem 0;
}
.switchblade-dashboard__visual::before {
  content: '';
  position: absolute;
  inset: -2rem;
  background: linear-gradient(135deg, 
    rgba(59, 130, 246, 0.15), 
    rgba(147, 51, 234, 0.12), 
    rgba(16, 185, 129, 0.08));
  border-radius: 2rem;
  filter: blur(3rem);
  opacity: 0.6;
  animation: pulse-glow 4s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% {
    opacity: 0.4;
    transform: scale(1);
  }
  50% {
    opacity: 0.7;
    transform: scale(1.05);
  }
}
.switchblade-dashboard__content {
  position: relative;
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.95) 0%, 
    rgba(250, 250, 249, 0.9) 100%);
  border-radius: 2rem;
  padding: 2.5rem;
  border: 1px solid rgba(255, 255, 255, 0.3);
  -webkit-backdrop-filter: blur(20px);
          backdrop-filter: blur(20px);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.dark .switchblade-dashboard__content {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.95) 0%, 
    rgba(30, 41, 59, 0.9) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.switchblade-env-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 3rem;
}
@media (min-width: 1024px) {
  .switchblade-env-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.switchblade-env-card {
  background: linear-gradient(135deg, 
    rgba(255, 255, 255, 0.95) 0%, 
    rgba(255, 255, 255, 0.8) 100%);
  border-radius: 1.25rem;
  padding: 1.5rem;
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08),
    0 1px 8px rgba(0, 0, 0, 0.05);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  position: relative;
  overflow: hidden;
}
.switchblade-env-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12),
    0 4px 16px rgba(0, 0, 0, 0.08);
}
.dark .switchblade-env-card {
  background: linear-gradient(135deg, 
    rgba(51, 65, 85, 0.8) 0%, 
    rgba(30, 41, 59, 0.6) 50%,
    rgba(15, 23, 42, 0.4) 100%);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3),
    0 1px 8px rgba(0, 0, 0, 0.2);
}
.switchblade-env-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
}
.switchblade-env-name {
  font-size: 1.25rem;
  font-weight: 700;
  margin: 0 0 0.5rem 0;
  color: #1e293b;
  letter-spacing: -0.015em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-env-name {
  color: #f1f5f9;
}
.switchblade-env-badge {
  font-size: 0.75rem;
  padding: 0.375rem 0.75rem;
  border-radius: 0.5rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.switchblade-env-badge-content {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}
.switchblade-env-badge-content svg {
  width: 0.875rem;
  height: 0.875rem;
}
.switchblade-env-meta {
  font-size: 0.875rem;
  color: #64748b;
  font-weight: 500;
  line-height: 1.5;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .switchblade-env-meta {
  color: #94a3b8;
}
.switchblade-stack-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.switchblade-stack-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.75rem;
  border-radius: 0.5rem;
  border: 1px solid;
  font-size: 0.875rem;
}
.switchblade-stack-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.switchblade-stack-status {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}
.switchblade-cli {
  background: linear-gradient(135deg, #1a1a1a 0%, #0f0f0f 100%);
  border-radius: 1rem;
  overflow: hidden;
  font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4),
    0 8px 16px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.1);
}
.switchblade-cli-header {
  background: linear-gradient(135deg, #2d2d2d 0%, #1f1f1f 100%);
  padding: 1rem 1.25rem;
  border-bottom: 1px solid #404040;
  display: flex;
  align-items: center;
  position: relative;
}
.switchblade-cli-header::before {
  content: '';
  position: absolute;
  left: 1.25rem;
  top: 50%;
  transform: translateY(-50%);
  width: 0.75rem;
  height: 0.75rem;
  background: #ff5f57;
  border-radius: 50%;
  box-shadow: 1.25rem 0 0 #ffbd2e, 2.5rem 0 0 #28ca42;
}
.switchblade-cli-content {
  padding: 2rem;
  background: linear-gradient(135deg, #1a1a1a 0%, #0f0f0f 100%);
  color: #e5e5e5;
  font-size: 0.9rem;
  line-height: 1.7;
  max-height: 450px;
  overflow-y: auto;
  font-family: 'Monaco', 'Menlo', 'SF Mono', 'Consolas', 'Ubuntu Mono', monospace;
  font-weight: 500;
}
.switchblade-cli-command {
  color: #22c55e;
  margin-bottom: 0.75rem;
  font-weight: 600;
  text-shadow: 0 0 8px rgba(34, 197, 94, 0.3);
}
.switchblade-cli-command::before {
  content: '$ ';
  color: #64748b;
  font-weight: 500;
}
.switchblade-cli-output {
  color: #94a3b8;
  margin-bottom: 0.5rem;
  white-space: pre-wrap;
  font-weight: 400;
  opacity: 0.95;
}
@media (max-width: 768px) {
  .switchblade-capabilities-section {
    padding: 5rem 0;
  }
  .switchblade-capabilities__title {
    font-size: 2.5rem;
    margin-bottom: 1rem;
  }
  .switchblade-capabilities__description {
    font-size: 1.125rem;
  }
  .switchblade-cap-grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .switchblade-cap-card {
    padding: 2.5rem 2rem;
  }
  .switchblade-cap-title {
    font-size: 1.375rem;
  }
  .switchblade-cap-desc {
    font-size: 1rem;
  }
  .switchblade-cli-header::before {
    left: 1rem;
  }
  .switchblade-cli-content {
    padding: 1.5rem;
    font-size: 0.8rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  .switchblade-cap-card,
  .switchblade-cap-icon,
  .switchblade-env-card,
  .switchblade-dashboard__visual::before {
    animation: none;
    transition: none;
  }
  .switchblade-cap-card:hover {
    transform: none;
  }
  .switchblade-cap-card:hover .switchblade-cap-icon {
    transform: none;
  }
  .switchblade-dashboard__visual::before {
    filter: none;
  }
}
@media (prefers-contrast: high) {
  .switchblade-cap-card {
    border-width: 2px;
    border-color: currentColor;
  }
  .switchblade-cli {
    border-width: 2px;
    border-color: currentColor;
  }
}
.switchblade-cap-card,
.switchblade-env-card,
.switchblade-cli {
  will-change: transform;
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.switchblade-cap-card:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 2px;
}
.tco-section {
  padding: 6rem 0;
  position: relative;
  overflow: hidden;
}
.tco-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 25%, rgba(59, 130, 246, 0.06) 0%, transparent 50%),
    radial-gradient(circle at 80% 75%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
  pointer-events: none;
}
.dark .tco-section::before {
  background: radial-gradient(circle at 20% 25%, rgba(59, 130, 246, 0.12) 0%, transparent 50%),
    radial-gradient(circle at 80% 75%, rgba(16, 185, 129, 0.08) 0%, transparent 50%);
}
.tco__container {
  max-width: 90rem;
  margin: 0 auto;
  padding: 0 1rem;
  position: relative;
  z-index: 1;
}
@media (min-width: 640px) {
  .tco__container {
    padding: 0 1.5rem;
  }
}
@media (min-width: 1024px) {
  .tco__container {
    padding: 0 2rem;
  }
}
.tco__header {
  text-align: center;
  margin-bottom: 5rem;
  position: relative;
}
.tco__title {
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 800;
  margin-bottom: 1.5rem;
  line-height: 1.1;
  letter-spacing: -0.025em;
  background: linear-gradient(135deg, #1e293b 0%, #475569 50%, #334155 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(0, 0, 0, 0.1);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .tco__title {
  background: linear-gradient(135deg, #ffffff 0%, #e2e8f0 50%, #cbd5e1 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 40px rgba(255, 255, 255, 0.1);
}
.tco__description {
  font-size: 1.375rem;
  color: #475569;
  max-width: 56rem;
  margin: 0 auto;
  line-height: 1.7;
  letter-spacing: -0.01em;
  opacity: 0.9;
  font-weight: 400;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.dark .tco__description {
  color: #94a3b8;
}
.tco-table {
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 1.5rem;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  -webkit-backdrop-filter: blur(15px);
          backdrop-filter: blur(15px);
  overflow: hidden;
  margin-bottom: 4rem;
}
.dark .tco-table {
  background: rgba(51, 65, 85, 0.6);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
@media (max-width: 1279px) {
  .tco-table {
    overflow-x: auto;
  }
  .tco-table-header,
  .tco-table-row {
    min-width: 1050px;
  }
}
.tco-table-header {
  display: grid;
  grid-template-columns: 300px repeat(auto-fit, minmax(180px, 1fr));
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 51, 234, 0.05) 100%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.dark .tco-table-header {
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.2) 0%, rgba(147, 51, 234, 0.1) 100%);
  border-bottom-color: rgba(255, 255, 255, 0.1);
}
@media (max-width: 1279px) {
  .tco-table-header {
    grid-template-columns: 300px repeat(auto-fit, minmax(200px, 1fr));
  }
}
.tco-header-cell {
  padding: 1rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 700;
  text-align: center;
  color: #1e293b;
  font-family: 'Inter', sans-serif;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
  line-height: 1.3;
}
.tco-header-cell:last-child {
  border-right: none;
}
.tco-header-cell--category {
  text-align: left;
  background: rgba(71, 85, 105, 0.05);
  padding: 1rem 1.5rem;
  font-size: 1rem;
}
.tco-header-cell--0 {
  color: #dc2626;
}
.tco-header-cell--1 {
  color: #2563eb;
}
.tco-header-cell--2 {
  color: #059669;
}
.tco-header-cell--3 {
  color: #f59e0b;
}
.tco-header-cell--4 {
  color: #8b5cf6;
}
.dark .tco-header-cell {
  color: #ffffff;
}
.dark .tco-header-cell--0 {
  color: #fca5a5;
}
.dark .tco-header-cell--1 {
  color: #93c5fd;
}
.dark .tco-header-cell--2 {
  color: #6ee7b7;
}
.dark .tco-header-cell--3 {
  color: #fbbf24;
}
.dark .tco-header-cell--4 {
  color: #c4b5fd;
}
@media (max-width: 1279px) {
  .tco-header-cell {
    border-right: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    text-align: left;
    padding: 1rem;
  }
  .tco-header-cell:last-child {
    border-bottom: none;
  }
  .tco-header-cell--category {
    position: sticky;
    left: 0;
    background: rgba(71, 85, 105, 0.1);
    z-index: 2;
  }
}
.tco-table-row {
  display: grid;
  grid-template-columns: 300px repeat(auto-fit, minmax(180px, 1fr));
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  transition: all 0.3s ease;
}
.tco-table-row:hover {
  background: rgba(59, 130, 246, 0.02);
}
.tco-table-row:last-child {
  border-bottom: none;
}
.dark .tco-table-row {
  border-bottom-color: rgba(255, 255, 255, 0.05);
}
.dark .tco-table-row:hover {
  background: rgba(59, 130, 246, 0.05);
}
@media (max-width: 1279px) {
  .tco-table-row {
    grid-template-columns: 300px repeat(auto-fit, minmax(200px, 1fr));
  }
}
.tco-cell {
  padding: 1.5rem 1rem;
  border-right: 1px solid rgba(255, 255, 255, 0.1);
  transition: all 0.3s ease;
}
.tco-cell:last-child {
  border-right: none;
}
.tco-cell--category {
  background: rgba(248, 250, 252, 0.8);
  padding: 1.5rem;
}
.dark .tco-cell--category {
  background: rgba(30, 41, 59, 0.4);
}
.tco-cell--0::before,
.tco-cell--1::before,
.tco-cell--2::before,
.tco-cell--3::before,
.tco-cell--4::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  border-radius: 0 2px 2px 0;
}
.tco-cell--0 {
  position: relative;
}
.tco-cell--0::before {
  background: linear-gradient(135deg, #ef4444, #dc2626);
}
.tco-cell--1 {
  position: relative;
}
.tco-cell--1::before {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
}
.tco-cell--2 {
  position: relative;
}
.tco-cell--2::before {
  background: linear-gradient(135deg, #10b981, #059669);
}
.tco-cell--3 {
  position: relative;
}
.tco-cell--3::before {
  background: linear-gradient(135deg, #f59e0b, #d97706);
}
.tco-cell--4 {
  position: relative;
}
.tco-cell--4::before {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed);
}
@media (max-width: 1279px) {
  .tco-cell {
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding: 1rem;
  }
  .tco-cell:last-child {
    border-right: none;
  }
  .tco-cell--category {
    position: sticky;
    left: 0;
    background: rgba(248, 250, 252, 0.95);
    z-index: 2;
    border-right: 2px solid rgba(255, 255, 255, 0.2);
  }
  .dark .tco-cell--category {
    background: rgba(30, 41, 59, 0.95);
  }
}
.tco-category-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: #0f172a;
  margin-bottom: 0.5rem;
  font-family: 'Inter', sans-serif;
}
.dark .tco-category-title {
  color: #ffffff;
}
.tco-category-description {
  font-size: 0.875rem;
  color: #475569;
  line-height: 1.5;
  opacity: 0.8;
}
.dark .tco-category-description {
  color: #94a3b8;
}
.tco-option-title {
  font-size: 0.95rem;
  font-weight: 700;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
  line-height: 1.3;
}
.tco-option-subtitle {
  font-size: 0.875rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
  opacity: 0.8;
  font-family: 'Inter', sans-serif;
}
.tco-cell--0 .tco-option-title {
  color: #dc2626;
}
.tco-cell--1 .tco-option-title {
  color: #2563eb;
}
.tco-cell--2 .tco-option-title {
  color: #059669;
}
.tco-cell--3 .tco-option-title {
  color: #f59e0b;
}
.tco-cell--4 .tco-option-title {
  color: #8b5cf6;
}
.tco-cell--0 .tco-option-subtitle {
  color: #dc2626;
}
.tco-cell--1 .tco-option-subtitle {
  color: #2563eb;
}
.tco-cell--2 .tco-option-subtitle {
  color: #059669;
}
.tco-cell--3 .tco-option-subtitle {
  color: #f59e0b;
}
.tco-cell--4 .tco-option-subtitle {
  color: #8b5cf6;
}
.dark .tco-cell--0 .tco-option-title {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-title {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-title {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-title {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-title {
  color: #c4b5fd;
}
.dark .tco-cell--0 .tco-option-subtitle {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-subtitle {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-subtitle {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-subtitle {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-subtitle {
  color: #c4b5fd;
}
.tco-option-items {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.4;
}
.tco-option-items li {
  position: relative;
  padding-left: 1rem;
  margin-bottom: 0.4rem;
  color: #374151;
}
.tco-option-items li::before {
  content: '•';
  position: absolute;
  left: 0;
  font-weight: bold;
}
.tco-cell--0 .tco-option-items li {
  color: #7f1d1d;
}
.tco-cell--1 .tco-option-items li {
  color: #1e3a8a;
}
.tco-cell--2 .tco-option-items li {
  color: #064e3b;
}
.tco-cell--3 .tco-option-items li {
  color: #92400e;
}
.tco-cell--4 .tco-option-items li {
  color: #581c87;
}
.dark .tco-option-items li {
  color: #d1d5db;
}
.dark .tco-cell--0 .tco-option-items li {
  color: #fca5a5;
}
.dark .tco-cell--1 .tco-option-items li {
  color: #93c5fd;
}
.dark .tco-cell--2 .tco-option-items li {
  color: #6ee7b7;
}
.dark .tco-cell--3 .tco-option-items li {
  color: #fbbf24;
}
.dark .tco-cell--4 .tco-option-items li {
  color: #c4b5fd;
}
.tco-table-row--total {
  border-top: 2px solid rgba(16, 185, 129, 0.3);
  background: rgba(16, 185, 129, 0.05);
}
.dark .tco-table-row--total {
  border-top-color: rgba(16, 185, 129, 0.4);
  background: rgba(16, 185, 129, 0.1);
}
.tco-cell--total-category {
  background: rgba(16, 185, 129, 0.1);
  font-weight: 600;
}
.dark .tco-cell--total-category {
  background: rgba(16, 185, 129, 0.15);
}
.tco-table-row--total .tco-category-title {
  font-weight: 700;
  color: #059669;
}
.dark .tco-table-row--total .tco-category-title {
  color: #10b981;
}
.tco-cell--total .tco-option-title {
  font-weight: 700;
}
.tco-cell--total .tco-option-subtitle {
  font-weight: 600;
}
.tco-impact-summary {
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 1.5rem;
  padding: 3rem 2rem;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
  -webkit-backdrop-filter: blur(15px);
          backdrop-filter: blur(15px);
  text-align: center;
  margin-top: 4rem;
}
.dark .tco-impact-summary {
  background: rgba(51, 65, 85, 0.6);
  border-color: rgba(255, 255, 255, 0.08);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
.tco-impact-title {
  font-size: 2rem;
  font-weight: 800;
  margin-bottom: 0.75rem;
  background: linear-gradient(135deg, #1e293b, #475569);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: 'Inter', sans-serif;
}
.dark .tco-impact-title {
  background: linear-gradient(135deg, #ffffff, #e2e8f0);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.tco-impact-description {
  font-size: 1.125rem;
  color: #475569;
  margin-bottom: 2.5rem;
  opacity: 0.9;
}
.dark .tco-impact-description {
  color: #94a3b8;
}
.tco-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.tco-stat-card {
  background: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 1rem;
  padding: 1.5rem 1rem;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.04);
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  text-align: center;
  transition: all 0.3s ease;
}
.tco-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08);
}
.dark .tco-stat-card {
  background: rgba(51, 65, 85, 0.4);
  border-color: rgba(255, 255, 255, 0.06);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
}
.dark .tco-stat-card:hover {
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
}
.tco-stat-value {
  font-size: 2rem;
  font-weight: 800;
  margin-bottom: 0.5rem;
  background: linear-gradient(135deg, #059669, #10b981);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: 'Inter', sans-serif;
  line-height: 1.2;
}
.dark .tco-stat-value {
  background: linear-gradient(135deg, #34d399, #10b981);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.tco-stat-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: #0f172a;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
}
.dark .tco-stat-label {
  color: #ffffff;
}
.tco-stat-detail {
  font-size: 0.75rem;
  color: #475569;
  line-height: 1.4;
  opacity: 0.7;
}
.dark .tco-stat-detail {
  color: #94a3b8;
}
.tco-decision-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  padding: 2rem;
  background: rgba(16, 185, 129, 0.05);
  border: 1px solid rgba(16, 185, 129, 0.1);
  border-radius: 1rem;
  margin: 0 auto;
  max-width: 600px;
}
.dark .tco-decision-summary {
  background: rgba(16, 185, 129, 0.1);
  border-color: rgba(16, 185, 129, 0.2);
}
@media (max-width: 640px) {
  .tco-decision-summary {
    flex-direction: column;
    gap: 1rem;
  }
}
.tco-decision-item {
  text-align: center;
  flex: 1;
}
.tco-decision-cost {
  display: block;
  font-size: 1.5rem;
  font-weight: 800;
  margin-bottom: 0.25rem;
  font-family: 'Inter', sans-serif;
}
.tco-decision-item--traditional .tco-decision-cost {
  color: #dc2626;
}
.tco-decision-item--switchblade .tco-decision-cost {
  color: #059669;
}
.tco-decision-label {
  display: block;
  font-size: 0.875rem;
  font-weight: 500;
  color: #475569;
  opacity: 0.8;
}
.dark .tco-decision-label {
  color: #94a3b8;
}
.tco-decision-arrow {
  font-size: 1.5rem;
  color: #059669;
  font-weight: bold;
  flex-shrink: 0;
}
@media (max-width: 640px) {
  .tco-decision-arrow {
    transform: rotate(90deg);
  }
}
.testimonial-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-md);
  padding: var(--space-6);
  transition: transform var(--timing-fast) var(--ease-smooth),
              box-shadow var(--timing-fast) var(--ease-smooth);
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  box-shadow: var(--shadow-card);
}
.testimonial-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}
.testimonial-card:active {
  transform: scale(0.98);
  box-shadow: var(--shadow-card-active);
}
.testimonial-card.testimonial-featured {
  background: rgba(var(--color-accent-heritage) / 0.02);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card);
}
.testimonial-card.testimonial-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    var(--shadow-card-hover);
}
.testimonial-quote-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-items: center;
  text-align: center;
}
.testimonial-card .icon-container-base {
  min-width: 48px;
  min-height: 48px;
}
.testimonial-quote {
  font-style: italic;
  margin: 0;
  color: rgb(var(--color-foreground));
  line-height: 1.6;
  text-align: center;
}
.testimonial-author-container {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  margin-top: auto;
  text-align: center;
}
.testimonial-avatar-wrapper {
  flex-shrink: 0;
  margin-bottom: var(--space-2);
}
.testimonial-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  -o-object-fit: cover;
     object-fit: cover;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  min-width: 48px;
  min-height: 48px;
}
.testimonial-author-info {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  align-items: center;
}
.testimonial-author {
  font-style: normal;
  color: rgb(var(--color-foreground));
  margin: 0;
}
.testimonial-title {
  margin: 0;
  line-height: 1.4;
  color: rgb(var(--color-muted-foreground));
}
.testimonial-company {
  margin: 0;
  font-weight: 500;
  color: rgb(var(--color-muted-foreground));
}
.testimonial-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
.testimonial-card.testimonial-featured:hover {
  background: rgba(var(--color-accent-heritage) / 0.04);
  border-color: rgba(var(--color-accent-heritage) / 0.4);
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(var(--color-accent-heritage) / 0.15);
}
.testimonial-card:active {
  transform: translateY(0);
}
.testimonial-quote-wrapper,
.testimonial-author-container {
  transform: translateZ(0);
}
@media (prefers-reduced-motion: reduce) {
  .testimonial-card,
  .testimonial-card:hover,
  .testimonial-card:active,
  .testimonial-quote-wrapper,
  .testimonial-author-container {
    transition: none !important;
    transform: none !important;
    animation: none !important;
  }
}
@media (prefers-contrast: high) {
  .testimonial-card {
    outline: 2px solid currentColor;
  }
  .testimonial-card.testimonial-featured {
    outline: 2px solid currentColor;
    box-shadow: inset 6px 0 0 currentColor,
      var(--shadow-card);
  }
}
@media (min-width: 640px) {
  .testimonial-card {
    padding: var(--space-8);
  }
  .testimonial-quote-wrapper {
    flex-direction: row;
    text-align: left;
    align-items: flex-start;
  }
  .testimonial-quote {
    text-align: left;
  }
  .testimonial-author-container {
    justify-content: flex-start;
    text-align: left;
  }
  .testimonial-author-info {
    align-items: flex-start;
  }
}
@media (min-width: 768px) {
  .testimonial-quote {
    font-size: 1.125rem;
    line-height: 1.7;
  }
  .testimonial-avatar {
    width: 56px;
    height: 56px;
    min-width: 56px;
    min-height: 56px;
  }
}
@media (min-width: 1024px) {
  .testimonial-quote-wrapper {
    gap: var(--space-6);
  }
  .testimonial-author-container {
    gap: var(--space-6);
  }
}
@media (min-width: 1280px) {
  .testimonial-card {
    padding: var(--space-12);
  }
}
@media print {
  .testimonial-card {
    box-shadow: none !important;
    border: 1px solid rgb(var(--color-border)) !important;
    page-break-inside: avoid;
  }
}
.theme-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-lg);
  background: rgb(var(--color-background));
  color: rgb(var(--color-muted-foreground));
  cursor: pointer;
  transition: var(--transition-colors);
}
.theme-toggle:hover {
  border-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary));
  background: rgb(var(--color-primary) / 0.05);
}
.theme-toggle:focus {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
.theme-toggle-icon {
  width: 1.25rem;
  height: 1.25rem;
  transition: var(--transition-colors);
}
.theme-toggle--light .theme-toggle-icon--sun {
  display: block;
}
.theme-toggle--light .theme-toggle-icon--moon {
  display: none;
}
.theme-toggle--dark .theme-toggle-icon--sun {
  display: none;
}
.theme-toggle--dark .theme-toggle-icon--moon {
  display: block;
}
.floating-theme-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 50;
}
@media (min-width: 1024px) {
  .floating-theme-toggle {
    top: 1.5rem;
    right: 1.5rem;
  }
}
@media (max-width: 768px) {
  .theme-toggle {
    width: 2.25rem;
    height: 2.25rem;
  }
  .theme-toggle-icon {
    width: 1rem;
    height: 1rem;
  }
}
.timeline-container {
  position: relative;
  width: 100%;
}
.timeline-spacing-wrapper {
  margin-top: var(--space-16);
  padding-bottom: var(--space-8);
}
.timeline-header {
  margin-bottom: var(--space-72);
  padding-bottom: var(--space-8);
}
.timeline-horizontal {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-8);
  position: relative;
  width: 100%;
  padding: var(--space-6) 0;
}
.timeline-horizontal .timeline-step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.timeline-horizontal .timeline-step-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  position: relative;
}
.timeline-horizontal .timeline-step-indicator {
  position: relative;
  margin-bottom: var(--space-4);
  z-index: 2;
}
.timeline-horizontal .timeline-step-content {
  max-width: 280px;
}
.timeline-horizontal.timeline-connected .timeline-connector {
  position: absolute;
  top: 32px;
  left: calc(100% + var(--space-4));
  width: var(--space-8);
  height: 2px;
  background: rgb(var(--color-border));
  z-index: 1;
}
.timeline-horizontal.timeline-connected .timeline-connector::before {
  content: '';
  position: absolute;
  right: -4px;
  top: -2px;
  width: 0;
  height: 0;
  border-left: 6px solid rgb(var(--color-border));
  border-top: 3px solid transparent;
  border-bottom: 3px solid transparent;
}
.timeline-vertical {
  display: flex;
  flex-direction: column;
  position: relative;
  padding-left: var(--space-8);
}
.timeline-vertical .timeline-step {
  position: relative;
  margin-bottom: var(--space-12);
}
.timeline-vertical .timeline-step:last-child {
  margin-bottom: 0;
}
.timeline-vertical .timeline-step-wrapper {
  display: flex;
  align-items: flex-start;
  gap: var(--space-6);
}
.timeline-vertical .timeline-step-indicator {
  position: relative;
  flex-shrink: 0;
  z-index: 2;
}
.timeline-vertical .timeline-step-content {
  flex: 1;
  padding-top: var(--space-2);
}
.timeline-vertical.timeline-connected .timeline-connector {
  position: absolute;
  left: 32px;
  top: calc(100% - var(--space-2));
  width: 2px;
  height: var(--space-12);
  background: rgb(var(--color-border));
  z-index: 1;
}
.timeline-vertical.timeline-connected .timeline-step:last-child .timeline-connector {
  display: none;
}
.timeline-step-number {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: var(--font-size-lg);
  transition: all var(--timing-fast) var(--easing-standard);
  position: relative;
  box-shadow: 0 2px 8px rgba(var(--color-shadow) / 0.1);
}
.timeline-step-number-primary {
  background: rgb(var(--color-primary));
  color: white;
}
.timeline-step-number-secondary {
  background: rgb(var(--color-secondary));
  color: white;
}
.timeline-step-number-success {
  background: rgb(var(--color-success));
  color: white;
}
.timeline-step-number-warning {
  background: rgb(var(--color-warning));
  color: white;
}
.timeline-step-number-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  margin: calc(var(--space-4) * 1.3) 0;
  box-shadow: 0 4px 12px rgba(var(--color-accent-heritage) / 0.3);
}
.timeline-step-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.timeline-step-number:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(var(--color-shadow) / 0.15);
}
.timeline-step-number-heritage:hover {
  box-shadow: 0 8px 20px rgba(var(--color-accent-heritage) / 0.4);
}
.timeline-step-title {
  margin-bottom: var(--space-2);
  color: rgb(var(--color-foreground));
}
.timeline-step-description {
  color: rgb(var(--color-muted-foreground));
  line-height: 1.6;
}
.timeline-annotation {
  position: absolute;
  top: -8px;
  left: calc(100% + var(--space-3));
  background: rgb(var(--color-card));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-sm);
  color: rgb(var(--color-muted-foreground));
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(var(--color-shadow) / 0.1);
  z-index: 3;
  opacity: 0;
  transform: translateX(-8px);
  transition: all var(--timing-fast) var(--ease-smooth);
  pointer-events: none;
}
.timeline-annotation::before {
  content: '';
  position: absolute;
  left: -6px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-right-color: rgb(var(--color-card));
}
.timeline-annotation::after {
  content: '';
  position: absolute;
  left: -7px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-right-color: rgb(var(--color-border));
  z-index: -1;
}
.timeline-step-indicator:hover .timeline-annotation {
  opacity: 1;
  transform: translateX(0);
}
.timeline-step-completed .timeline-step-number {
  background: rgb(var(--color-success));
  color: white;
}
.timeline-step-current .timeline-step-number {
  background: rgb(var(--color-accent-heritage));
  color: white;
  box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage) / 0.2);
  animation: timeline-pulse 2s infinite;
}
.timeline-step-upcoming .timeline-step-number {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
@keyframes timeline-pulse {
  0%, 100% {
    box-shadow: 0 0 0 4px rgba(var(--color-accent-heritage) / 0.2);
  }
  50% {
    box-shadow: 0 0 0 8px rgba(var(--color-accent-heritage) / 0.1);
  }
}
@media (max-width: 767px) {
  .timeline-horizontal {
    display: flex;
    flex-direction: column;
    padding-left: var(--space-6);
  }
  .timeline-horizontal .timeline-step {
    align-items: flex-start;
    text-align: left;
    margin-bottom: var(--space-10);
  }
  .timeline-horizontal .timeline-step:last-child {
    margin-bottom: 0;
  }
  .timeline-horizontal .timeline-step-wrapper {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space-4);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: 0;
    flex-shrink: 0;
  }
  .timeline-horizontal .timeline-step-content {
    max-width: none;
    flex: 1;
    padding-top: var(--space-1);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    left: 32px;
    top: calc(100% - var(--space-2));
    width: 2px;
    height: var(--space-10);
    background: rgb(var(--color-border));
  }
  .timeline-horizontal.timeline-connected .timeline-connector::before {
    display: none;
  }
  .timeline-horizontal.timeline-connected .timeline-step:last-child .timeline-connector {
    display: none;
  }
  .timeline-step-number {
    width: 48px;
    height: 48px;
    font-size: var(--font-size-base);
  }
  .timeline-step-icon {
    width: 20px;
    height: 20px;
  }
  .timeline-annotation {
    position: fixed;
    top: auto;
    bottom: var(--space-4);
    left: 50%;
    transform: translateX(-50%);
    white-space: normal;
    max-width: calc(100vw - var(--space-8));
    text-align: center;
  }
  .timeline-annotation::before,
  .timeline-annotation::after {
    left: 50%;
    top: auto;
    bottom: -6px;
    transform: translateX(-50%);
    border-right-color: transparent;
    border-top-color: rgb(var(--color-card));
  }
  .timeline-annotation::after {
    bottom: -7px;
    border-top-color: rgb(var(--color-border));
  }
  .timeline-step-indicator {
    min-width: 48px;
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
@media (min-width: 768px) {
  .timeline-horizontal {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;
    gap: var(--space-8);
    position: relative;
    width: 100%;
    padding: var(--space-6) 0;
  }
  .timeline-horizontal .timeline-step {
    align-items: center;
    text-align: center;
    margin-bottom: 0;
  }
  .timeline-horizontal .timeline-step-wrapper {
    flex-direction: column;
    align-items: center;
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-4);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 280px;
    padding-top: 0;
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    position: absolute;
    top: 32px;
    left: calc(100% + var(--space-4));
    width: var(--space-8);
    height: 2px;
    background: rgb(var(--color-border));
  }
  .timeline-horizontal.timeline-connected .timeline-connector::before {
    content: '';
    position: absolute;
    right: -4px;
    top: -2px;
    width: 0;
    height: 0;
    border-left: 6px solid rgb(var(--color-border));
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    display: block;
  }
}
@media (min-width: 1024px) {
  .timeline-horizontal {
    gap: var(--space-10);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 320px;
  }
  .timeline-step-number {
    width: 72px;
    height: 72px;
    font-size: var(--font-size-xl);
  }
}
@media (min-width: 1280px) {
  .timeline-horizontal {
    gap: var(--space-12);
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 360px;
  }
  .timeline-step-number {
    width: 80px;
    height: 80px;
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-6);
  }
}
@media (min-width: 2560px) {
  .timeline-horizontal {
    gap: var(--space-16);
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    max-width: none;
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 420px;
  }
  .timeline-step-number {
    width: 96px;
    height: 96px;
    font-size: var(--font-size-2xl);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-8);
  }
  .timeline-step-title {
    font-size: var(--font-size-xl);
    margin-bottom: var(--space-4);
  }
  .timeline-step-description {
    font-size: var(--font-size-lg);
    line-height: 1.7;
  }
  .timeline-container {
    max-width: 2400px;
    margin: 0 auto;
  }
}
@media (min-width: 3840px) {
  .timeline-horizontal {
    gap: calc(var(--spacing) * 20);
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    padding: 0 var(--space-16);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 500px;
  }
  .timeline-step-number {
    width: 120px;
    height: 120px;
    font-size: var(--font-size-3xl);
    box-shadow: 0 8px 32px rgba(var(--color-shadow) / 0.15);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-12);
  }
  .timeline-step-title {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--space-6);
    font-weight: 600;
    letter-spacing: -0.02em;
  }
  .timeline-step-description {
    font-size: var(--font-size-xl);
    line-height: 1.8;
    max-width: 480px;
    margin: 0 auto;
  }
  .timeline-container {
    max-width: 3600px;
    padding: 0 var(--space-20);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    height: 3px;
    width: var(--space-12);
    background: linear-gradient(
      to right, 
      transparent 0%, 
      rgb(var(--color-border)) 20%, 
      rgb(var(--color-border)) 80%, 
      transparent 100%
    );
  }
  .timeline-step-number:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 48px rgba(var(--color-shadow) / 0.2);
  }
  .timeline-step-number-heritage:hover {
    box-shadow: 0 16px 48px rgba(var(--color-accent-heritage) / 0.4);
  }
  .timeline-annotation {
    font-size: var(--font-size-base);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-lg);
    max-width: 320px;
    box-shadow: 0 8px 32px rgba(var(--color-shadow) / 0.15);
  }
}
@media (min-width: 7680px) {
  .timeline-horizontal {
    gap: calc(var(--spacing) * 24);
    grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
    padding: 0 var(--space-24);
  }
  .timeline-horizontal .timeline-step-content {
    max-width: 600px;
  }
  .timeline-step-number {
    width: 160px;
    height: 160px;
    font-size: var(--font-size-4xl);
    box-shadow: 0 12px 48px rgba(var(--color-shadow) / 0.18);
  }
  .timeline-horizontal .timeline-step-indicator {
    margin-bottom: var(--space-16);
  }
  .timeline-step-title {
    font-size: var(--font-size-3xl);
    font-weight: 600;
    letter-spacing: -0.025em;
    margin-bottom: var(--space-8);
  }
  .timeline-step-description {
    font-size: var(--font-size-2xl);
    line-height: 1.7;
    max-width: 580px;
    margin: 0 auto;
  }
  .timeline-container {
    max-width: 7200px;
    padding: 0 var(--space-32);
  }
  .timeline-step-number:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 64px rgba(var(--color-shadow) / 0.25);
  }
  .timeline-step-number-heritage:hover {
    box-shadow: 0 24px 64px rgba(var(--color-accent-heritage) / 0.45);
  }
  .timeline-horizontal.timeline-connected .timeline-connector {
    height: 4px;
    width: var(--space-16);
    background: linear-gradient(
      to right,
      transparent 0%,
      rgba(var(--color-border) / 0.3) 10%,
      rgb(var(--color-border)) 25%,
      rgb(var(--color-border)) 75%,
      rgba(var(--color-border) / 0.3) 90%,
      transparent 100%
    );
  }
  .timeline-annotation {
    font-size: var(--font-size-lg);
    padding: var(--space-4) var(--space-6);
    border-radius: var(--radius-xl);
    max-width: 400px;
    box-shadow: 0 12px 48px rgba(var(--color-shadow) / 0.18);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
  }
}
@media (prefers-contrast: high) {
  .timeline-step-number {
    border: 2px solid currentColor;
  }
  .timeline-connector {
    background: currentColor;
  }
  .timeline-annotation {
    border: 2px solid currentColor;
    background: rgb(var(--color-background));
  }
}
@media (prefers-reduced-motion: reduce) {
  .timeline-step-number,
  .timeline-annotation {
    transition: none;
  }
  .timeline-step-current .timeline-step-number {
    animation: none;
  }
  .timeline-annotation {
    opacity: 1;
    transform: none;
  }
}
.timeline-step-number:focus {
  outline: 2px solid rgb(var(--color-focus));
  outline-offset: 2px;
}
.timeline-step[aria-current="step"] .timeline-step-number {
  background: rgb(var(--color-accent-heritage));
  color: white;
}
.timeline-step-number,
.timeline-annotation {
  will-change: transform, opacity;
  backface-visibility: hidden;
  transform-style: preserve-3d;
}
.timeline-step-number:not(:hover),
.timeline-annotation:not(:hover) {
  will-change: auto;
}
.use-case-section {
  padding: calc(var(--space-32) * 1.3) 0;
  background: rgb(var(--color-background));
  color: rgb(var(--color-foreground));
  transition: background-color var(--timing-fast) var(--ease-smooth);
}
.use-case-container {
  max-width: 1280px;
  margin: 0 auto;
  padding: var(--space-4) var(--space-6);
}
.use-case-header {
  text-align: center;
  margin-bottom: calc(var(--space-16) * 1.3);
}
.use-case-title {
  margin-bottom: calc(var(--space-4) * 1.3);
}
.use-case-subtitle {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.use-case-description {
  margin-bottom: calc(var(--space-6) * 1.3);
}
.use-case-icon {
  margin-bottom: calc(var(--space-4) * 1.3);
  display: flex;
  justify-content: center;
  align-items: center;
}
.use-case-item-title {
  margin-bottom: calc(var(--space-3) * 1.3);
}
.use-case-item-subtitle {
  margin-bottom: calc(var(--space-2) * 1.3);
}
.use-case-item-description {
  margin-bottom: calc(var(--space-4) * 1.3);
  flex-grow: 1;
  line-height: 1.6;
}
ul.use-case-benefits {
  list-style: none !important;
  padding: 0 !important;
  margin: calc(var(--space-4) * 1.3) auto 0 auto !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: calc(var(--space-2) * 1.3) !important;
  width: 100% !important;
  text-align: left !important;
}
li.use-case-benefit {
  display: flex !important;
  align-items: flex-start !important;
  gap: calc(var(--space-2) * 1.3);
  color: rgb(var(--color-muted-foreground));
  font-size: max(0.875rem, 14px);
  line-height: 1.5;
  width: 100%;
  text-align: left !important;
  justify-content: flex-start;
  margin: 0;
  padding: 0;
  list-style: none !important;
}
.use-case-benefit:last-child {
  margin-bottom: 0;
}
.use-case-benefit-icon {
  flex-shrink: 0;
  color: rgb(var(--color-success));
  width: 16px;
  height: 16px;
  margin-top: 0.125rem;
}
.use-case-benefit span {
  flex: 1;
  line-height: 1.5;
}
.use-case-item-card {
  background: rgb(var(--color-card));
  border: 0;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: calc(var(--space-6) * 1.3);
  transition: all var(--timing-fast) var(--ease-smooth);
  transform: translateZ(0);
  will-change: transform, box-shadow;
}
.use-case-item-card:not(:hover):not(:focus) {
  will-change: auto;
}
.use-case-item-card .card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-3) * 1.3);
}
.use-case-item-card.use-case-transparent {
  background: transparent;
  box-shadow: none;
  border: 0;
}
.use-case-item-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
  border: 0;
}
.use-case-item-card:active {
  transform: scale(0.98) translateY(-2px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.use-case-card-featured {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)), 
    0 1px 3px rgba(0, 0, 0, 0.05);
  padding-left: calc(var(--space-6) * 1.3 + var(--space-2));
  background: rgba(var(--color-accent-heritage) / 0.02);
  margin: calc(var(--space-8) * 1.3) 0;
}
.use-case-card-featured:hover {
  box-shadow: inset 4px 0 0 rgb(var(--color-accent-heritage)),
    0 8px 25px rgba(0, 0, 0, 0.12);
  background: rgba(var(--color-accent-heritage) / 0.04);
}
@media (max-width: 767px) {
  .use-case-section {
    padding: calc(var(--space-24) * 1.3) 0;
  }
  .use-case-container {
    padding: 0 var(--space-4);
  }
  .use-case-header {
    margin-bottom: calc(var(--space-12) * 1.3);
  }
  .use-case-item-card {
    padding: calc(var(--space-4) * 1.3);
  }
  .use-case-item-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  }
}
@media (max-width: 767px) {
  .use-case-item-card {
    min-height: 48px;
    display: flex;
    flex-direction: column;
  }
  li.use-case-benefit {
    min-height: 32px;
    align-items: flex-start !important;
    display: flex !important;
    text-align: left !important;
    list-style: none !important;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .use-case-item-card {
    padding: calc(var(--space-6) * 1.2);
  }
}
@media (min-width: 2560px) {
  .use-case-item-card {
    padding: calc(var(--space-8) * 1.3);
    border-radius: var(--radius-xl);
  }
  .use-case-item-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
  }
}
@media (prefers-contrast: high) {
  .use-case-item-card {
    outline: 2px solid currentColor;
    outline-offset: -2px;
  }
  .use-case-card-featured {
    outline: 2px solid rgb(var(--color-accent-heritage));
    outline-offset: -2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .use-case-item-card {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
  .use-case-item-card:hover,
  .use-case-item-card:active {
    transform: none !important;
  }
}
.use-case-item-card:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--color-focus) / 0.5), 
    0 1px 3px rgba(0, 0, 0, 0.05);
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
:root {
  --color-primary: 71 85 105;
  --color-primary-foreground: 255 255 255;
  --color-primary-50: 248 250 252;
  --color-primary-100: 241 245 249;
  --color-primary-200: 226 232 240;
  --color-primary-300: 203 213 225;
  --color-primary-400: 148 163 184;
  --color-primary-500: 100 116 139;
  --color-primary-600: 71 85 105;
  --color-primary-700: 51 65 85;
  --color-primary-800: 30 41 59;
  --color-primary-900: 15 23 42;
  --color-primary-950: 2 6 23;
  --color-accent-heritage: 205 92 92;
  --color-accent-heritage-foreground: 255 255 255;
  --color-accent-heritage-50: 254 242 242;
  --color-accent-heritage-100: 254 229 229;
  --color-accent-heritage-200: 254 202 202;
  --color-accent-heritage-300: 252 165 165;
  --color-accent-heritage-400: 248 113 113;
  --color-accent-heritage-500: 239 68 68;
  --color-accent-heritage-600: 220 38 38;
  --color-accent-heritage-700: 185 28 28;
  --color-accent-heritage-800: 153 27 27;
  --color-accent-heritage-900: 127 29 29;
  --red-primary-usage: 10%;
  --red-accent-usage: 5%;
  --red-subtle-usage: 2%;
  --space-heritage-xs: 0.75rem;
  --space-heritage-sm: 1.5rem;
  --space-heritage-md: 2.5rem;
  --space-heritage-lg: 4rem;
  --space-heritage-xl: 6rem;
  --btn-heritage-padding-x: 1.5rem;
  --btn-heritage-margin: 1.5rem;
  --text-heritage-spacing: 1.25rem;
  --card-heritage-margin: 2rem;
  --color-secondary: 30 58 138;
  --color-secondary-foreground: 255 255 255;
  --color-secondary-50: 239 246 255;
  --color-secondary-100: 219 234 254;
  --color-secondary-200: 191 219 254;
  --color-secondary-300: 147 197 253;
  --color-secondary-400: 96 165 250;
  --color-secondary-500: 59 130 246;
  --color-secondary-600: 37 99 235;
  --color-secondary-700: 29 78 216;
  --color-secondary-800: 30 64 175;
  --color-secondary-900: 30 58 138;
  --color-success: 16 185 129;
  --color-success-foreground: 255 255 255;
  --color-warning: 245 158 11;
  --color-warning-foreground: 0 0 0;
  --color-error: 185 28 28;
  --color-error-foreground: 255 255 255;
  --color-info: 59 130 246;
  --color-info-foreground: 255 255 255;
  --color-background: 255 255 255;
  --color-foreground: 15 23 42;
  --color-muted: 241 245 249;
  --color-muted-foreground: 100 116 139;
  --color-border: 226 232 240;
  --color-ring: 71 85 105;
  --font-family-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-display: 'Space Grotesk', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
  --font-size-xs: 0.75rem;
  --font-size-sm: 0.875rem;
  --font-size-base: 1rem;
  --font-size-lg: 1.125rem;
  --font-size-xl: 1.25rem;
  --font-size-2xl: 1.5rem;
  --font-size-3xl: 1.875rem;
  --font-size-4xl: 2.25rem;
  --font-size-5xl: 3rem;
  --font-size-6xl: 3.75rem;
  --font-size-7xl: 4.5rem;
  --font-size-8xl: 6rem;
  --font-size-9xl: 8rem;
  --text-hero: clamp(3rem, 8vw, 7rem);
  --text-display: clamp(2.5rem, 6vw, 5rem);
  --text-headline: clamp(2rem, 4vw, 3.5rem);
  --font-size-base-mobile: clamp(0.875rem, 2vw + 0.5rem, 1.125rem);
  --font-size-hero-mobile: clamp(2rem, 5vw + 1rem, 4.5rem);
  --font-size-h1-mobile: clamp(1.75rem, 4vw + 0.5rem, 3rem);
  --font-size-h2-mobile: clamp(1.5rem, 3vw + 0.5rem, 2.25rem);
  --font-size-h3-mobile: clamp(1.25rem, 2vw + 0.5rem, 1.75rem);
  --font-size-small-min: max(0.875rem, 14px);
  --font-size-tiny-min: max(0.75rem, 12px);
  --font-weight-extralight: 200;
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;
  --font-weight-hero-mobile: 300;
  --font-weight-heading-mobile: 500;
  --font-weight-body-mobile: 400;
  --font-weight-bold-mobile: 600;
  --font-weight-heritage-mobile: 700;
  --font-weight-hero-desktop: 200;
  --font-weight-heading-desktop: 300;
  --font-weight-body-desktop: 400;
  --font-weight-bold-desktop: 500;
  --font-weight-heritage-desktop: 600;
  --line-height-none: 1;
  --line-height-tight: 1.2;
  --line-height-snug: 1.4;
  --line-height-normal: 1.6;
  --line-height-relaxed: 1.8;
  --line-height-loose: 2;
  --line-height-tight-mobile: 1.3;
  --line-height-base-mobile: 1.6;
  --line-height-loose-mobile: 1.8;
  --letter-spacing-tighter: -0.05em;
  --letter-spacing-tight: -0.025em;
  --letter-spacing-normal: 0;
  --letter-spacing-wide: 0.025em;
  --letter-spacing-wider: 0.05em;
  --letter-spacing-widest: 0.1em;
  --space-0: 0;
  --space-px: 1px;
  --space-0-5: 0.125rem;
  --space-1: 0.25rem;
  --space-1-5: 0.375rem;
  --space-2: 0.5rem;
  --space-2-5: 0.625rem;
  --space-3: 0.75rem;
  --space-3-5: 0.875rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-7: 1.75rem;
  --space-8: 2rem;
  --space-9: 2.25rem;
  --space-10: 2.5rem;
  --space-11: 2.75rem;
  --space-12: 3rem;
  --space-14: 3.5rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-28: 7rem;
  --space-32: 8rem;
  --space-36: 9rem;
  --space-40: 10rem;
  --space-44: 11rem;
  --space-48: 12rem;
  --space-52: 13rem;
  --space-56: 14rem;
  --space-60: 15rem;
  --space-64: 16rem;
  --space-72: 18rem;
  --space-80: 20rem;
  --space-96: 24rem;
  --space-screen: 100vh;
  --section-padding: clamp(5rem, 10vw, 10rem);
  --container-padding: clamp(2rem, 5vw, 5rem);
  --space-unit: clamp(0.25rem, 1vw, 0.5rem);
  --space-1-mobile: calc(var(--space-unit) * 1);
  --space-2-mobile: calc(var(--space-unit) * 2);
  --space-3-mobile: calc(var(--space-unit) * 3);
  --space-4-mobile: calc(var(--space-unit) * 4);
  --space-6-mobile: calc(var(--space-unit) * 6);
  --space-8-mobile: calc(var(--space-unit) * 8);
  --space-12-mobile: calc(var(--space-unit) * 12);
  --space-16-mobile: calc(var(--space-unit) * 16);
  --space-touch-min: max(var(--space-2), 8px);
  --space-section-mobile: max(var(--space-16), 64px);
  --radius-none: 0;
  --radius-sm: 2px;
  --radius: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-2xl: 16px;
  --radius-3xl: 24px;
  --radius-full: 9999px;
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.03);
  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.06);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.08);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.15);
  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --shadow-none: 0 0 #0000;
  --shadow-heritage: 0 10px 30px -10px rgb(var(--color-accent-heritage) / 0.2);
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.05);
  --shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-card-active: 0 1px 2px rgba(0, 0, 0, 0.04);
  --z-hidden: -1;
  --z-base: 0;
  --z-raised: 1;
  --z-dropdown: 10;
  --z-sticky: 100;
  --z-drawer: 200;
  --z-modal: 300;
  --z-popover: 400;
  --z-toast: 500;
  --z-alert: 600;
  --z-loader: 700;
  --z-debug: 999;
  --duration-instant: 50ms;
  --duration-fast: 150ms;
  --duration-normal: 250ms;
  --duration-slow: 400ms;
  --duration-slower: 600ms;
  --duration-instant-desktop: 100ms;
  --duration-fast-desktop: 200ms;
  --duration-normal-desktop: 300ms;
  --duration-slow-desktop: 600ms;
  --duration-slower-desktop: 800ms;
  --timing-instant: var(--duration-instant);
  --timing-fast: var(--duration-fast);
  --timing-normal: var(--duration-normal);
  --timing-slow: var(--duration-slow);
  --timing-smooth: var(--duration-slower);
  --timing-expo: 800ms;
  --easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --easing-expo: cubic-bezier(0.87, 0, 0.13, 1);
  --easing-back: cubic-bezier(0.34, 1.56, 0.64, 1);
  --easing-in: cubic-bezier(0.4, 0, 1, 1);
  --easing-out: cubic-bezier(0, 0, 0.2, 1);
  --easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --transform-lift: translateY(-2px);
  --transform-drop: translateY(2px);
  --transform-scale-up: scale(1.02);
  --transform-scale-down: scale(0.98);
  --scroll-reveal-distance: 20px;
  --scroll-reveal-duration: 600ms;
  --scroll-stagger-delay: 75ms;
  --scroll-stagger-max: 375ms;
  --scroll-threshold: 0.2;
  --duration-scroll: 600ms;
  --duration-scroll-section: 800ms;
  --stagger-delay: 100ms;
  --pwa-stagger-delay: 100ms;
  --scroll-distance: 30px;
  --scroll-distance-section: 50px;
  --pwa-duration-fast: var(--timing-fast);
  --pwa-duration-normal: var(--timing-normal);
  --pwa-duration-slow: 600ms;
  --pwa-easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --pwa-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
  --container-max-width: 1440px;
  --container-padding: var(--space-4);
  --border-width: 1px;
  --border-width-2: 2px;
  --border-width-4: 4px;
  --border-width-8: 8px;
  --focus-ring-width: 2px;
  --focus-ring-offset: 2px;
  --focus-ring-color: rgb(var(--color-primary));
  --touch-target-min: 48px;
  --touch-target-comfortable: 56px;
  --touch-target-large: 64px;
  --touch-spacing-min: 8px;
  --touch-spacing-comfortable: 16px;
  --thumb-reach-easy: 60%;
  --thumb-reach-hard: 40%;
  --safe-area-bottom: env(safe-area-inset-bottom);
  --breakpoint-mobile-portrait: 320px;
  --breakpoint-mobile-landscape: 568px;
  --breakpoint-tablet-portrait: 768px;
  --breakpoint-tablet-landscape: 1024px;
  --breakpoint-desktop: 1280px;
  --breakpoint-desktop-wide: 1536px;
  --breakpoint-desktop-ultra: 1920px;
  --breakpoint-nav-collapse: 896px;
  --breakpoint-grid-switch: 640px;
  --breakpoint-table-scroll: 768px;
  --breakpoint-xs: 475px;
  --breakpoint-sm: 640px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 1024px;
  --breakpoint-xl: 1280px;
  --breakpoint-2xl: 1536px;
}
:root.dark {
  --color-background: 13 17 23;
  --color-foreground: 248 250 252;
  --color-primary: 100 116 139;
  --color-primary-foreground: 248 250 252;
  --color-primary-50: 15 23 42;
  --color-primary-100: 30 41 59;
  --color-primary-200: 51 65 85;
  --color-primary-300: 71 85 105;
  --color-primary-400: 100 116 139;
  --color-primary-500: 148 163 184;
  --color-primary-600: 203 213 225;
  --color-primary-700: 226 232 240;
  --color-primary-800: 241 245 249;
  --color-primary-900: 248 250 252;
  --color-primary-950: 255 255 255;
  --color-accent-heritage: 239 68 68;
  --color-accent-heritage-foreground: 255 255 255;
  --color-accent-heritage-50: 127 29 29;
  --color-accent-heritage-100: 153 27 27;
  --color-accent-heritage-200: 185 28 28;
  --color-accent-heritage-300: 220 38 38;
  --color-accent-heritage-400: 248 113 113;
  --color-accent-heritage-500: 252 165 165;
  --color-accent-heritage-600: 254 202 202;
  --color-accent-heritage-700: 254 226 226;
  --color-accent-heritage-800: 254 242 242;
  --color-accent-heritage-900: 255 245 245;
  --color-secondary: 59 130 246;
  --color-secondary-foreground: 255 255 255;
  --color-secondary-50: 30 58 138;
  --color-secondary-100: 29 78 216;
  --color-secondary-200: 37 99 235;
  --color-secondary-300: 59 130 246;
  --color-secondary-400: 96 165 250;
  --color-secondary-500: 147 197 253;
  --color-secondary-600: 191 219 254;
  --color-secondary-700: 219 234 254;
  --color-secondary-800: 239 246 255;
  --color-secondary-900: 239 246 255;
  --color-success: 16 185 129;
  --color-success-foreground: 255 255 255;
  --color-warning: 245 158 11;
  --color-warning-foreground: 0 0 0;
  --color-error: 239 68 68;
  --color-error-foreground: 255 255 255;
  --color-info: 59 130 246;
  --color-info-foreground: 255 255 255;
  --color-muted: 30 41 59;
  --color-muted-foreground: 148 163 184;
  --color-border: 51 65 85;
  --color-ring: 100 116 139;
  --surface-default: var(--color-background);
  --surface-muted: var(--color-muted);
  --surface-dark: 15 23 42;
  --surface-brand: var(--color-primary);
  --surface-accent: var(--color-accent-heritage);
  --surface-gradient-subtle: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%, 
    rgb(var(--color-muted)) 100%);
  --surface-gradient-radial: radial-gradient(circle at 50% 50%, 
    rgb(var(--color-muted)) 0%, 
    rgb(var(--color-background)) 100%);
  --surface-gradient-hero: linear-gradient(135deg, 
    rgb(var(--color-background)) 0%, 
    rgb(var(--color-muted)) 50%, 
    rgb(var(--color-background)) 100%);
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.15);
  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.25);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.3);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.6);
  --shadow-heritage: 0 10px 30px -10px rgb(239 68 68 / 0.3);
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.15);
  --shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.25);
  --shadow-card-active: 0 1px 2px rgba(0, 0, 0, 0.1);
  --icon-default: var(--color-foreground);
  --icon-primary: var(--color-primary);
  --icon-heritage: var(--color-accent-heritage);
  --icon-success: var(--color-success);
  --icon-warning: var(--color-warning);
  --icon-white: var(--color-background);
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
* {
  margin: 0;
}
html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  height: 100%;
}
body {
  font-family: var(--font-family-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-normal);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-foreground));
  background-color: rgb(var(--color-background));
  min-height: 100%;
}
input,
button,
textarea,
select {
  font: inherit;
}
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}
input,
button,
textarea,
select {
  font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
  -webkit-hyphens: auto;
          hyphens: auto;
}
#root,
#__next {
  isolation: isolate;
}
.title-hero {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-extralight);
  font-size: var(--text-hero);
  line-height: var(--line-height-none);
  letter-spacing: var(--letter-spacing-tighter);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-8);
}
.title-display {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-light);
  font-size: var(--text-display);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-tight);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-6);
}
.title-section {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-bold);
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: var(--line-height-tight);
  letter-spacing: -0.02em;
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-4);
}
.title-card {
  font-family: var(--font-family-display);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-xl);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-3);
}
.subtitle-lg {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: clamp(1.25rem, 3vw, 2rem);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.subtitle {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-lg);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-3);
}
.description-lg {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-normal);
  font-size: clamp(1.125rem, 2vw, 1.5rem);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.description {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-normal);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: rgb(var(--color-muted-foreground));
  margin-bottom: var(--space-4);
}
.label-text {
  font-family: var(--font-family-sans);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-base);
  line-height: var(--line-height-snug);
  color: rgb(var(--color-foreground));
  letter-spacing: -0.01em;
}
.text-sm {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-snug);
}
.text-heritage {
  color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  font-size: max(1rem, var(--font-size-base));
}
.text-mono {
  font-family: var(--font-family-mono);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-normal);
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-2) var(--space-4);
  font-weight: var(--font-weight-medium);
  font-size: var(--font-size-base);
  line-height: var(--line-height-snug);
  border-radius: var(--radius-md);
  border: var(--border-width) solid transparent;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  transition: all var(--timing-fast) var(--easing-standard);
  min-height: var(--touch-target-min);
  position: relative;
}
.btn-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: rgb(var(--color-accent-heritage-foreground));
  border-color: rgb(var(--color-accent-heritage));
  font-weight: var(--font-weight-semibold);
  padding: var(--space-3) var(--btn-heritage-padding-x);
  box-shadow: var(--shadow-heritage);
  animation: heritage-pulse 3s ease-in-out infinite;
  animation-delay: 2s;
}
.btn-heritage:hover {
  background-color: rgb(var(--color-accent-heritage-600));
  border-color: rgb(var(--color-accent-heritage-600));
  transform: var(--transform-lift);
  box-shadow: var(--shadow-heritage), var(--shadow-lg);
}
.btn-heritage:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-accent-heritage));
  outline-offset: var(--focus-ring-offset);
}
.btn-heritage:active {
  transform: var(--transform-scale-down);
}
.btn-primary {
  background-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary-foreground));
  border-color: rgb(var(--color-primary));
}
.btn-primary:hover {
  background-color: rgb(var(--color-primary-700));
  border-color: rgb(var(--color-primary-700));
  transform: var(--transform-lift);
}
.btn-primary:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-primary));
  outline-offset: var(--focus-ring-offset);
}
.btn-primary:active {
  transform: var(--transform-scale-down);
}
.btn-secondary {
  background-color: rgb(var(--color-secondary));
  color: rgb(var(--color-secondary-foreground));
  border-color: rgb(var(--color-secondary));
}
.btn-secondary:hover {
  background-color: rgb(var(--color-secondary-800));
  border-color: rgb(var(--color-secondary-800));
  transform: var(--transform-lift);
}
.btn-secondary:focus-visible {
  outline: var(--focus-ring-width) solid rgb(var(--color-secondary));
  outline-offset: var(--focus-ring-offset);
}
.btn-secondary:active {
  transform: var(--transform-scale-down);
}
.btn-outline {
  background-color: transparent;
  color: rgb(var(--color-primary));
  border-color: rgb(var(--color-border));
}
.btn-outline:hover {
  background-color: rgb(var(--color-primary));
  color: rgb(var(--color-primary-foreground));
  border-color: rgb(var(--color-primary));
}
.btn-ghost {
  background-color: transparent;
  color: rgb(var(--color-primary));
  border-color: transparent;
}
.btn-ghost:hover {
  background-color: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.btn-sm {
  padding: var(--space-1-5) var(--space-3);
  font-size: var(--font-size-sm);
  min-height: var(--space-8);
}
.btn-lg {
  padding: var(--space-3) var(--space-6);
  font-size: var(--font-size-lg);
  min-height: var(--space-14);
}
.btn-xl {
  padding: var(--space-4) var(--space-8);
  font-size: var(--font-size-xl);
  min-height: var(--space-16);
}
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}
.layout-section-sm {
  padding: 2.5rem 0;
}
.layout-section {
  padding: 3.75rem 0;
}
.layout-section-lg {
  padding: 5rem 0;
}
.layout-section-xl {
  padding: 6rem 0;
}
@media (min-width: 768px) and (max-width: 1279px) {
  .layout-section-sm {
    padding: 3.2rem 0;
  }
  .layout-section {
    padding: 4.8rem 0;
  }
  .layout-section-lg {
    padding: 6.4rem 0;
  }
  .layout-section-xl {
    padding: 8rem 0;
  }
}
@media (min-width: 1280px) {
  .layout-section-sm {
    padding: 4rem 0;
  }
  .layout-section {
    padding: 6rem 0;
  }
  .layout-section-lg {
    padding: 8rem 0;
  }
  .layout-section-xl {
    padding: 10rem 0;
  }
}
.layout-hero {
  padding: var(--space-12) var(--space-4);
  min-height: 100vh;
  display: flex;
  align-items: center;
}
@media (min-width: 768px) {
  .layout-hero {
    padding: var(--space-16) var(--space-6);
    min-height: 85vh;
  }
}
@media (min-width: 1280px) {
  .layout-hero {
    padding: var(--space-32) var(--space-8);
    min-height: 90vh;
  }
}
.layout-container {
  width: 100%;
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--space-4);
}
@media (min-width: 640px) {
  .layout-container {
    padding: 0 var(--space-6);
  }
}
@media (min-width: 1024px) {
  .layout-container {
    padding: 0 var(--space-8);
  }
}
@media (min-width: 1280px) {
  .layout-container {
    padding: 0 var(--space-12);
  }
}
.layout-center {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}
.layout-left {
  text-align: left;
}
.layout-right {
  text-align: right;
}
.layout-gap-xs {
  gap: var(--space-2);
}
.layout-gap-sm {
  gap: var(--space-4);
}
.layout-gap-md {
  gap: var(--space-8);
}
.layout-gap-lg {
  gap: var(--space-16);
}
.layout-gap-xl {
  gap: var(--space-24);
}
.layout-stack {
  display: flex;
  flex-direction: column;
}
.layout-stack-sm {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.layout-stack-md {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.layout-stack-lg {
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}
.layout-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
}
.layout-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
}
.layout-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-6);
}
@media (max-width: 767px) {
  .layout-grid-2,
  .layout-grid-3,
  .layout-grid-4 {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .layout-grid-3,
  .layout-grid-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.surface-default {
  background-color: rgb(var(--surface-default));
  color: rgb(var(--color-foreground));
}
.surface-muted {
  background-color: rgb(var(--surface-muted));
  color: rgb(var(--color-foreground));
}
.surface-dark {
  background-color: rgb(var(--surface-dark));
  color: rgb(var(--color-foreground));
}
.grid {
  display: grid;
  gap: var(--space-4);
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.grid-cols-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.grid-cols-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.grid-cols-12 {
  grid-template-columns: repeat(12, minmax(0, 1fr));
}
@media (min-width: 640px) {
  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .sm\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .md\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .md\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .md\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  .lg\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .lg\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .lg\:grid-cols-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  .lg\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}
.gap-0 {
  gap: 0;
}
.gap-2 {
  gap: var(--space-2);
}
.gap-4 {
  gap: var(--space-4);
}
.gap-6 {
  gap: var(--space-6);
}
.gap-8 {
  gap: var(--space-8);
}
.gap-12 {
  gap: var(--space-12);
}
.gap-16 {
  gap: var(--space-16);
}
.card {
  background-color: rgb(var(--color-background));
  border-radius: var(--radius-md);
  padding: var(--space-6);
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: all var(--timing-fast) var(--easing-standard);
}
.card-bordered {
  border: var(--border-width) solid rgb(var(--color-border));
}
.card-elevated {
  box-shadow: var(--shadow-md);
}
.card-elevated:hover {
  box-shadow: var(--shadow-lg);
  transform: var(--transform-lift);
}
.card-heritage {
  border-left: 4px solid rgb(var(--color-accent-heritage));
  padding-left: calc(var(--space-6) + var(--space-2));
  margin: var(--card-heritage-margin) 0;
}
.card-header {
  margin-bottom: var(--space-4);
}
.card-body {
  flex: 1;
}
.card-footer {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: var(--border-width) solid rgb(var(--color-border));
}
.card-actions {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-4);
}
.card-actions-end {
  justify-content: flex-end;
}
.card-actions-center {
  justify-content: center;
}
.badge {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1;
  border-radius: var(--radius-sm);
  transition: all 200ms ease;
  white-space: nowrap;
}
.badge:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.badge-primary {
  background: rgb(var(--color-primary-100));
  color: rgb(var(--color-primary-700));
}
.badge-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  margin: 0 0.25rem;
}
.badge-secondary {
  background: rgb(var(--color-secondary-100));
  color: rgb(var(--color-secondary-900));
}
.badge-success {
  background: rgb(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.badge-warning {
  background: rgb(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.badge-error {
  background: rgb(var(--color-error) / 0.1);
  color: rgb(var(--color-error));
}
.badge-sm {
  padding: 0.125rem 0.5rem;
  font-size: 0.625rem;
}
.badge-lg {
  padding: 0.375rem 1rem;
  font-size: 0.875rem;
}
.card-actions .badge {
  margin: 0 0.125rem;
}
.navbar {
  height: 4rem;
  padding: 0 var(--space-6);
  background: rgb(var(--color-background));
  border-bottom: 1px solid rgb(var(--color-border));
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: var(--z-sticky);
}
.navbar-brand {
  font-weight: 600;
  font-size: 1.25rem;
  color: rgb(var(--color-foreground));
  position: relative;
  padding-right: 1rem;
}
.navbar-brand::after {
  content: '';
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-left: 0.5rem;
  background: rgb(var(--color-accent-heritage));
  border-radius: 50%;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.nav-item {
  position: relative;
  padding: 0.5rem 1rem;
  font-size: 1rem;
  font-weight: 500;
  color: rgb(var(--color-foreground));
  transition: color 200ms ease;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}
.nav-item:hover {
  color: rgb(var(--color-primary-700));
}
.nav-item.active {
  color: rgb(var(--color-primary-900));
}
.nav-item.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 1rem;
  right: 1rem;
  height: 2px;
  background: rgb(var(--color-accent-heritage));
}
@media (max-width: 767px) {
  .navbar {
    padding: 0 var(--space-4);
  }
  .nav-item.active::after {
    background: rgb(var(--color-primary));
    height: 3px;
  }
  .nav-item {
    min-height: var(--touch-target-min);
    padding: 0.75rem 1rem;
  }
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.inline-grid {
  display: inline-grid;
}
.hidden {
  display: none;
}
.flex-row {
  flex-direction: row;
}
.flex-row-reverse {
  flex-direction: row-reverse;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.flex-nowrap {
  flex-wrap: nowrap;
}
.flex-1 {
  flex: 1 1 0%;
}
.flex-auto {
  flex: 1 1 auto;
}
.flex-initial {
  flex: 0 1 auto;
}
.flex-none {
  flex: none;
}
.flex-grow {
  flex-grow: 1;
}
.flex-grow-0 {
  flex-grow: 0;
}
.flex-shrink {
  flex-shrink: 1;
}
.flex-shrink-0 {
  flex-shrink: 0;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.items-baseline {
  align-items: baseline;
}
.items-stretch {
  align-items: stretch;
}
.justify-start {
  justify-content: flex-start;
}
.justify-end {
  justify-content: flex-end;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-around {
  justify-content: space-around;
}
.justify-evenly {
  justify-content: space-evenly;
}
.m-auto {
  margin: auto;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-auto {
  margin-top: auto;
  margin-bottom: auto;
}
.mt-auto {
  margin-top: auto;
}
.mr-auto {
  margin-right: auto;
}
.mb-auto {
  margin-bottom: auto;
}
.ml-auto {
  margin-left: auto;
}
.w-full {
  width: 100%;
}
.w-screen {
  width: 100vw;
}
.w-min {
  width: -moz-min-content;
  width: min-content;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
.h-full {
  height: 100%;
}
.h-screen {
  height: 100vh;
}
.h-min {
  height: -moz-min-content;
  height: min-content;
}
.h-max {
  height: -moz-max-content;
  height: max-content;
}
.h-fit {
  height: -moz-fit-content;
  height: fit-content;
}
.max-w-none {
  max-width: none;
}
.max-w-xs {
  max-width: 20rem;
}
.max-w-sm {
  max-width: 24rem;
}
.max-w-md {
  max-width: 28rem;
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-xl {
  max-width: 36rem;
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-3xl {
  max-width: 48rem;
}
.max-w-4xl {
  max-width: 56rem;
}
.max-w-5xl {
  max-width: 64rem;
}
.max-w-6xl {
  max-width: 72rem;
}
.max-w-7xl {
  max-width: 80rem;
}
.max-w-full {
  max-width: 100%;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.text-justify {
  text-align: justify;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.capitalize {
  text-transform: capitalize;
}
.normal-case {
  text-transform: none;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.text-primary {
  color: rgb(var(--color-primary));
}
.text-secondary {
  color: rgb(var(--color-secondary));
}
.text-heritage {
  color: rgb(var(--color-accent-heritage));
}
.text-muted {
  color: rgb(var(--color-muted-foreground));
}
.text-success {
  color: rgb(var(--color-success));
}
.text-warning {
  color: rgb(var(--color-warning));
}
.text-error {
  color: rgb(var(--color-error));
}
.bg-primary {
  background-color: rgb(var(--color-primary));
}
.bg-secondary {
  background-color: rgb(var(--color-secondary));
}
.bg-heritage {
  background-color: rgb(var(--color-accent-heritage));
}
.bg-muted {
  background-color: rgb(var(--color-muted));
}
.bg-success {
  background-color: rgb(var(--color-success));
}
.bg-warning {
  background-color: rgb(var(--color-warning));
}
.bg-error {
  background-color: rgb(var(--color-error));
}
.border {
  border-width: var(--border-width);
}
.border-0 {
  border-width: 0;
}
.border-2 {
  border-width: 2px;
}
.border-4 {
  border-width: 4px;
}
.border-8 {
  border-width: 8px;
}
.border-solid {
  border-style: solid;
}
.border-dashed {
  border-style: dashed;
}
.border-dotted {
  border-style: dotted;
}
.border-none {
  border-style: none;
}
.rounded-none {
  border-radius: 0;
}
.rounded-sm {
  border-radius: var(--radius-sm);
}
.rounded {
  border-radius: var(--radius);
}
.rounded-md {
  border-radius: var(--radius-md);
}
.rounded-lg {
  border-radius: var(--radius-lg);
}
.rounded-full {
  border-radius: var(--radius-full);
}
.shadow-sm {
  box-shadow: var(--shadow-sm);
}
.shadow {
  box-shadow: var(--shadow);
}
.shadow-md {
  box-shadow: var(--shadow-md);
}
.shadow-lg {
  box-shadow: var(--shadow-lg);
}
.shadow-xl {
  box-shadow: var(--shadow-xl);
}
.shadow-2xl {
  box-shadow: var(--shadow-2xl);
}
.shadow-none {
  box-shadow: var(--shadow-none);
}
.shadow-heritage {
  box-shadow: var(--shadow-heritage);
}
.opacity-0 {
  opacity: 0;
}
.opacity-25 {
  opacity: 0.25;
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-75 {
  opacity: 0.75;
}
.opacity-100 {
  opacity: 1;
}
.cursor-pointer {
  cursor: pointer;
}
.cursor-default {
  cursor: default;
}
.cursor-not-allowed {
  cursor: not-allowed;
}
.cursor-wait {
  cursor: wait;
}
.cursor-move {
  cursor: move;
}
.icon-xxs {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 1rem;
  margin-bottom: 0;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xxs > * {
  width: 0.75rem;
  height: 0.75rem;
}
.icon-xs {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xs > * {
  width: 1rem;
  height: 1rem;
}
.icon-sm {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-sm > * {
  width: 1.25rem;
  height: 1.25rem;
}
.icon-base {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-base > * {
  width: 1.5rem;
  height: 1.5rem;
}
.icon-md {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-md > * {
  width: 1.75rem;
  height: 1.75rem;
}
.icon-lg {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-lg > * {
  width: 2rem;
  height: 2rem;
}
.icon-xl {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 5rem;
  height: 5rem;
  border-radius: var(--radius-lg);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
  flex-shrink: 0;
}
.icon-xl > * {
  width: 2.5rem;
  height: 2.5rem;
}
.icon-default {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
.icon-primary {
  background: rgb(var(--color-primary) / 0.1);
  color: rgb(var(--color-primary));
}
.icon-heritage {
  background: rgb(var(--color-accent-heritage) / 0.1);
  color: rgb(var(--color-accent-heritage));
  margin-bottom: 2rem;
  box-shadow: 0 4px 12px rgb(var(--color-accent-heritage) / 0.1);
}
.icon-success {
  background: rgb(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.icon-warning {
  background: rgb(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.icon-muted {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-muted-foreground));
}
.icon-outline {
  background: transparent;
  border: 1px solid rgb(var(--color-border));
  color: rgb(var(--color-foreground));
}
.icon-white {
  background: white;
  color: rgb(var(--color-foreground));
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.1);
}
.icon-bg {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-lg);
  padding: var(--space-3);
  margin-bottom: 1.5rem;
  transition: var(--timing-fast) var(--easing-smooth);
}
.icon-bg-primary {
  background: rgb(var(--color-primary));
  color: white;
}
.icon-bg-heritage {
  background: rgb(var(--color-accent-heritage));
  color: white;
  padding: var(--space-4);
  margin-bottom: 2rem;
  box-shadow: 0 4px 12px rgba(var(--color-accent-heritage) / 0.2);
}
.icon-bg-muted {
  background: rgb(var(--color-muted));
  color: rgb(var(--color-foreground));
}
.icon-bg-success {
  background: rgb(var(--color-success));
  color: white;
}
.icon-bg-warning {
  background: rgb(var(--color-warning));
  color: white;
}
.icon-bg-outline {
  background: transparent;
  border: 1px solid rgb(var(--color-border));
  color: rgb(var(--color-foreground));
}
.icon-interactive {
  transition: transform 200ms var(--ease-smooth);
  cursor: pointer;
}
.icon-interactive:hover {
  transform: scale(1.1);
}
.icon-spin {
  animation: icon-spin 2s linear infinite;
}
@keyframes icon-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.icon-pulse {
  animation: icon-pulse 2s ease-in-out infinite;
}
@keyframes icon-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.6;
  }
}
@keyframes heritage-pulse {
  0%, 100% {
    box-shadow: var(--shadow-heritage);
  }
  50% {
    box-shadow: var(--shadow-heritage), 0 0 20px rgb(var(--color-accent-heritage) / 0.3);
  }
}
@media (max-width: 767px) {
  .icon-xxs {
    width: 1rem;
    height: 1rem;
  }
  .icon-xs {
    width: 1.5rem;
    height: 1.5rem;
  }
  .icon-sm {
    width: 2rem;
    height: 2rem;
  }
  .icon-base {
    width: 2.5rem;
    height: 2.5rem;
  }
  .icon-md {
    width: 3rem;
    height: 3rem;
  }
  .icon-lg {
    width: 3.5rem;
    height: 3.5rem;
  }
  .icon-xl {
    width: 4rem;
    height: 4rem;
  }
  .icon-xxs > * {
    width: 0.625rem;
    height: 0.625rem;
  }
  .icon-xs > * {
    width: 0.75rem;
    height: 0.75rem;
  }
  .icon-sm > * {
    width: 1rem;
    height: 1rem;
  }
  .icon-base > * {
    width: 1.25rem;
    height: 1.25rem;
    stroke-width: 2.5;
  }
  .icon-md > * {
    width: 1.5rem;
    height: 1.5rem;
  }
  .icon-lg > * {
    width: 1.75rem;
    height: 1.75rem;
  }
  .icon-xl > * {
    width: 2rem;
    height: 2rem;
  }
  .icon-primary {
    background: rgb(var(--color-primary) / 0.15);
  }
  .icon-success {
    background: rgb(var(--color-success) / 0.15);
  }
  .icon-warning {
    background: rgb(var(--color-warning) / 0.15);
  }
  .icon-heritage {
    margin-bottom: 1.75rem;
  }
  .icon-touch {
    width: 3rem;
    height: 3rem;
    position: relative;
  }
  .icon-touch::before {
    content: '';
    position: absolute;
    inset: -12px;
    z-index: 1;
  }
}
@media (min-width: 1280px) {
  .icon-xxs:hover,
  .icon-xs:hover,
  .icon-sm:hover,
  .icon-base:hover,
  .icon-md:hover,
  .icon-lg:hover,
  .icon-xl:hover {
    transform: translateY(-1px);
  }
  .icon-heritage:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgb(var(--color-accent-heritage) / 0.25);
  }
  .icon-bg:hover {
    transform: translateY(-1px);
  }
  .icon-bg-heritage:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(var(--color-accent-heritage) / 0.3);
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.focus-visible:focus-visible {
  outline: 2px solid rgb(var(--color-primary));
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .icon-xxs,
  .icon-xs,
  .icon-sm,
  .icon-base,
  .icon-md,
  .icon-lg,
  .icon-xl,
  .icon-bg {
    transition: none;
  }
  .icon-xxs:hover,
  .icon-xs:hover,
  .icon-sm:hover,
  .icon-base:hover,
  .icon-md:hover,
  .icon-lg:hover,
  .icon-xl:hover,
  .icon-heritage:hover,
  .icon-bg:hover,
  .icon-bg-heritage:hover {
    transform: none;
  }
}
@media (prefers-contrast: high) {
  .icon-primary,
  .icon-heritage,
  .icon-success,
  .icon-warning {
    background: rgb(var(--color-background));
    border: 2px solid currentColor;
  }
  .icon-muted {
    border: 2px solid rgb(var(--color-muted-foreground));
  }
  .icon-outline {
    border-width: 2px;
  }
  .icon-bg-primary,
  .icon-bg-heritage,
  .icon-bg-success,
  .icon-bg-warning {
    border: 2px solid currentColor;
  }
}
.pwa-scroll-container {
  scroll-snap-type: y mandatory;
  overscroll-behavior: contain;
  will-change: scroll-position;
  contain: layout style paint;
}
.pwa-scroll-section {
  scroll-snap-align: start;
  scroll-snap-stop: normal;
  will-change: transform, opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}
.pwa-scroll-fade {
  opacity: 0;
  transform: translateY(20px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-fade.active {
  opacity: 1;
  transform: translateY(0) translateZ(0);
}
.pwa-scroll-slide-left {
  opacity: 0;
  transform: translateX(-30px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-slide-left.active {
  opacity: 1;
  transform: translateX(0) translateZ(0);
}
.pwa-scroll-slide-right {
  opacity: 0;
  transform: translateX(30px) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-fast) var(--easing-smooth),
              transform var(--timing-fast) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-slide-right.active {
  opacity: 1;
  transform: translateX(0) translateZ(0);
}
.pwa-scroll-scale {
  opacity: 0;
  transform: scale(0.9) translateZ(0);
  will-change: transform, opacity;
  transition: opacity var(--timing-normal) var(--easing-smooth),
              transform var(--timing-normal) var(--easing-smooth);
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  backface-visibility: hidden;
  contain: layout style;
}
.pwa-scroll-scale.active {
  opacity: 1;
  transform: scale(1) translateZ(0);
}
.pwa-scroll-stagger {
  transition-delay: calc(var(--stagger-index, 0) * var(--pwa-stagger-delay, 100ms));
  contain: layout;
}
.pwa-scroll-fade.active,
.pwa-scroll-slide-left.active,
.pwa-scroll-slide-right.active,
.pwa-scroll-scale.active {
  will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
  .pwa-scroll-fade,
  .pwa-scroll-slide-left,
  .pwa-scroll-slide-right,
  .pwa-scroll-scale {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
  .pwa-scroll-fade.active,
  .pwa-scroll-slide-left.active,
  .pwa-scroll-slide-right.active,
  .pwa-scroll-scale.active {
    opacity: 1;
    transform: none;
  }
  .pwa-scroll-container,
  .pwa-scroll-section {
    scroll-snap-type: none;
    will-change: auto;
  }
}
.skeleton {
  background: linear-gradient(
    90deg,
    rgb(var(--color-muted)) 25%,
    rgb(var(--color-muted) / 0.5) 50%,
    rgb(var(--color-muted)) 75%
  );
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s ease-in-out infinite;
}
@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}
.chart-color-1 {
  color: rgb(var(--color-primary));
}
.chart-color-2 {
  color: rgb(var(--color-accent-heritage));
}
.chart-color-3 {
  color: rgb(var(--color-secondary));
}
.chart-color-4 {
  color: rgb(var(--color-success));
}
.chart-color-5 {
  color: rgb(var(--color-warning));
}
.chart-color-6 {
  color: rgb(var(--color-info));
}
.chart-bg-1 {
  background-color: rgb(var(--color-primary));
}
.chart-bg-2 {
  background-color: rgb(var(--color-accent-heritage));
}
.chart-bg-3 {
  background-color: rgb(var(--color-secondary));
}
.chart-bg-4 {
  background-color: rgb(var(--color-success));
}
.chart-bg-5 {
  background-color: rgb(var(--color-warning));
}
.chart-bg-6 {
  background-color: rgb(var(--color-info));
}
.table {
  width: 100%;
  border-collapse: collapse;
}
.table th {
  font-weight: var(--font-weight-bold);
  text-align: left;
  padding: var(--space-3);
  border-bottom: 2px solid rgb(var(--color-border));
  background-color: rgb(var(--color-muted) / 0.3);
}
.table td {
  padding: var(--space-3);
  border-bottom: 1px solid rgb(var(--color-border));
  transition: background-color 200ms ease;
}
.table tr {
  transition: background-color 200ms ease;
}
.table tbody tr:hover {
  background-color: rgb(var(--color-muted) / 0.5);
}
.table-zebra tbody tr:nth-child(even) {
  background-color: rgb(var(--color-muted) / 0.2);
}
.table-zebra tbody tr:nth-child(even):hover {
  background-color: rgb(var(--color-muted) / 0.6);
}
.table-responsive {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.metric {
  text-align: center;
  padding: var(--space-4);
}
.metric-value {
  font-size: 2.5rem;
  font-weight: 300;
  line-height: 1;
  color: rgb(var(--color-foreground));
  margin-bottom: var(--space-2);
}
.metric-value.metric-heritage {
  color: rgb(var(--color-accent-heritage));
  font-weight: 600;
}
.metric-label {
  font-size: 0.875rem;
  color: rgb(var(--color-muted-foreground));
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.success-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
  margin-top: var(--space-4);
}
.success-metrics span {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  font-weight: var(--font-weight-medium);
  font-size: 0.875rem;
}
.metric-accent-heritage {
  background-color: rgba(var(--color-accent-heritage) / 0.1);
  color: rgb(var(--color-accent-heritage));
}
.metric-success {
  background-color: rgba(var(--color-success) / 0.1);
  color: rgb(var(--color-success));
}
.metric-secondary {
  background-color: rgba(var(--color-secondary) / 0.1);
  color: rgb(var(--color-secondary));
}
.metric-warning {
  background-color: rgba(var(--color-warning) / 0.1);
  color: rgb(var(--color-warning));
}
.step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--space-16);
  height: var(--space-16);
  border-radius: 50%;
  font-weight: var(--font-weight-bold);
  font-size: 1.25rem;
  margin-bottom: var(--space-4);
}
.step-number-heritage {
  background-color: rgb(var(--color-accent-heritage));
  color: white;
  margin-bottom: calc(var(--space-4) * 1.3);
}
.step-number-secondary {
  background-color: rgb(var(--color-secondary));
  color: white;
}
.step-number-warning {
  background-color: rgb(var(--color-warning));
  color: white;
}
.step-number-success {
  background-color: rgb(var(--color-success));
  color: white;
}
.data-card {
  background: rgb(var(--color-background));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
  transition: all 200ms ease;
}
.data-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}
.data-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
@media (min-width: 768px) {
  .data-grid {
    gap: var(--space-6);
  }
}
.data-highlight {
  position: relative;
  font-weight: var(--font-weight-semibold);
  color: rgb(var(--color-primary-700));
  padding: 0 var(--space-1);
}
.data-highlight::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: rgb(var(--color-primary-300));
  opacity: 0.5;
}
.touch-scale {
  transition: transform var(--duration-instant) ease-out;
  -webkit-tap-highlight-color: transparent;
}
.touch-scale:active {
  transform: scale(0.95);
}
.touch-ripple {
  position: relative;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
}
.touch-ripple::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.1);
  transform: translate(-50%, -50%);
  transition: width var(--duration-normal) ease-out,
              height var(--duration-normal) ease-out;
}
.touch-ripple:active::before {
  width: 100%;
  height: 100%;
}
@media (max-width: 767px) {
  .page-enter {
    transform: translateX(100%);
    opacity: 0;
  }
  .page-enter-active {
    transform: translateX(0);
    opacity: 1;
    transition: transform var(--duration-slow) ease-out,
                opacity var(--duration-slow) ease-out;
  }
  .page-exit {
    transform: translateX(0);
    opacity: 1;
  }
  .page-exit-active {
    transform: translateX(-30%);
    opacity: 0;
    transition: transform var(--duration-slow) ease-in,
                opacity var(--duration-slow) ease-in;
  }
}
@media (max-width: 767px) {
  .scroll-reveal {
    --scroll-reveal-distance: 10px;
  }
  .parallax {
    transform: none !important;
  }
}
@media (min-width: 1280px) {
  :root {
    --duration-instant: var(--duration-instant-desktop);
    --duration-fast: var(--duration-fast-desktop);
    --duration-normal: var(--duration-normal-desktop);
    --duration-slow: var(--duration-slow-desktop);
    --duration-slower: var(--duration-slower-desktop);
  }
  .scroll-reveal {
    transition: opacity var(--duration-slow) var(--easing-expo),
                transform var(--duration-slow) var(--easing-expo);
  }
  .scroll-reveal:nth-child(1) {
    transition-delay: 0ms;
  }
  .scroll-reveal:nth-child(2) {
    transition-delay: 75ms;
  }
  .scroll-reveal:nth-child(3) {
    transition-delay: 150ms;
  }
  .scroll-reveal:nth-child(4) {
    transition-delay: 225ms;
  }
  .scroll-reveal:nth-child(5) {
    transition-delay: 300ms;
  }
}
@media (hover: none) {
  .interactive:active {
    transform: scale(0.96);
    opacity: 0.9;
  }
}
@media (hover: hover) and (pointer: fine) {
  .interactive {
    transition: transform 200ms ease-out,
                box-shadow 200ms ease-out;
  }
  .interactive:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
  }
}
@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-instant: 0ms;
    --duration-fast: 0ms;
    --duration-normal: 0ms;
    --duration-slow: 0ms;
    --duration-slower: 0ms;
  }
}
[data-theme="boundless"] {
  color-scheme: light;
}
@media (max-width: 767px) {
  :root {
    --font-weight-hero: var(--font-weight-hero-mobile);
    --font-weight-heading: var(--font-weight-heading-mobile);
    --font-weight-bold: var(--font-weight-bold-mobile);
    --font-weight-heritage: var(--font-weight-heritage-mobile);
    --line-height-tight: var(--line-height-tight-mobile);
    --line-height-normal: var(--line-height-base-mobile);
    --line-height-loose: var(--line-height-loose-mobile);
  }
  .title-hero {
    font-weight: var(--font-weight-hero-mobile);
  }
  .title-section,
  .title-display {
    font-weight: var(--font-weight-heading-mobile);
  }
  .description,
  .text-sm {
    font-size: max(var(--font-size-base), 16px);
  }
}
@media (min-width: 1280px) {
  :root {
    --font-weight-hero: var(--font-weight-hero-desktop);
    --font-weight-heading: var(--font-weight-heading-desktop);
    --font-weight-bold: var(--font-weight-bold-desktop);
    --font-weight-heritage: var(--font-weight-heritage-desktop);
  }
  .title-hero {
    font-weight: var(--font-weight-hero-desktop);
  }
  .title-section,
  .title-display {
    font-weight: var(--font-weight-heading-desktop);
  }
}
.daisy-primary {
  --primary: rgb(var(--color-primary));
  --primary-content: rgb(var(--color-primary-foreground));
}
.daisy-secondary {
  --secondary: rgb(var(--color-secondary));
  --secondary-content: rgb(var(--color-secondary-foreground));
}
.daisy-accent {
  --accent: rgb(var(--color-accent-heritage));
  --accent-content: rgb(var(--color-accent-heritage-foreground));
}
.contain-layout {
  contain: layout;
}
.contain-style {
  contain: style;
}
.contain-paint {
  contain: paint;
}
.contain-strict {
  contain: strict;
}
.will-change-transform {
  will-change: transform;
}
.will-change-opacity {
  will-change: opacity;
}
.will-change-auto {
  will-change: auto;
}
.gpu-accelerated {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}
.image-rendering-auto {
  image-rendering: auto;
}
.image-rendering-crisp {
  image-rendering: -webkit-optimize-contrast;
  image-rendering: crisp-edges;
}
.aspect-square {
  aspect-ratio: 1 / 1;
}
.aspect-video {
  aspect-ratio: 16 / 9;
}
.aspect-4-3 {
  aspect-ratio: 4 / 3;
}
.scroll-smooth {
  scroll-behavior: smooth;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
@media (prefers-reduced-motion: reduce) {
  .scroll-smooth {
    scroll-behavior: auto;
  }
}
.overscroll-none {
  overscroll-behavior: none;
  overscroll-behavior-x: none;
  overscroll-behavior-y: none;
}
.overscroll-contain {
  overscroll-behavior: contain;
  overscroll-behavior-x: contain;
  overscroll-behavior-y: contain;
}
.overscroll-auto {
  overscroll-behavior: auto;
}
.touch-scroll {
  -webkit-overflow-scrolling: touch;
  overflow-y: auto;
  scroll-snap-type: y proximity;
  overscroll-behavior: contain;
}
.scroll-snap-mandatory {
  scroll-snap-type: y mandatory;
}
.scroll-snap-proximity {
  scroll-snap-type: y proximity;
}
.scroll-snap-none {
  scroll-snap-type: none;
}
.scroll-snap-start {
  scroll-snap-align: start;
}
.scroll-snap-center {
  scroll-snap-align: center;
}
.scroll-snap-end {
  scroll-snap-align: end;
}
.scroll-snap-stop {
  scroll-snap-stop: always;
}
.scroll-gpu {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
  will-change: scroll-position;
}
.scroll-contain {
  contain: layout style paint;
}
.scroll-contain-strict {
  contain: strict;
}
body.pwa-body {
  overscroll-behavior: contain;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}
@media (prefers-reduced-motion: reduce) {
  body.pwa-body {
    scroll-behavior: auto;
  }
}
.pwa-install-banner {
  position: fixed;
  bottom: var(--space-4);
  left: var(--space-4);
  right: var(--space-4);
  background: rgb(var(--color-background));
  border: 1px solid rgb(var(--color-border));
  border-radius: var(--radius-md);
  padding: var(--space-4);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-toast);
  transform: translateY(120%);
  transition: transform var(--duration-slow) var(--easing-smooth);
}
.pwa-install-banner.visible {
  transform: translateY(0);
}
.offline-indicator {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: rgb(var(--color-warning));
  color: rgb(var(--color-warning-foreground));
  padding: var(--space-2);
  text-align: center;
  font-size: var(--font-size-sm);
  z-index: var(--z-alert);
  transform: translateY(-100%);
  transition: transform var(--duration-normal) var(--easing-smooth);
}
.offline-indicator.visible {
  transform: translateY(0);
}
.update-notification {
  position: fixed;
  top: var(--space-4);
  right: var(--space-4);
  background: rgb(var(--color-info));
  color: rgb(var(--color-info-foreground));
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-toast);
  max-width: 320px;
}
.pwa-splash {
  position: fixed;
  inset: 0;
  background: rgb(var(--color-background));
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-loader);
}
.app-transition-enter {
  opacity: 0;
  transform: scale(0.9);
}
.app-transition-enter-active {
  opacity: 1;
  transform: scale(1);
  transition: opacity var(--duration-normal) ease-out,
              transform var(--duration-normal) ease-out;
}
.app-transition-exit {
  opacity: 1;
  transform: scale(1);
}
.app-transition-exit-active {
  opacity: 0;
  transform: scale(1.1);
  transition: opacity var(--duration-normal) ease-in,
              transform var(--duration-normal) ease-in;
}
.mobile-bottom-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: var(--touch-target-large);
  background: rgb(var(--color-background));
  border-top: 1px solid rgb(var(--color-border));
  display: flex;
  justify-content: space-around;
  align-items: center;
  padding-bottom: var(--safe-area-bottom);
  z-index: var(--z-sticky);
}
@media (display-mode: standalone) {
  .pwa-status-padding {
    padding-top: var(--safe-area-top);
  }
}
@property --tw-translate-x {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-y {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-z {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-scale-x {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-y {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-z {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-space-y-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-space-x-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-gradient-position {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}
@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}
@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-leading {
  syntax: "*";
  inherits: false;
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-tracking {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-outline-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-backdrop-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-duration {
  syntax: "*";
  inherits: false;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes pulse {
  50% {
    opacity: 0.5;
  }
}
@keyframes bounce {
  0%,
      100% {
    transform: translateY(-25%);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: none;
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-translate-x: 0;
      --tw-translate-y: 0;
      --tw-translate-z: 0;
      --tw-scale-x: 1;
      --tw-scale-y: 1;
      --tw-scale-z: 1;
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-space-y-reverse: 0;
      --tw-space-x-reverse: 0;
      --tw-border-style: solid;
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
      --tw-leading: initial;
      --tw-font-weight: initial;
      --tw-tracking: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-outline-style: solid;
      --tw-backdrop-blur: initial;
      --tw-backdrop-brightness: initial;
      --tw-backdrop-contrast: initial;
      --tw-backdrop-grayscale: initial;
      --tw-backdrop-hue-rotate: initial;
      --tw-backdrop-invert: initial;
      --tw-backdrop-opacity: initial;
      --tw-backdrop-saturate: initial;
      --tw-backdrop-sepia: initial;
      --tw-duration: initial;
    }
  }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2luZGV4LmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9hYm91dC1wYWdlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9icmVhZGNydW1iLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9idXR0b24uY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2J1dHRvbnMuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2NhcGFiaWxpdGllcy5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvY2FwYWJpbGl0eS1jYXJkLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9jaGFsbGVuZ2VzLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9jb2RlLWV4YW1wbGUuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2NvbXBhcmlzb24tdGFibGUuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2NvbnRhY3QtbW9kYWwuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2N0YS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvZG9jcy1uYXZpZ2F0aW9uLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9kb2N1bWVudGF0aW9uLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9mYXEuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2ZlYXR1cmVzLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9mbG9hdGluZy1jdGEuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2Zsb2F0aW5nLXRoZW1lLXRvZ2dsZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvZm9vdGVyLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9oZWFkZXIuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2hlcm8uY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2ljb24uY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL2xpc3QtY2FyZC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvbWV0cmljc0NhcmQuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3BhcnRuZXJzLWRpcmVjdG9yeS1wYWdlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zZWN0aW9uLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zZXJ2aWNlLXNob3djYXNlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zaG93Y2FzZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc29sdXRpb24tbGlzdGluZy5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc3BlY2lmaWNhdGlvbi10YWJsZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc3RvcnktY2FyZC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvc3RyZWFtaW5nLWNhcm91c2VsLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy9zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXMuY3NzIiwiLi4vLi4vc3JjL3N0eWxlcy9jb21wb25lbnRzL3Rjby5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvdGVzdGltb25pYWwtY2FyZC5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvdGhlbWUtdG9nZ2xlLmNzcyIsIi4uLy4uL3NyYy9zdHlsZXMvY29tcG9uZW50cy90aW1lbGluZS5jc3MiLCIuLi8uLi9zcmMvc3R5bGVzL2NvbXBvbmVudHMvdXNlLWNhc2UtY2FyZC5jc3MiLCIuLi8u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TUFBcEIsK0JBQW9CO01BQXBCLCtCQUFvQjtNQUFwQiwrQkFBb0I7TUFBcEIscUJBQW9CO01BQXBCLHlCQUFvQjtNQUFwQixzQkFBb0I7TUFBcEIsc0JBQW9CO01BQXBCLDBCQUFvQjtNQUFwQix1QkFBb0I7TUFBcEIsNEJBQW9CO01BQXBCLGdDQUFvQjtNQUFwQiw2QkFBb0I7TUFBcEIsd0JBQW9CO01BQXBCLDJCQUFvQjtNQUFwQiw4QkFBb0I7TUFBcEIsaUNBQW9CO01BQXBCLHdCQUFvQjtNQUFwQiwyQkFBb0I7TUFBcEIsNEJBQW9CO01BQXBCLGtDQUFvQjtNQUFwQix5QkFBb0I7TUFBcEIsMkJBQW9CO01BQXBCLGlDQUFvQjtNQUFwQiwrQkFBb0I7TUFBcEIsZ0NBQW9CO01BQXBCLGlDQUFvQjtNQUFwQiw2QkFBb0I7TUFBcEIsOEJBQW9CO01BQXBCLCtCQUFvQjtNQUFwQiw0QkFBb0I7TUFBcEIsc0JBQW9CO0lBQUE7RUFBQTtBQUFBIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJAbGF5ZXIgdGhlbWUsIGJhc2UsIGNvbXBvbmVudHMsIHV0aWxpdGllcztcblxuQGxheWVyIHRoZW1lIHtcbiAgQHRoZW1lIGRlZmF1bHQge1xuICAgIC0tZm9udC1zYW5zOlxuICAgICAgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXG4gICAgICBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiO1xuICAgIC0tZm9udC1zZXJpZjogdWktc2VyaWYsIEdlb3JnaWEsIENhbWJyaWEsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFRpbWVzLCBzZXJpZjtcbiAgICAtLWZvbnQtbW9ubzpcbiAgICAgIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLFxuICAgICAgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2U7XG5cbiAgICAtLWNvbG9yLXJlZC01MDogb2tsY2goOTcuMSUgMC4wMTMgMTcuMzgpO1xuICAgIC0tY29sb3ItcmVkLTEwMDogb2tsY2goOTMuNiUgMC4wMzIgMTcuNzE3KTtcbiAgICAtLWNvbG9yLXJlZC0yMDA6IG9rbGNoKDg4LjUlIDAuMDYyIDE4LjMzNCk7XG4gICAgLS1jb2xvci1yZWQtMzAwOiBva2xjaCg4MC44JSAwLjExNCAxOS41NzEpO1xuICAgIC0tY29sb3ItcmVkLTQwMDogb2tsY2goNzAuNCUgMC4xOTEgMjIuMjE2KTtcbiAgICAtLWNvbG9yLXJlZC01MDA6IG9rbGNoKDYzLjclIDAuMjM3IDI1LjMzMSk7XG4gICAgLS1jb2xvci1yZWQtNjAwOiBva2xjaCg1Ny43JSAwLjI0NSAyNy4zMjUpO1xuICAgIC0tY29sb3ItcmVkLTcwMDogb2tsY2goNTAuNSUgMC4yMTMgMjcuNTE4KTtcbiAgICAtLWNvbG9yLXJlZC04MDA6IG9rbGNoKDQ0LjQlIDAuMTc3IDI2Ljg5OSk7XG4gICAgLS1jb2xvci1yZWQtOTAwOiBva2xjaCgzOS42JSAwLjE0MSAyNS43MjMpO1xuICAgIC0tY29sb3ItcmVkLTk1MDogb2tsY2goMjUuOCUgMC4wOTIgMjYuMDQyKTtcblxuICAgIC0tY29sb3Itb3JhbmdlLTUwOiBva2xjaCg5OCUgMC4wMTYgNzMuNjg0KTtcbiAgICAtLWNvbG9yLW9yYW5nZS0xMDA6IG9rbGNoKDk1LjQlIDAuMDM4IDc1LjE2NCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtMjAwOiBva2xjaCg5MC4xJSAwLjA3NiA3MC42OTcpO1xuICAgIC0tY29sb3Itb3JhbmdlLTMwMDogb2tsY2goODMuNyUgMC4xMjggNjYuMjkpO1xuICAgIC0tY29sb3Itb3JhbmdlLTQwMDogb2tsY2goNzUlIDAuMTgzIDU1LjkzNCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtNTAwOiBva2xjaCg3MC41JSAwLjIxMyA0Ny42MDQpO1xuICAgIC0tY29sb3Itb3JhbmdlLTYwMDogb2tsY2goNjQuNiUgMC4yMjIgNDEuMTE2KTtcbiAgICAtLWNvbG9yLW9yYW5nZS03MDA6IG9rbGNoKDU1LjMlIDAuMTk1IDM4LjQwMik7XG4gICAgLS1jb2xvci1vcmFuZ2UtODAwOiBva2xjaCg0NyUgMC4xNTcgMzcuMzA0KTtcbiAgICAtLWNvbG9yLW9yYW5nZS05MDA6IG9rbGNoKDQwLjglIDAuMTIzIDM4LjE3Mik7XG4gICAgLS1jb2xvci1vcmFuZ2UtOTUwOiBva2xjaCgyNi42JSAwLjA3OSAzNi4yNTkpO1xuXG4gICAgLS1jb2xvci1hbWJlci01MDogb2tsY2goOTguNyUgMC4wMjIgOTUuMjc3KTtcbiAgICAtLWNvbG9yLWFtYmVyLTEwMDogb2tsY2goOTYuMiUgMC4wNTkgOTUuNjE3KTtcbiAgICAtLWNvbG9yLWFtYmVyLTIwMDogb2tsY2goOTIuNCUgMC4xMiA5NS43NDYpO1xuICAgIC0tY29sb3ItYW1iZXItMzAwOiBva2xjaCg4Ny45JSAwLjE2OSA5MS42MDUpO1xuICAgIC0tY29sb3ItYW1iZXItNDAwOiBva2xjaCg4Mi44JSAwLjE4OSA4NC40MjkpO1xuICAgIC0tY29sb3ItYW1iZXItNTAwOiBva2xjaCg3Ni45JSAwLjE4OCA3MC4wOCk7XG4gICAgLS1jb2xvci1hbWJlci02MDA6IG9rbGNoKDY2LjYlIDAuMTc5IDU4LjMxOCk7XG4gICAgLS1jb2xvci1hbWJlci03MDA6IG9rbGNoKDU1LjUlIDAuMTYzIDQ4Ljk5OCk7XG4gICAgLS1jb2xvci1hbWJlci04MDA6IG9rbGNoKDQ3LjMlIDAuMTM3IDQ2LjIwMSk7XG4gICAgLS1jb2xvci1hbWJlci05MDA6IG9rbGNoKDQxLjQlIDAuMTEyIDQ1LjkwNCk7XG4gICAgLS1jb2xvci1hbWJlci05NTA6IG9rbGNoKDI3LjklIDAuMDc3IDQ1LjYzNSk7XG5cbiAgICAtLWNvbG9yLXllbGxvdy01MDogb2tsY2goOTguNyUgMC4wMjYgMTAyLjIxMik7XG4gICAgLS1jb2xvci15ZWxsb3ctMTAwOiBva2xjaCg5Ny4zJSAwLjA3MSAxMDMuMTkzKTtcbiAgICAtLWNvbG9yLXllbGxvdy0yMDA6IG9rbGNoKDk0LjUlIDAuMTI5IDEwMS41NCk7XG4gICAgLS1jb2xvci15ZWxsb3ctMzAwOiBva2xjaCg5MC41JSAwLjE4MiA5OC4xMTEpO1xuICAgIC0tY29sb3IteWVsbG93LTQwMDogb2tsY2goODUuMiUgMC4xOTkgOTEuOTM2KTtcbiAgICAtLWNvbG9yLXllbGxvdy01MDA6IG9rbGNoKDc5LjUlIDAuMTg0IDg2LjA0Nyk7XG4gICAgLS1jb2xvci15ZWxsb3ctNjAwOiBva2xjaCg2OC4xJSAwLjE2MiA3NS44MzQpO1xuICAgIC0tY29sb3IteWVsbG93LTcwMDogb2tsY2goNTUuNCUgMC4xMzUgNjYuNDQyKTtcbiAgICAtLWNvbG9yLXllbGxvdy04MDA6IG9rbGNoKDQ3LjYlIDAuMTE0IDYxLjkwNyk7XG4gICAgLS1jb2xvci15ZWxsb3ctOTAwOiBva2xjaCg0Mi4xJSAwLjA5NSA1Ny43MDgpO1xuICAgIC0tY29sb3IteWVsbG93LTk1MDogb2tsY2goMjguNiUgMC4wNjYgNTMuODEzKTtcblxuICAgIC0tY29sb3ItbGltZS01MDogb2tsY2goOTguNiUgMC4wMzEgMTIwLjc1Nyk7XG4gICAgLS1jb2xvci1saW1lLTEwMDogb2tsY2goOTYuNyUgMC4wNjcgMTIyLjMyOCk7XG4gICAgLS1jb2xvci1saW1lLTIwMDogb2tsY2goOTMuOCUgMC4xMjcgMTI0LjMyMSk7XG4gICAgLS1jb2xvci1saW1lLTMwMDogb2tsY2goODkuNyUgMC4xOTYgMTI2LjY2NSk7XG4gICAgLS1jb2xvci1saW1lLTQwMDogb2tsY2goODQuMSUgMC4yMzggMTI4Ljg1KTtcbiAgICAtLWNvbG9yLWxpbWUtNTAwOiBva2xjaCg3Ni44JSAwLjIzMyAxMzAuODUpO1xuICAgIC0tY29sb3ItbGltZS02MDA6IG9rbGNoKDY0LjglIDAuMiAxMzEuNjg0KTtcbiAgICAtLWNvbG9yLWxpbWUtNzAwOiBva2xjaCg1My4yJSAwLjE1NyAxMzEuNTg5KTtcbiAgICAtLWNvbG9yLWxpbWUtODAwOiBva2xjaCg0NS4zJSAwLjEyNCAxMzAuOTMzKTtcbiAgICAtLWNvbG9yLWxpbWUtOTAwOiBva2xjaCg0MC41JSAwLjEwMSAxMzEuMDYzKTtcbiAgICAtLWNvbG9yLWxpbWUtOTUwOiBva2xjaCgyNy40JSAwLjA3MiAxMzIuMTA5KTtcblxuICAgIC0tY29sb3ItZ3JlZW4tNTA6IG9rbGNoKDk4LjIlIDAuMDE4IDE1NS44MjYpO1xuICAgIC0tY29sb3ItZ3JlZW4tMTAwOiBva2xjaCg5Ni4yJSAwLjA0NCAxNTYuNzQzKTtcbiAgICAtLWNvbG9yLWdyZWVuLTIwMDogb2tsY2goOTIuNSUgMC4wODQgMTU1Ljk5NSk7XG4gICAgLS1jb2xvci1ncmVlbi0zMDA6IG9rbGNoKDg3LjElIDAuMTUgMTU0LjQ0OSk7XG4gICAgLS1jb2xvci1ncmVlbi00MDA6IG9rbGNoKDc5LjIlIDAuMjA5IDE1MS43MTEpO1xuICAgIC0tY29sb3ItZ3JlZW4tNTAwOiBva2xjaCg3Mi4zJSAwLjIxOSAxNDkuNTc5KTtcbiAgICAtLWNvbG9yLWdyZWVuLTYwMDogb2tsY2goNjIuNyUgMC4xOTQgMTQ5LjIxNCk7XG4gICAgLS1jb2xvci1ncmVlbi03MDA6IG9rbGNoKDUyLjclIDAuMTU0IDE1MC4wNjkpO1xuICAgIC0tY29sb3ItZ3JlZW4tODAwOiBva2xjaCg0NC44JSAwLjExOSAxNTEuMzI4KTtcbiAgICAtLWNvbG9yLWdyZWVuLTkwMDogb2tsY2goMzkuMyUgMC4wOTUgMTUyLjUzNSk7XG4gICAgLS1jb2xvci1ncmVlbi05NTA6IG9rbGNoKDI2LjYlIDAuMDY1IDE1Mi45MzQpO1xuXG4gICAgLS1jb2xvci1lbWVyYWxkLTUwOiBva2xjaCg5Ny45JSAwLjAyMSAxNjYuMTEzKTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtMTAwOiBva2xjaCg5NSUgMC4wNTIgMTYzLjA1MSk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTIwMDogb2tsY2goOTAuNSUgMC4wOTMgMTY0LjE1KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtMzAwOiBva2xjaCg4NC41JSAwLjE0MyAxNjQuOTc4KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtNDAwOiBva2xjaCg3Ni41JSAwLjE3NyAxNjMuMjIzKTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtNTAwOiBva2xjaCg2OS42JSAwLjE3IDE2Mi40OCk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTYwMDogb2tsY2goNTkuNiUgMC4xNDUgMTYzLjIyNSk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTcwMDogb2tsY2goNTAuOCUgMC4xMTggMTY1LjYxMik7XG4gICAgLS1jb2xvci1lbWVyYWxkLTgwMDogb2tsY2goNDMuMiUgMC4wOTUgMTY2LjkxMyk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTkwMDogb2tsY2goMzcuOCUgMC4wNzcgMTY4Ljk0KTtcbiAgICAtLWNvbG9yLWVtZXJhbGQtOTUwOiBva2xjaCgyNi4yJSAwLjA1MSAxNzIuNTUyKTtcblxuICAgIC0tY29sb3ItdGVhbC01MDogb2tsY2goOTguNCUgMC4wMTQgMTgwLjcyKTtcbiAgICAtLWNvbG9yLXRlYWwtMTAwOiBva2xjaCg5NS4zJSAwLjA1MSAxODAuODAxKTtcbiAgICAtLWNvbG9yLXRlYWwtMjAwOiBva2xjaCg5MSUgMC4wOTYgMTgwLjQyNik7XG4gICAgLS1jb2xvci10ZWFsLTMwMDogb2tsY2goODUuNSUgMC4xMzggMTgxLjA3MSk7XG4gICAgLS1jb2xvci10ZWFsLTQwMDogb2tsY2goNzcuNyUgMC4xNTIgMTgxLjkxMik7XG4gICAgLS1jb2xvci10ZWFsLTUwMDogb2tsY2goNzAuNCUgMC4xNCAxODIuNTAzKTtcbiAgICAtLWNvbG9yLXRlYWwtNjAwOiBva2xjaCg2MCUgMC4xMTggMTg0LjcwNCk7XG4gICAgLS1jb2xvci10ZWFsLTcwMDogb2tsY2goNTEuMSUgMC4wOTYgMTg2LjM5MSk7XG4gICAgLS1jb2xvci10ZWFsLTgwMDogb2tsY2goNDMuNyUgMC4wNzggMTg4LjIxNik7XG4gICAgLS1jb2xvci10ZWFsLTkwMDogb2tsY2goMzguNiUgMC4wNjMgMTg4LjQxNik7XG4gICAgLS1jb2xvci10ZWFsLTk1MDogb2tsY2goMjcuNyUgMC4wNDYgMTkyLjUyNCk7XG5cbiAgICAtLWNvbG9yLWN5YW4tNTA6IG9rbGNoKDk4LjQlIDAuMDE5IDIwMC44NzMpO1xuICAgIC0tY29sb3ItY3lhbi0xMDA6IG9rbGNoKDk1LjYlIDAuMDQ1IDIwMy4zODgpO1xuICAgIC0tY29sb3ItY3lhbi0yMDA6IG9rbGNoKDkxLjclIDAuMDggMjA1LjA0MSk7XG4gICAgLS1jb2xvci1jeWFuLTMwMDogb2tsY2goODYuNSUgMC4xMjcgMjA3LjA3OCk7XG4gICAgLS1jb2xvci1jeWFuLTQwMDogb2tsY2goNzguOSUgMC4xNTQgMjExLjUzKTtcbiAgICAtLWNvbG9yLWN5YW4tNTAwOiBva2xjaCg3MS41JSAwLjE0MyAyMTUuMjIxKTtcbiAgICAtLWNvbG9yLWN5YW4tNjAwOiBva2xjaCg2MC45JSAwLjEyNiAyMjEuNzIzKTtcbiAgICAtLWNvbG9yLWN5YW4tNzAwOiBva2xjaCg1MiUgMC4xMDUgMjIzLjEyOCk7XG4gICAgLS1jb2xvci1jeWFuLTgwMDogb2tsY2goNDUlIDAuMDg1IDIyNC4yODMpO1xuICAgIC0tY29sb3ItY3lhbi05MDA6IG9rbGNoKDM5LjglIDAuMDcgMjI3LjM5Mik7XG4gICAgLS1jb2xvci1jeWFuLTk1MDogb2tsY2goMzAuMiUgMC4wNTYgMjI5LjY5NSk7XG5cbiAgICAtLWNvbG9yLXNreS01MDogb2tsY2goOTcuNyUgMC4wMTMgMjM2LjYyKTtcbiAgICAtLWNvbG9yLXNreS0xMDA6IG9rbGNoKDk1LjElIDAuMDI2IDIzNi44MjQpO1xuICAgIC0tY29sb3Itc2t5LTIwMDogb2tsY2goOTAuMSUgMC4wNTggMjMwLjkwMik7XG4gICAgLS1jb2xvci1za3ktMzAwOiBva2xjaCg4Mi44JSAwLjExMSAyMzAuMzE4KTtcbiAgICAtLWNvbG9yLXNreS00MDA6IG9rbGNoKDc0LjYlIDAuMTYgMjMyLjY2MSk7XG4gICAgLS1jb2xvci1za3ktNTAwOiBva2xjaCg2OC41JSAwLjE2OSAyMzcuMzIzKTtcbiAgICAtLWNvbG9yLXNreS02MDA6IG9rbGNoKDU4LjglIDAuMTU4IDI0MS45NjYpO1xuICAgIC0tY29sb3Itc2t5LTcwMDogb2tsY2goNTAlIDAuMTM0IDI0Mi43NDkpO1xuICAgIC0tY29sb3Itc2t5LTgwMDogb2tsY2goNDQuMyUgMC4xMSAyNDAuNzkpO1xuICAgIC0tY29sb3Itc2t5LTkwMDogb2tsY2goMzkuMSUgMC4wOSAyNDAuODc2KTtcbiAgICAtLWNvbG9yLXNreS05NTA6IG9rbGNoKDI5LjMlIDAuMDY2IDI0My4xNTcpO1xuXG4gICAgLS1jb2xvci1ibHVlLTUwOiBva2xjaCg5NyUgMC4wMTQgMjU0LjYwNCk7XG4gICAgLS1jb2xvci1ibHVlLTEwMDogb2tsY2goOTMuMiUgMC4wMzIgMjU1LjU4NSk7XG4gICAgLS1jb2xvci1ibHVlLTIwMDogb2tsY2goODguMiUgMC4wNTkgMjU0LjEyOCk7XG4gICAgLS1jb2xvci1ibHVlLTMwMDogb2tsY2goODAuOSUgMC4xMDUgMjUxLjgxMyk7XG4gICAgLS1jb2xvci1ibHVlLTQwMDogb2tsY2goNzAuNyUgMC4xNjUgMjU0LjYyNCk7XG4gICAgLS1jb2xvci1ibHVlLTUwMDogb2tsY2goNjIuMyUgMC4yMTQgMjU5LjgxNSk7XG4gICAgLS1jb2xvci1ibHVlLTYwMDogb2tsY2goNTQuNiUgMC4yNDUgMjYyLjg4MSk7XG4gICAgLS1jb2xvci1ibHVlLTcwMDogb2tsY2goNDguOCUgMC4yNDMgMjY0LjM3Nik7XG4gICAgLS1jb2xvci1ibHVlLTgwMDogb2tsY2goNDIuNCUgMC4xOTkgMjY1LjYzOCk7XG4gICAgLS1jb2xvci1ibHVlLTkwMDogb2tsY2goMzcuOSUgMC4xNDYgMjY1LjUyMik7XG4gICAgLS1jb2xvci1ibHVlLTk1MDogb2tsY2goMjguMiUgMC4wOTEgMjY3LjkzNSk7XG5cbiAgICAtLWNvbG9yLWluZGlnby01MDogb2tsY2goOTYuMiUgMC4wMTggMjcyLjMxNCk7XG4gICAgLS1jb2xvci1pbmRpZ28tMTAwOiBva2xjaCg5MyUgMC4wMzQgMjcyLjc4OCk7XG4gICAgLS1jb2xvci1pbmRpZ28tMjAwOiBva2xjaCg4NyUgMC4wNjUgMjc0LjAzOSk7XG4gICAgLS1jb2xvci1pbmRpZ28tMzAwOiBva2xjaCg3OC41JSAwLjExNSAyNzQuNzEzKTtcbiAgICAtLWNvbG9yLWluZGlnby00MDA6IG9rbGNoKDY3LjMlIDAuMTgyIDI3Ni45MzUpO1xuICAgIC0tY29sb3ItaW5kaWdvLTUwMDogb2tsY2goNTguNSUgMC4yMzMgMjc3LjExNyk7XG4gICAgLS1jb2xvci1pbmRpZ28tNjAwOiBva2xjaCg1MS4xJSAwLjI2MiAyNzYuOTY2KTtcbiAgICAtLWNvbG9yLWluZGlnby03MDA6IG9rbGNoKDQ1LjclIDAuMjQgMjc3LjAyMyk7XG4gICAgLS1jb2xvci1pbmRpZ28tODAwOiBva2xjaCgzOS44JSAwLjE5NSAyNzcuMzY2KTtcbiAgICAtLWNvbG9yLWluZGlnby05MDA6IG9rbGNoKDM1LjklIDAuMTQ0IDI3OC42OTcpO1xuICAgIC0tY29sb3ItaW5kaWdvLTk1MDogb2tsY2goMjUuNyUgMC4wOSAyODEuMjg4KTtcblxuICAgIC0tY29sb3ItdmlvbGV0LTUwOiBva2xjaCg5Ni45JSAwLjAxNiAyOTMuNzU2KTtcbiAgICAtLWNvbG9yLXZpb2xldC0xMDA6IG9rbGNoKDk0LjMlIDAuMDI5IDI5NC41ODgpO1xuICAgIC0tY29sb3ItdmlvbGV0LTIwMDogb2tsY2goODkuNCUgMC4wNTcgMjkzLjI4Myk7XG4gICAgLS1jb2xvci12aW9sZXQtMzAwOiBva2xjaCg4MS4xJSAwLjExMSAyOTMuNTcxKTtcbiAgICAtLWNvbG9yLXZpb2xldC00MDA6IG9rbGNoKDcwLjIlIDAuMTgzIDI5My41NDEpO1xuICAgIC0tY29sb3ItdmlvbGV0LTUwMDogb2tsY2goNjAuNiUgMC4yNSAyOTIuNzE3KTtcbiAgICAtLWNvbG9yLXZpb2xldC02MDA6IG9rbGNoKDU0LjElIDAuMjgxIDI5My4wMDkpO1xuICAgIC0tY29sb3ItdmlvbGV0LTcwMDogb2tsY2goNDkuMSUgMC4yNyAyOTIuNTgxKTtcbiAgICAtLWNvbG9yLXZpb2xldC04MDA6IG9rbGNoKDQzLjIlIDAuMjMyIDI5Mi43NTkpO1xuICAgIC0tY29sb3ItdmlvbGV0LTkwMDogb2tsY2goMzglIDAuMTg5IDI5My43NDUpO1xuICAgIC0tY29sb3ItdmlvbGV0LTk1MDogb2tsY2goMjguMyUgMC4xNDEgMjkxLjA4OSk7XG5cbiAgICAtLWNvbG9yLXB1cnBsZS01MDogb2tsY2goOTcuNyUgMC4wMTQgMzA4LjI5OSk7XG4gICAgLS1jb2xvci1wdXJwbGUtMTAwOiBva2xjaCg5NC42JSAwLjAzMyAzMDcuMTc0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS0yMDA6IG9rbGNoKDkwLjIlIDAuMDYzIDMwNi43MDMpO1xuICAgIC0tY29sb3ItcHVycGxlLTMwMDogb2tsY2goODIuNyUgMC4xMTkgMzA2LjM4Myk7XG4gICAgLS1jb2xvci1wdXJwbGUtNDAwOiBva2xjaCg3MS40JSAwLjIwMyAzMDUuNTA0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS01MDA6IG9rbGNoKDYyLjclIDAuMjY1IDMwMy45KTtcbiAgICAtLWNvbG9yLXB1cnBsZS02MDA6IG9rbGNoKDU1LjglIDAuMjg4IDMwMi4zMjEpO1xuICAgIC0tY29sb3ItcHVycGxlLTcwMDogb2tsY2goNDkuNiUgMC4yNjUgMzAxLjkyNCk7XG4gICAgLS1jb2xvci1wdXJwbGUtODAwOiBva2xjaCg0My44JSAwLjIxOCAzMDMuNzI0KTtcbiAgICAtLWNvbG9yLXB1cnBsZS05MDA6IG9rbGNoKDM4LjElIDAuMTc2IDMwNC45ODcpO1xuICAgIC0tY29sb3ItcHVycGxlLTk1MDogb2tsY2goMjkuMSUgMC4xNDkgMzAyLjcxNyk7XG5cbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNTA6IG9rbGNoKDk3LjclIDAuMDE3IDMyMC4wNTgpO1xuICAgIC0tY29sb3ItZnVjaHNpYS0xMDA6IG9rbGNoKDk1LjIlIDAuMDM3IDMxOC44NTIpO1xuICAgIC0tY29sb3ItZnVjaHNpYS0yMDA6IG9rbGNoKDkwLjMlIDAuMDc2IDMxOS42Mik7XG4gICAgLS1jb2xvci1mdWNoc2lhLTMwMDogb2tsY2goODMuMyUgMC4xNDUgMzIxLjQzNCk7XG4gICAgLS1jb2xvci1mdWNoc2lhLTQwMDogb2tsY2goNzQlIDAuMjM4IDMyMi4xNik7XG4gICAgLS1jb2xvci1mdWNoc2lhLTUwMDogb2tsY2goNjYuNyUgMC4yOTUgMzIyLjE1KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNjAwOiBva2xjaCg1OS4xJSAwLjI5MyAzMjIuODk2KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtNzAwOiBva2xjaCg1MS44JSAwLjI1MyAzMjMuOTQ5KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtODAwOiBva2xjaCg0NS4yJSAwLjIxMSAzMjQuNTkxKTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtOTAwOiBva2xjaCg0MC4xJSAwLjE3IDMyNS42MTIpO1xuICAgIC0tY29sb3ItZnVjaHNpYS05NTA6IG9rbGNoKDI5LjMlIDAuMTM2IDMyNS42NjEpO1xuXG4gICAgLS1jb2xvci1waW5rLTUwOiBva2xjaCg5Ny4xJSAwLjAxNCAzNDMuMTk4KTtcbiAgICAtLWNvbG9yLXBpbmstMTAwOiBva2xjaCg5NC44JSAwLjAyOCAzNDIuMjU4KTtcbiAgICAtLWNvbG9yLXBpbmstMjAwOiBva2xjaCg4OS45JSAwLjA2MSAzNDMuMjMxKTtcbiAgICAtLWNvbG9yLXBpbmstMzAwOiBva2xjaCg4Mi4zJSAwLjEyIDM0Ni4wMTgpO1xuICAgIC0tY29sb3ItcGluay00MDA6IG9rbGNoKDcxLjglIDAuMjAyIDM0OS43NjEpO1xuICAgIC0tY29sb3ItcGluay01MDA6IG9rbGNoKDY1LjYlIDAuMjQxIDM1NC4zMDgpO1xuICAgIC0tY29sb3ItcGluay02MDA6IG9rbGNoKDU5LjIlIDAuMjQ5IDAuNTg0KTtcbiAgICAtLWNvbG9yLXBpbmstNzAwOiBva2xjaCg1Mi41JSAwLjIyMyAzLjk1OCk7XG4gICAgLS1jb2xvci1waW5rLTgwMDogb2tsY2goNDUuOSUgMC4xODcgMy44MTUpO1xuICAgIC0tY29sb3ItcGluay05MDA6IG9rbGNoKDQwLjglIDAuMTUzIDIuNDMyKTtcbiAgICAtLWNvbG9yLXBpbmstOTUwOiBva2xjaCgyOC40JSAwLjEwOSAzLjkwNyk7XG5cbiAgICAtLWNvbG9yLXJvc2UtNTA6IG9rbGNoKDk2LjklIDAuMDE1IDEyLjQyMik7XG4gICAgLS1jb2xvci1yb3NlLTEwMDogb2tsY2goOTQuMSUgMC4wMyAxMi41OCk7XG4gICAgLS1jb2xvci1yb3NlLTIwMDogb2tsY2goODkuMiUgMC4wNTggMTAuMDAxKTtcbiAgICAtLWNvbG9yLXJvc2UtMzAwOiBva2xjaCg4MSUgMC4xMTcgMTEuNjM4KTtcbiAgICAtLWNvbG9yLXJvc2UtNDAwOiBva2xjaCg3MS4yJSAwLjE5NCAxMy40MjgpO1xuICAgIC0tY29sb3Itcm9zZS01MDA6IG9rbGNoKDY0LjUlIDAuMjQ2IDE2LjQzOSk7XG4gICAgLS1jb2xvci1yb3NlLTYwMDogb2tsY2goNTguNiUgMC4yNTMgMTcuNTg1KTtcbiAgICAtLWNvbG9yLXJvc2UtNzAwOiBva2xjaCg1MS40JSAwLjIyMiAxNi45MzUpO1xuICAgIC0tY29sb3Itcm9zZS04MDA6IG9rbGNoKDQ1LjUlIDAuMTg4IDEzLjY5Nyk7XG4gICAgLS1jb2xvci1yb3NlLTkwMDogb2tsY2goNDElIDAuMTU5IDEwLjI3Mik7XG4gICAgLS1jb2xvci1yb3NlLTk1MDogb2tsY2goMjcuMSUgMC4xMDUgMTIuMDk0KTtcblxuICAgIC0tY29sb3Itc2xhdGUtNTA6IG9rbGNoKDk4LjQlIDAuMDAzIDI0Ny44NTgpO1xuICAgIC0tY29sb3Itc2xhdGUtMTAwOiBva2xjaCg5Ni44JSAwLjAwNyAyNDcuODk2KTtcbiAgICAtLWNvbG9yLXNsYXRlLTIwMDogb2tsY2goOTIuOSUgMC4wMTMgMjU1LjUwOCk7XG4gICAgLS1jb2xvci1zbGF0ZS0zMDA6IG9rbGNoKDg2LjklIDAuMDIyIDI1Mi44OTQpO1xuICAgIC0tY29sb3Itc2xhdGUtNDAwOiBva2xjaCg3MC40JSAwLjA0IDI1Ni43ODgpO1xuICAgIC0tY29sb3Itc2xhdGUtNTAwOiBva2xjaCg1NS40JSAwLjA0NiAyNTcuNDE3KTtcbiAgICAtLWNvbG9yLXNsYXRlLTYwMDogb2tsY2goNDQuNiUgMC4wNDMgMjU3LjI4MSk7XG4gICAgLS1jb2xvci1zbGF0ZS03MDA6IG9rbGNoKDM3LjIlIDAuMDQ0IDI1Ny4yODcpO1xuICAgIC0tY29sb3Itc2xhdGUtODAwOiBva2xjaCgyNy45JSAwLjA0MSAyNjAuMDMxKTtcbiAgICAtLWNvbG9yLXNsYXRlLTkwMDogb2tsY2goMjAuOCUgMC4wNDIgMjY1Ljc1NSk7XG4gICAgLS1jb2xvci1zbGF0ZS05NTA6IG9rbGNoKDEyLjklIDAuMDQyIDI2NC42OTUpO1xuXG4gICAgLS1jb2xvci1ncmF5LTUwOiBva2xjaCg5OC41JSAwLjAwMiAyNDcuODM5KTtcbiAgICAtLWNvbG9yLWdyYXktMTAwOiBva2xjaCg5Ni43JSAwLjAwMyAyNjQuNTQyKTtcbiAgICAtLWNvbG9yLWdyYXktMjAwOiBva2xjaCg5Mi44JSAwLjAwNiAyNjQuNTMxKTtcbiAgICAtLWNvbG9yLWdyYXktMzAwOiBva2xjaCg4Ny4yJSAwLjAxIDI1OC4zMzgpO1xuICAgIC0tY29sb3ItZ3JheS00MDA6IG9rbGNoKDcwLjclIDAuMDIyIDI2MS4zMjUpO1xuICAgIC0tY29sb3ItZ3JheS01MDA6IG9rbGNoKDU1LjElIDAuMDI3IDI2NC4zNjQpO1xuICAgIC0tY29sb3ItZ3JheS02MDA6IG9rbGNoKDQ0LjYlIDAuMDMgMjU2LjgwMik7XG4gICAgLS1jb2xvci1ncmF5LTcwMDogb2tsY2goMzcuMyUgMC4wMzQgMjU5LjczMyk7XG4gICAgLS1jb2xvci1ncmF5LTgwMDogb2tsY2goMjcuOCUgMC4wMzMgMjU2Ljg0OCk7XG4gICAgLS1jb2xvci1ncmF5LTkwMDogb2tsY2goMjElIDAuMDM0IDI2NC42NjUpO1xuICAgIC0tY29sb3ItZ3JheS05NTA6IG9rbGNoKDEzJSAwLjAyOCAyNjEuNjkyKTtcblxuICAgIC0tY29sb3ItemluYy01MDogb2tsY2goOTguNSUgMCAwKTtcbiAgICAtLWNvbG9yLXppbmMtMTAwOiBva2xjaCg5Ni43JSAwLjAwMSAyODYuMzc1KTtcbiAgICAtLWNvbG9yLXppbmMtMjAwOiBva2xjaCg5MiUgMC4wMDQgMjg2LjMyKTtcbiAgICAtLWNvbG9yLXppbmMtMzAwOiBva2xjaCg4Ny4xJSAwLjAwNiAyODYuMjg2KTtcbiAgICAtLWNvbG9yLXppbmMtNDAwOiBva2xjaCg3MC41JSAwLjAxNSAyODYuMDY3KTtcbiAgICAtLWNvbG9yLXppbmMtNTAwOiBva2xjaCg1NS4yJSAwLjAxNiAyODUuOTM4KTtcbiAgICAtLWNvbG9yLXppbmMtNjAwOiBva2xjaCg0NC4yJSAwLjAxNyAyODUuNzg2KTtcbiAgICAtLWNvbG9yLXppbmMtNzAwOiBva2xjaCgzNyUgMC4wMTMgMjg1LjgwNSk7XG4gICAgLS1jb2xvci16aW5jLTgwMDogb2tsY2goMjcuNCUgMC4wMDYgMjg2LjAzMyk7XG4gICAgLS1jb2xvci16aW5jLTkwMDogb2tsY2goMjElIDAuMDA2IDI4NS44ODUpO1xuICAgIC0tY29sb3ItemluYy05NTA6IG9rbGNoKDE0LjElIDAuMDA1IDI4NS44MjMpO1xuXG4gICAgLS1jb2xvci1uZXV0cmFsLTUwOiBva2xjaCg5OC41JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC0xMDA6IG9rbGNoKDk3JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC0yMDA6IG9rbGNoKDkyLjIlIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTMwMDogb2tsY2goODclIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTQwMDogb2tsY2goNzAuOCUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtNTAwOiBva2xjaCg1NS42JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC02MDA6IG9rbGNoKDQzLjklIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTcwMDogb2tsY2goMzcuMSUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtODAwOiBva2xjaCgyNi45JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC05MDA6IG9rbGNoKDIwLjUlIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTk1MDogb2tsY2goMTQuNSUgMCAwKTtcblxuICAgIC0tY29sb3Itc3RvbmUtNTA6IG9rbGNoKDk4LjUlIDAuMDAxIDEwNi40MjMpO1xuICAgIC0tY29sb3Itc3RvbmUtMTAwOiBva2xjaCg5NyUgMC4wMDEgMTA2LjQyNCk7XG4gICAgLS1jb2xvci1zdG9uZS0yMDA6IG9rbGNoKDkyLjMlIDAuMDAzIDQ4LjcxNyk7XG4gICAgLS1jb2xvci1zdG9uZS0zMDA6IG9rbGNoKDg2LjklIDAuMDA1IDU2LjM2Nik7XG4gICAgLS1jb2xvci1zdG9uZS00MDA6IG9rbGNoKDcwLjklIDAuMDEgNTYuMjU5KTtcbiAgICAtLWNvbG9yLXN0b25lLTUwMDogb2tsY2goNTUuMyUgMC4wMTMgNTguMDcxKTtcbiAgICAtLWNvbG9yLXN0b25lLTYwMDogb2tsY2goNDQuNCUgMC4wMTEgNzMuNjM5KTtcbiAgICAtLWNvbG9yLXN0b25lLTcwMDogb2tsY2goMzcuNCUgMC4wMSA2Ny41NTgpO1xuICAgIC0tY29sb3Itc3RvbmUtODAwOiBva2xjaCgyNi44JSAwLjAwNyAzNC4yOTgpO1xuICAgIC0tY29sb3Itc3RvbmUtOTAwOiBva2xjaCgyMS42JSAwLjAwNiA1Ni4wNDMpO1xuICAgIC0tY29sb3Itc3RvbmUtOTUwOiBva2xjaCgxNC43JSAwLjAwNCA0OS4yNSk7XG5cbiAgICAtLWNvbG9yLWJsYWNrOiAjMDAwO1xuICAgIC0tY29sb3Itd2hpdGU6ICNmZmY7XG5cbiAgICAtLXNwYWNpbmc6IDAuMjVyZW07XG5cbiAgICAtLWJyZWFrcG9pbnQtc206IDQwcmVtO1xuICAgIC0tYnJlYWtwb2ludC1tZDogNDhyZW07XG4gICAgLS1icmVha3BvaW50LWxnOiA2NHJlbTtcbiAgICAtLWJyZWFrcG9pbnQteGw6IDgwcmVtO1xuICAgIC0tYnJlYWtwb2ludC0yeGw6IDk2cmVtO1xuXG4gICAgLS1jb250YWluZXItM3hzOiAxNnJlbTtcbiAgICAtLWNvbnRhaW5lci0yeHM6IDE4cmVtO1xuICAgIC0tY29udGFpbmVyLXhzOiAyMHJlbTtcbiAgICAtLWNvbnRhaW5lci1zbTogMjRyZW07XG4gICAgLS1jb250YWluZXItbWQ6IDI4cmVtO1xuICAgIC0tY29udGFpbmVyLWxnOiAzMnJlbTtcbiAgICAtLWNvbnRhaW5lci14bDogMzZyZW07XG4gICAgLS1jb250YWluZXItMnhsOiA0MnJlbTtcbiAgICAtLWNvbnRhaW5lci0zeGw6IDQ4cmVtO1xuICAgIC0tY29udGFpbmVyLTR4bDogNTZyZW07XG4gICAgLS1jb250YWluZXItNXhsOiA2NHJlbTtcbiAgICAtLWNvbnRhaW5lci02eGw6IDcycmVtO1xuICAgIC0tY29udGFpbmVyLTd4bDogODByZW07XG5cbiAgICAtLXRleHQteHM6IDAuNzVyZW07XG4gICAgLS10ZXh0LXhzLS1saW5lLWhlaWdodDogY2FsYygxIC8gMC43NSk7XG4gICAgLS10ZXh0LXNtOiAwLjg3NXJlbTtcbiAgICAtLXRleHQtc20tLWxpbmUtaGVpZ2h0OiBjYWxjKDEuMjUgLyAwLjg3NSk7XG4gICAgLS10ZXh0LWJhc2U6IDFyZW07XG4gICAgLS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0OiBjYWxjKDEuNSAvIDEpO1xuICAgIC0tdGV4dC1sZzogMS4xMjVyZW07XG4gICAgLS10ZXh0LWxnLS1saW5lLWhlaWdodDogY2FsYygxLjc1IC8gMS4xMjUpO1xuICAgIC0tdGV4dC14bDogMS4yNXJlbTtcbiAgICAtLXRleHQteGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDEuNzUgLyAxLjI1KTtcbiAgICAtLXRleHQtMnhsOiAxLjVyZW07XG4gICAgLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6IGNhbGMoMiAvIDEuNSk7XG4gICAgLS10ZXh0LTN4bDogMS44NzVyZW07XG4gICAgLS10ZXh0LTN4bC0tbGluZS1oZWlnaHQ6IGNhbGMoMi4yNSAvIDEuODc1KTtcbiAgICAtLXRleHQtNHhsOiAyLjI1cmVtO1xuICAgIC0tdGV4dC00eGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDIuNSAvIDIuMjUpO1xuICAgIC0tdGV4dC01eGw6IDNyZW07XG4gICAgLS10ZXh0LTV4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTZ4bDogMy43NXJlbTtcbiAgICAtLXRleHQtNnhsLS1saW5lLWhlaWdodDogMTtcbiAgICAtLXRleHQtN3hsOiA0LjVyZW07XG4gICAgLS10ZXh0LTd4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTh4bDogNnJlbTtcbiAgICAtLXRleHQtOHhsLS1saW5lLWhlaWdodDogMTtcbiAgICAtLXRleHQtOXhsOiA4cmVtO1xuICAgIC0tdGV4dC05eGwtLWxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgLS1mb250LXdlaWdodC10aGluOiAxMDA7XG4gICAgLS1mb250LXdlaWdodC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS1mb250LXdlaWdodC1saWdodDogMzAwO1xuICAgIC0tZm9udC13ZWlnaHQtbm9ybWFsOiA0MDA7XG4gICAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiAgICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gICAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XG4gICAgLS1mb250LXdlaWdodC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLWZvbnQtd2VpZ2h0LWJsYWNrOiA5MDA7XG5cbiAgICAtLXRyYWNraW5nLXRpZ2h0ZXI6IC0wLjA1ZW07XG4gICAgLS10cmFja2luZy10aWdodDogLTAuMDI1ZW07XG4gICAgLS10cmFja2luZy1ub3JtYWw6IDBlbTtcbiAgICAtLXRyYWNraW5nLXdpZGU6IDAuMDI1ZW07XG4gICAgLS10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tdHJhY2tpbmctd2lkZXN0OiAwLjFlbTtcblxuICAgIC0tbGVhZGluZy10aWdodDogMS4yNTtcbiAgICAtLWxlYWRpbmctc251ZzogMS4zNzU7XG4gICAgLS1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAgIC0tbGVhZGluZy1yZWxheGVkOiAxLjYyNTtcbiAgICAtLWxlYWRpbmctbG9vc2U6IDI7XG5cbiAgICAtLXJhZGl1cy14czogMC4xMjVyZW07XG4gICAgLS1yYWRpdXMtc206IDAuMjVyZW07XG4gICAgLS1yYWRpdXMtbWQ6IDAuMzc1cmVtO1xuICAgIC0tcmFkaXVzLWxnOiAwLjVyZW07XG4gICAgLS1yYWRpdXMteGw6IDAuNzVyZW07XG4gICAgLS1yYWRpdXMtMnhsOiAxcmVtO1xuICAgIC0tcmFkaXVzLTN4bDogMS41cmVtO1xuICAgIC0tcmFkaXVzLTR4bDogMnJlbTtcblxuICAgIC0tc2hhZG93LTJ4czogMCAxcHggcmdiKDAgMCAwIC8gMC4wNSk7XG4gICAgLS1zaGFkb3cteHM6IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tc2hhZG93LXNtOiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tc2hhZG93LW1kOlxuICAgICAgMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLXNoYWRvdy1sZzpcbiAgICAgIDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLXNoYWRvdy14bDpcbiAgICAgIDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC4xKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjI1KTtcblxuICAgIC0taW5zZXQtc2hhZG93LTJ4czogaW5zZXQgMCAxcHggcmdiKDAgMCAwIC8gMC4wNSk7XG4gICAgLS1pbnNldC1zaGFkb3cteHM6IGluc2V0IDAgMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgICAtLWluc2V0LXNoYWRvdy1zbTogaW5zZXQgMCAycHggNHB4IHJnYigwIDAgMCAvIDAuMDUpO1xuXG4gICAgLS1kcm9wLXNoYWRvdy14czogMCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tZHJvcC1zaGFkb3ctc206IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgICAtLWRyb3Atc2hhZG93LW1kOiAwIDNweCAzcHggcmdiKDAgMCAwIC8gMC4xMik7XG4gICAgLS1kcm9wLXNoYWRvdy1sZzogMCA0cHggNHB4IHJnYigwIDAgMCAvIDAuMTUpO1xuICAgIC0tZHJvcC1zaGFkb3cteGw6IDAgOXB4IDdweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tZHJvcC1zaGFkb3ctMnhsOiAwIDI1cHggMjVweCByZ2IoMCAwIDAgLyAwLjE1KTtcblxuICAgIC0tdGV4dC1zaGFkb3ctMnhzOiAwcHggMXB4IDBweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgICAtLXRleHQtc2hhZG93LXhzOiAwcHggMXB4IDFweCByZ2IoMCAwIDAgLyAwLjIpO1xuICAgIC0tdGV4dC1zaGFkb3ctc206XG4gICAgICAwcHggMXB4IDBweCByZ2IoMCAwIDAgLyAwLjA3NSksIDBweCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMDc1KSxcbiAgICAgIDBweCAycHggMnB4IHJnYigwIDAgMCAvIDAuMDc1KTtcbiAgICAtLXRleHQtc2hhZG93LW1kOlxuICAgICAgMHB4IDFweCAxcHggcmdiKDAgMCAwIC8gMC4xKSwgMHB4IDFweCAycHggcmdiKDAgMCAwIC8gMC4xKSxcbiAgICAgIDBweCAycHggNHB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS10ZXh0LXNoYWRvdy1sZzpcbiAgICAgIDBweCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDBweCAzcHggMnB4IHJnYigwIDAgMCAvIDAuMSksXG4gICAgICAwcHggNHB4IDhweCByZ2IoMCAwIDAgLyAwLjEpO1xuXG4gICAgLS1lYXNlLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAtLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAtLWVhc2UtaW4tb3V0OiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuXG4gICAgLS1hbmltYXRlLXNwaW46IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xuICAgIC0tYW5pbWF0ZS1waW5nOiBwaW5nIDFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIGluZmluaXRlO1xuICAgIC0tYW5pbWF0ZS1wdWxzZTogcHVsc2UgMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSBpbmZpbml0ZTtcbiAgICAtLWFuaW1hdGUtYm91bmNlOiBib3VuY2UgMXMgaW5maW5pdGU7XG5cbiAgICBAa2V5ZnJhbWVzIHNwaW4ge1xuICAgICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcGluZyB7XG4gICAgICA3NSUsXG4gICAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHB1bHNlIHtcbiAgICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGJvdW5jZSB7XG4gICAgICAwJSxcbiAgICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpO1xuICAgICAgfVxuXG4gICAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC0tYmx1ci14czogNHB4O1xuICAgIC0tYmx1ci1zbTogOHB4O1xuICAgIC0tYmx1ci1tZDogMTJweDtcbiAgICAtLWJsdXItbGc6IDE2cHg7XG4gICAgLS1ibHVyLXhsOiAyNHB4O1xuICAgIC0tYmx1ci0yeGw6IDQwcHg7XG4gICAgLS1ibHVyLTN4bDogNjRweDtcblxuICAgIC0tcGVyc3BlY3RpdmUtZHJhbWF0aWM6IDEwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtbmVhcjogMzAwcHg7XG4gICAgLS1wZXJzcGVjdGl2ZS1ub3JtYWw6IDUwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtbWlkcmFuZ2U6IDgwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtZGlzdGFudDogMTIwMHB4O1xuXG4gICAgLS1hc3BlY3QtdmlkZW86IDE2IC8gOTtcblxuICAgIC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcbiAgICAtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgLS1kZWZhdWx0LWZvbnQtZmFtaWx5OiAtLXRoZW1lKC0tZm9udC1zYW5zLCBpbml0aWFsKTtcbiAgICAtLWRlZmF1bHQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1mb250LXNhbnMtLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxcbiAgICAgIGluaXRpYWxcbiAgICApO1xuICAgIC0tZGVmYXVsdC1mb250LXZhcmlhdGlvbi1zZXR0aW5nczogLS10aGVtZShcbiAgICAgIC0tZm9udC1zYW5zLS1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxcbiAgICAgIGluaXRpYWxcbiAgICApO1xuICAgIC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OiAtLXRoZW1lKC0tZm9udC1tb25vLCBpbml0aWFsKTtcbiAgICAtLWRlZmF1bHQtbW9uby1mb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWZvbnQtbW9uby0tZm9udC1mZWF0dXJlLXNldHRpbmdzLFxuICAgICAgaW5pdGlhbFxuICAgICk7XG4gICAgLS1kZWZhdWx0LW1vbm8tZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWZvbnQtbW9uby0tZm9udC12YXJpYXRpb24tc2V0dGluZ3MsXG4gICAgICBpbml0aWFsXG4gICAgKTtcbiAgfVxuXG4gIC8qIERlcHJlY2F0ZWQgKi9cbiAgQHRoZW1lIGRlZmF1bHQgaW5saW5lIHJlZmVyZW5jZSB7XG4gICAgLS1ibHVyOiA4cHg7XG4gICAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tZHJvcC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wNik7XG4gICAgLS1yYWRpdXM6IDAuMjVyZW07XG4gICAgLS1tYXgtd2lkdGgtcHJvc2U6IDY1Y2g7XG4gIH1cbn1cblxuQGxheWVyIGJhc2Uge1xuICAvKlxuICAxLiBQcmV2ZW50IHBhZGRpbmcgYW5kIGJvcmRlciBmcm9tIGFmZmVjdGluZyBlbGVtZW50IHdpZHRoLiAoaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy80KVxuICAyLiBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zIGFuZCBwYWRkaW5nXG4gIDMuIFJlc2V0IGFsbCBib3JkZXJzLlxuKi9cblxuICAqLFxuICA6OmFmdGVyLFxuICA6OmJlZm9yZSxcbiAgOjpiYWNrZHJvcCxcbiAgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgIG1hcmdpbjogMDsgLyogMiAqL1xuICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgICBib3JkZXI6IDAgc29saWQ7IC8qIDMgKi9cbiAgfVxuXG4gIC8qXG4gIDEuIFVzZSBhIGNvbnNpc3RlbnQgc2Vuc2libGUgbGluZS1oZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAgMy4gVXNlIGEgbW9yZSByZWFkYWJsZSB0YWIgc2l6ZS5cbiAgNC4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mYW1pbHkgYnkgZGVmYXVsdC5cbiAgNS4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mZWF0dXJlLXNldHRpbmdzIGJ5IGRlZmF1bHQuXG4gIDYuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGJ5IGRlZmF1bHQuXG4gIDcuIERpc2FibGUgdGFwIGhpZ2hsaWdodHMgb24gaU9TLlxuKi9cblxuICBodG1sLFxuICA6aG9zdCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTsgLyogMSAqL1xuICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgIHRhYi1zaXplOiA0OyAvKiAzICovXG4gICAgZm9udC1mYW1pbHk6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtZm9udC1mYW1pbHksXG4gICAgICB1aS1zYW5zLXNlcmlmLFxuICAgICAgc3lzdGVtLXVpLFxuICAgICAgc2Fucy1zZXJpZixcbiAgICAgIFwiQXBwbGUgQ29sb3IgRW1vamlcIixcbiAgICAgIFwiU2Vnb2UgVUkgRW1vamlcIixcbiAgICAgIFwiU2Vnb2UgVUkgU3ltYm9sXCIsXG4gICAgICBcIk5vdG8gQ29sb3IgRW1vamlcIlxuICAgICk7IC8qIDQgKi9cbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtZm9udC1mZWF0dXJlLXNldHRpbmdzLFxuICAgICAgbm9ybWFsXG4gICAgKTsgLyogNSAqL1xuICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLFxuICAgICAgbm9ybWFsXG4gICAgKTsgLyogNiAqL1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDcgKi9cbiAgfVxuXG4gIC8qXG4gIDEuIEFkZCB0aGUgY29ycmVjdCBoZWlnaHQgaW4gRmlyZWZveC5cbiAgMi4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2Ugb2YgYm9yZGVyIGNvbG9yIGluIEZpcmVmb3guIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NTUpXG4gIDMuIFJlc2V0IHRoZSBkZWZhdWx0IGJvcmRlciBzdHlsZSB0byBhIDFweCBzb2xpZCBib3JkZXIuXG4qL1xuXG4gIGhyIHtcbiAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsgLyogMyAqL1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4qL1xuXG4gIGFiYnI6d2hlcmUoW3RpdGxlXSkge1xuICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgfVxuXG4gIC8qXG4gIFJlbW92ZSB0aGUgZGVmYXVsdCBmb250IHNpemUgYW5kIHdlaWdodCBmb3IgaGVhZGluZ3MuXG4qL1xuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8qXG4gIFJlc2V0IGxpbmtzIHRvIG9wdGltaXplIGZvciBvcHQtaW4gc3R5bGluZyBpbnN0ZWFkIG9mIG9wdC1vdXQuXG4qL1xuXG4gIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgfVxuXG4gIC8qXG4gIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBFZGdlIGFuZCBTYWZhcmkuXG4qL1xuXG4gIGIsXG4gIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgfVxuXG4gIC8qXG4gIDEuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtZmFtaWx5IGJ5IGRlZmF1bHQuXG4gIDIuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtZmVhdHVyZS1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICAzLiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBtb25vYCBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICA0LiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIGNvZGUsXG4gIGtiZCxcbiAgc2FtcCxcbiAgcHJlIHtcbiAgICBmb250LWZhbWlseTogLS10aGVtZShcbiAgICAgIC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LFxuICAgICAgdWktbW9ub3NwYWNlLFxuICAgICAgU0ZNb25vLVJlZ3VsYXIsXG4gICAgICBNZW5sbyxcbiAgICAgIE1vbmFjbyxcbiAgICAgIENvbnNvbGFzLFxuICAgICAgXCJMaWJlcmF0aW9uIE1vbm9cIixcbiAgICAgIFwiQ291cmllciBOZXdcIixcbiAgICAgIG1vbm9zcGFjZVxuICAgICk7IC8qIDEgKi9cbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtbW9uby1mb250LWZlYXR1cmUtc2V0dGluZ3MsXG4gICAgICBub3JtYWxcbiAgICApOyAvKiAyICovXG4gICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxcbiAgICAgIG5vcm1hbFxuICAgICk7IC8qIDMgKi9cbiAgICBmb250LXNpemU6IDFlbTsgLyogNCAqL1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbiAgfVxuXG4gIC8qXG4gIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIHN1YixcbiAgc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG4gIH1cblxuICBzdXAge1xuICAgIHRvcDogLTAuNWVtO1xuICB9XG5cbiAgLypcbiAgMS4gUmVtb3ZlIHRleHQgaW5kZW50YXRpb24gZnJvbSB0YWJsZSBjb250ZW50cyBpbiBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTk5OTA4OCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTI5NylcbiAgMi4gQ29ycmVjdCB0YWJsZSBib3JkZXIgY29sb3IgaW5oZXJpdGFuY2UgaW4gYWxsIENocm9tZSBhbmQgU2FmYXJpLiAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTM1NzI5LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MDE2KVxuICAzLiBSZW1vdmUgZ2FwcyBiZXR3ZWVuIHRhYmxlIGJvcmRlcnMgYnkgZGVmYXVsdC5cbiovXG5cbiAgdGFibGUge1xuICAgIHRleHQtaW5kZW50OiAwOyAvKiAxICovXG4gICAgYm9yZGVyLWNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgLyogMyAqL1xuICB9XG5cbiAgLypcbiAgVXNlIHRoZSBtb2Rlcm4gRmlyZWZveCBmb2N1cyBzdHlsZSBmb3IgYWxsIGZvY3VzYWJsZSBlbGVtZW50cy5cbiovXG5cbiAgOi1tb3otZm9jdXNyaW5nIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUgYW5kIEZpcmVmb3guXG4qL1xuXG4gIHByb2dyZXNzIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICAvKlxuICBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiovXG5cbiAgc3VtbWFyeSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICB9XG5cbiAgLypcbiAgTWFrZSBsaXN0cyB1bnN0eWxlZCBieSBkZWZhdWx0LlxuKi9cblxuICBvbCxcbiAgdWwsXG4gIG1lbnUge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cblxuICAvKlxuICAxLiBNYWtlIHJlcGxhY2VkIGVsZW1lbnRzIGBkaXNwbGF5OiBibG9ja2AgYnkgZGVmYXVsdC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTQpXG4gIDIuIEFkZCBgdmVydGljYWwtYWxpZ246IG1pZGRsZWAgdG8gYWxpZ24gcmVwbGFjZWQgZWxlbWVudHMgbW9yZSBzZW5zaWJseSBieSBkZWZhdWx0LiAoaHR0cHM6Ly9naXRodWIuY29tL2plbnNpbW1vbnMvY3NzcmVtZWR5L2lzc3Vlcy8xNCNpc3N1ZWNvbW1lbnQtNjM0OTM0MjEwKVxuICAgICAgVGhpcyBjYW4gdHJpZ2dlciBhIHBvb3JseSBjb25zaWRlcmVkIGxpbnQgZXJyb3IgaW4gc29tZSB0b29scyBidXQgaXMgaW5jbHVkZWQgYnkgZGVzaWduLlxuKi9cblxuICBpbWcsXG4gIHN2ZyxcbiAgdmlkZW8sXG4gIGNhbnZhcyxcbiAgYXVkaW8sXG4gIGlmcmFtZSxcbiAgZW1iZWQsXG4gIG9iamVjdCB7XG4gICAgZGlzcGxheTogYmxvY2s7IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiAyICovXG4gIH1cblxuICAvKlxuICBDb25zdHJhaW4gaW1hZ2VzIGFuZCB2aWRlb3MgdG8gdGhlIHBhcmVudCB3aWR0aCBhbmQgcHJlc2VydmUgdGhlaXIgaW50cmluc2ljIGFzcGVjdCByYXRpby4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTQpXG4qL1xuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAvKlxuICAxLiBJbmhlcml0IGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgMi4gUmVtb3ZlIGJvcmRlciByYWRpdXMgaW4gYWxsIGJyb3dzZXJzLlxuICAzLiBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBpbiBhbGwgYnJvd3NlcnMuXG4gIDQuIEVuc3VyZSBjb25zaXN0ZW50IG9wYWNpdHkgZm9yIGRpc2FibGVkIHN0YXRlcyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIHNlbGVjdCxcbiAgb3B0Z3JvdXAsXG4gIHRleHRhcmVhLFxuICA6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDsgLyogMSAqL1xuICAgIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gICAgYm9yZGVyLXJhZGl1czogMDsgLyogMiAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAzICovXG4gICAgb3BhY2l0eTogMTsgLyogNCAqL1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBkZWZhdWx0IGZvbnQgd2VpZ2h0LlxuKi9cblxuICA6d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sIFtzaXplXSkpIG9wdGdyb3VwIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBpbmRlbnRhdGlvbi5cbiovXG5cbiAgOndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLCBbc2l6ZV0pKSBvcHRncm91cCBvcHRpb24ge1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAyMHB4O1xuICB9XG5cbiAgLypcbiAgUmVzdG9yZSBzcGFjZSBhZnRlciBidXR0b24uXG4qL1xuXG4gIDo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA0cHg7XG4gIH1cblxuICAvKlxuICBSZXNldCB0aGUgZGVmYXVsdCBwbGFjZWhvbGRlciBvcGFjaXR5IGluIEZpcmVmb3guIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8zMzAwKVxuKi9cblxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLypcbiAgU2V0IHRoZSBkZWZhdWx0IHBsYWNlaG9sZGVyIGNvbG9yIHRvIGEgc2VtaS10cmFuc3BhcmVudCB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IHRleHQgY29sb3IgaW4gYnJvd3NlcnMgdGhhdCBkbyBub3RcbiAgY3Jhc2ggd2hlbiB1c2luZyBgY29sb3ItbWl4KOKApilgIHdpdGggYGN1cnJlbnRjb2xvcmAuIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8xNzE5NClcbiovXG5cbiAgQHN1cHBvcnRzIChub3QgKC13ZWJraXQtYXBwZWFyYW5jZTogLWFwcGxlLXBheS1idXR0b24pKSAvKiBOb3QgU2FmYXJpICovIG9yXG4gICAgKGNvbnRhaW4taW50cmluc2ljLXNpemU6IDFweCkgLyogU2FmYXJpIDE3KyAqLyB7XG4gICAgOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogY29sb3ItbWl4KGluIG9rbGFiLCBjdXJyZW50Y29sb3IgNTAlLCB0cmFuc3BhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgUHJldmVudCByZXNpemluZyB0ZXh0YXJlYXMgaG9yaXpvbnRhbGx5IGJ5IGRlZmF1bHQuXG4qL1xuXG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLypcbiAgUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuKi9cblxuICA6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8qXG4gIDEuIEVuc3VyZSBkYXRlL3RpbWUgaW5wdXRzIGhhdmUgdGhlIHNhbWUgaGVpZ2h0IHdoZW4gZW1wdHkgaW4gaU9TIFNhZmFyaS5cbiAgMi4gRW5zdXJlIHRleHQgYWxpZ25tZW50IGNhbiBiZSBjaGFuZ2VkIG9uIGRhdGUvdGltZSBpbnB1dHMgaW4gaU9TIFNhZmFyaS5cbiovXG5cbiAgOjotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWUge1xuICAgIG1pbi1oZWlnaHQ6IDFsaDsgLyogMSAqL1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7IC8qIDIgKi9cbiAgfVxuXG4gIC8qXG4gIFByZXZlbnQgaGVpZ2h0IGZyb20gY2hhbmdpbmcgb24gZGF0ZS90aW1lIGlucHV0cyBpbiBtYWNPUyBTYWZhcmkgd2hlbiB0aGUgaW5wdXQgaXMgc2V0IHRvIGBkaXNwbGF5OiBibG9ja2AuXG4qL1xuXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfVxuXG4gIC8qXG4gIFJlbW92ZSBleGNlc3MgcGFkZGluZyBmcm9tIHBzZXVkby1lbGVtZW50cyBpbiBkYXRlL3RpbWUgaW5wdXRzIHRvIGVuc3VyZSBjb25zaXN0ZW50IGhlaWdodCBhY3Jvc3MgYnJvd3NlcnMuXG4qL1xuXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25kLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGQge1xuICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gIH1cblxuICAvKlxuICBSZW1vdmUgdGhlIGFkZGl0aW9uYWwgYDppbnZhbGlkYCBzdHlsZXMgaW4gRmlyZWZveC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi9ibG9iLzJmOWVhY2Q5ZDNkOTk1YzkzN2I0MjUxYTU1NTdkOTVkNDk0YzliZTEvbGF5b3V0L3N0eWxlL3Jlcy9mb3Jtcy5jc3MjTDcyOC1MNzM3KVxuKi9cblxuICA6LW1vei11aS1pbnZhbGlkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLypcbiAgQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIHRoZSBib3JkZXIgcmFkaXVzIGluIGlPUyBTYWZhcmkuXG4qL1xuXG4gIGJ1dHRvbixcbiAgaW5wdXQ6d2hlcmUoW3R5cGU9XCJidXR0b25cIl0sIFt0eXBlPVwicmVzZXRcIl0sIFt0eXBlPVwic3VibWl0XCJdKSxcbiAgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLypcbiAgQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gU2FmYXJpLlxuKi9cblxuICA6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLypcbiAgTWFrZSBlbGVtZW50cyB3aXRoIHRoZSBIVE1MIGhpZGRlbiBhdHRyaWJ1dGUgc3RheSBoaWRkZW4gYnkgZGVmYXVsdC5cbiovXG5cbiAgW2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPVwidW50aWwtZm91bmRcIl0pKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBsYXllciB1dGlsaXRpZXMge1xuICBAdGFpbHdpbmQgdXRpbGl0aWVzO1xufVxuIiwiLyogQWJvdXQgUGFnZSBTdHlsZXMgLSBGb2xsb3dpbmcgQm91bmRsZXNzIEJyYW5kIFN0YW5kYXJkcyAqL1xuXG4vKiBBYm91dCBQYWdlIENvbnRhaW5lciAqL1xuLmFib3V0LXBhZ2Uge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG59XG5cbi8qIEhlcm8gU2VjdGlvbiBTcGVjaWZpYyBTdHlsZXMgKi9cbi5hYm91dC1oZXJvLWJhY2tncm91bmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMDIpIDAlLCB0cmFuc3BhcmVudCAxMDAlKTtcbiAgei1pbmRleDogMTtcbn1cblxuLmFib3V0LWhlcm8tY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbn1cblxuLyogU3RvcnkgU2VjdGlvbiBUaW1lbGluZSAqL1xuLmFib3V0LXN0b3J5LXRpbWVsaW5lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWJvdXQtc3RvcnktdGltZWxpbmU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDJyZW07XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uYWJvdXQtc3RvcnktY2hhcHRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xufVxuXG4uYWJvdXQtc3RvcnkteWVhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogNHJlbTtcbiAgaGVpZ2h0OiA0cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLyogVmlzaW9uICYgTWlzc2lvbiBDYXJkcyAqL1xuLmFib3V0LXZpc2lvbi1jYXJkLFxuLmFib3V0LW1pc3Npb24tY2FyZCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXZpc2lvbi1jYXJkOmhvdmVyLFxuLmFib3V0LW1pc3Npb24tY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLyogQ29yZSBWYWx1ZXMgR3JpZCAqL1xuLmFib3V0LXZhbHVlcy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gIGdhcDogMnJlbTtcbn1cblxuLmFib3V0LXZhbHVlLWNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4uYWJvdXQtdmFsdWUtY2FyZC5mZWF0dXJlZCB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSh2YXIoLS1jb2xvci1oZXJpdGFnZS1yZ2IpLCAwLjE1KTtcbn1cblxuLmFib3V0LXZhbHVlLWV4YW1wbGUge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tdXRlZCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLyogVGVhbSBNZW1iZXIgQ2FyZHMgKi9cbi5hYm91dC10ZWFtLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbiAgZ2FwOiAycmVtO1xufVxuXG4uYWJvdXQtdGVhbS1tZW1iZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXRlYW0tbWVtYmVyOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4uYWJvdXQtdGVhbS1hdmF0YXIge1xuICB3aWR0aDogNnJlbTtcbiAgaGVpZ2h0OiA2cmVtO1xuICBtYXJnaW46IDAgYXV0byAxcmVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG59XG5cbi5hYm91dC10ZWFtLWF2YXRhciBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmFib3V0LXRlYW0tZXhwZXJ0aXNlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi5hYm91dC1leHBlcnRpc2UtdGFnIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmFib3V0LXRlYW0tc29jaWFsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMC43NXJlbTtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbn1cblxuLmFib3V0LXNvY2lhbC1saW5rIHtcbiAgd2lkdGg6IDIuNXJlbTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLmFib3V0LXNvY2lhbC1saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMik7XG59XG5cbi8qIE1pbGVzdG9uZXMgVGltZWxpbmUgKi9cbi5hYm91dC1taWxlc3RvbmVzLXRpbWVsaW5lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDNyZW07XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IDNyZW07XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTIuNXJlbTtcbiAgdG9wOiAwLjVyZW07XG4gIHdpZHRoOiAwLjc1cmVtO1xuICBoZWlnaHQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4uYWJvdXQtbWlsZXN0b25lLWl0ZW06OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTIuMTI1cmVtO1xuICB0b3A6IDEuMjVyZW07XG4gIGJvdHRvbTogLTNyZW07XG4gIHdpZHRoOiAycHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5hYm91dC1taWxlc3RvbmUtaXRlbTpsYXN0LWNoaWxkOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5hYm91dC1taWxlc3RvbmUtY29udGVudCB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItbXV0ZWQtcmdiKSwgMC4zKTtcbiAgcGFkZGluZzogMS41cmVtO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4vKiBNZXRyaWNzIERpc3BsYXkgKi9cbi5hYm91dC1tZXRyaWNzLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgZ2FwOiAycmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtdmFsdWUge1xuICBmb250LXNpemU6IDNyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1oZXJpdGFnZSk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtbGFiZWwge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5hYm91dC1tZXRyaWMtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogQWNoaWV2ZW1lbnRzIEdyaWQgKi9cbi5hYm91dC1hY2hpZXZlbWVudHMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IDJyZW07XG4gIG1hcmdpbi10b3A6IDJyZW07XG59XG5cbi5hYm91dC1hY2hpZXZlbWVudC1jYXJkIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxLjVyZW07XG59XG5cbi5hYm91dC1hY2hpZXZlbWVudC1pY29uIHtcbiAgd2lkdGg6IDRyZW07XG4gIGhlaWdodDogNHJlbTtcbiAgbWFyZ2luOiAwIGF1dG8gMXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4uYWJvdXQtYWNoaWV2ZW1lbnQtY2FyZC5mZWF0dXJlZCAuYWJvdXQtYWNoaWV2ZW1lbnQtaWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItaGVyaXRhZ2UtcmdiKSwgMC4xKTtcbn1cblxuLyogVGVzdGltb25pYWwgQ2FyZHMgKi9cbi5hYm91dC10ZXN0aW1vbmlhbC1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IDJyZW07XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLWNhcmQuZmVhdHVyZWQge1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1oZXJpdGFnZSk7XG4gIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEodmFyKC0tY29sb3ItaGVyaXRhZ2UtcmdiKSwgMC4xKTtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLXF1b3RlIHtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtYXV0aG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxcmVtO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtYXZhdGFyIHtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogM3JlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1tdXRlZCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtaW5mbyB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLmFib3V0LXRlc3RpbW9uaWFsLW5hbWUge1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xufVxuXG4uYWJvdXQtdGVzdGltb25pYWwtcm9sZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogQ2FyZWVycyBDVEEgU2VjdGlvbiAqL1xuLmFib3V0LWNhcmVlcnMtc2VjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudC1saWdodCk7XG4gIHBhZGRpbmc6IDRyZW0gMDtcbn1cblxuLmFib3V0LWNhcmVlcnMtYmVuZWZpdHMsXG4uYWJvdXQtY2FyZWVycy1jdWx0dXJlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBwYWRkaW5nOiAxLjVyZW07XG59XG5cbi5hYm91dC1jYXJlZXJzLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIHNwYWNlLXk6IDAuNzVyZW07XG59XG5cbi5hYm91dC1jYXJlZXJzLWxpc3QtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLmFib3V0LWNhcmVlcnMtY3RhLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDFyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDJyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuYWJvdXQtY2FyZWVycy1jdGEtYnV0dG9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4vKiBGaW5hbCBDVEEgU2VjdGlvbiAqL1xuLmFib3V0LWZpbmFsLWN0YSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDZyZW0gMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYWJvdXQtZmluYWwtY3RhLXRpdGxlIHtcbiAgY29sb3I6IHdoaXRlO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5hYm91dC1maW5hbC1jdGEtZGVzY3JpcHRpb24ge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4uYWJvdXQtZmluYWwtY3RhLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDFyZW07XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuYWJvdXQtZmluYWwtY3RhLWJ1dHRvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLmFib3V0LWZpbmFsLWN0YS10cnVzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMS41cmVtO1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4uYWJvdXQtdHJ1c3QtaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8qIE1vYmlsZSBSZXNwb25zaXZlbmVzcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5hYm91dC1zdG9yeS10aW1lbGluZTo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG4gIFxuICAuYWJvdXQtc3RvcnktY2hhcHRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICB9XG4gIFxuICAuYWJvdXQtc3RvcnkteWVhciB7XG4gICAgd2lkdGg6IDNyZW07XG4gICAgaGVpZ2h0OiAzcmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIH1cbiAgXG4gIC5hYm91dC12YWx1ZXMtZ3JpZCxcbiAgLmFib3V0LXRlYW0tZ3JpZCxcbiAgLmFib3V0LWFjaGlldmVtZW50cy1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuICBcbiAgLmFib3V0LW1ldHJpY3MtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiAxLjVyZW07XG4gIH1cbiAgXG4gIC5hYm91dC1tZXRyaWMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICB9XG4gIFxuICAuYWJvdXQtbWlsZXN0b25lcy10aW1lbGluZSB7XG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xuICB9XG4gIFxuICAuYWJvdXQtbWlsZXN0b25lLWl0ZW06OmJlZm9yZSB7XG4gICAgbGVmdDogLTEuNXJlbTtcbiAgfVxuICBcbiAgLmFib3V0LW1pbGVzdG9uZS1pdGVtOjphZnRlciB7XG4gICAgbGVmdDogLTEuMTI1cmVtO1xuICB9XG59XG5cbi8qIFRhYmxldCBBZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5hYm91dC12YWx1ZXMtZ3JpZCxcbiAgLmFib3V0LXRlYW0tZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxuICBcbiAgLmFib3V0LW1ldHJpY3MtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxufVxuXG4vKiBQV0EgU2Nyb2xsIEFuaW1hdGlvbiBFbmhhbmNlbWVudHMgZm9yIEFib3V0IFBhZ2UgKi9cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLWZhZGUge1xuICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAxMDBtcyk7XG59XG5cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQge1xuICBhbmltYXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiAxNTBtcyk7XG59XG5cbi5hYm91dC1wYWdlIC5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0IHtcbiAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogMTUwbXMpO1xufVxuXG4vKiBQcmludCBTdHlsZXMgKi9cbkBtZWRpYSBwcmludCB7XG4gIC5hYm91dC1wYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgfVxuICBcbiAgLmFib3V0LWhlcm8tYmFja2dyb3VuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLmFib3V0LXRlYW0tc29jaWFsLFxuICAuYWJvdXQtY2FyZWVycy1jdGEtYnV0dG9ucyxcbiAgLmFib3V0LWZpbmFsLWN0YS1idXR0b25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuYWJvdXQtcGFnZSBzZWN0aW9uIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbn0iLCIvKipcbiAqIEJyZWFkY3J1bWIgQ29tcG9uZW50IFN0eWxlc1xuICogRm9sbG93aW5nIHRoZSB0aHJlZS1sYXllciBDU1MgYXJjaGl0ZWN0dXJlXG4gKi9cblxuLyogQ29tcG9uZW50IEVuaGFuY2VtZW50IExheWVyICovXG4uYnJlYWRjcnVtYi1uYXYge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBmb250LXNpemU6IHZhcigtLXRleHQtc20pO1xufVxuXG4uYnJlYWRjcnVtYi1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5icmVhZGNydW1iLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uYnJlYWRjcnVtYi1saW5rIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5icmVhZGNydW1iLWxpbms6aG92ZXIge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5icmVhZGNydW1iLWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4uYnJlYWRjcnVtYi1jdXJyZW50IHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0KSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5icmVhZGNydW1iLXNlcGFyYXRvciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1tdXRlZCkpO1xufVxuXG4uYnJlYWRjcnVtYi1zZXBhcmF0b3ItaWNvbiB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG59XG5cbi8qIE1vYmlsZSBPcHRpbWl6YXRpb24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuYnJlYWRjcnVtYi1uYXYge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgfVxuICBcbiAgLmJyZWFkY3J1bWItbGlzdCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbiAgfVxuICBcbiAgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbiAgfVxuICBcbiAgLyogSGlkZSBpbnRlcm1lZGlhdGUgaXRlbXMgb24gbW9iaWxlLCBzaG93IG9ubHkgZmlyc3QgYW5kIGxhc3QgKi9cbiAgLmJyZWFkY3J1bWItaXRlbTpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAvKiBTaG93IGVsbGlwc2lzIGJldHdlZW4gZmlyc3QgYW5kIGxhc3Qgb24gbW9iaWxlICovXG4gIC5icmVhZGNydW1iLWl0ZW06Zmlyc3QtY2hpbGQ6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIi4uLlwiO1xuICAgIG1hcmdpbjogMCB2YXIoLS1zcGFjZS0yKTtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpKTtcbiAgfVxuICBcbiAgLyogRG9uJ3Qgc2hvdyBlbGxpcHNpcyBpZiBvbmx5IHR3byBpdGVtcyAqL1xuICAuYnJlYWRjcnVtYi1pdGVtOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKDIpOjphZnRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuYnJlYWRjcnVtYi1uYXYge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlLWRhcmspKTtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyLWRhcmspKTtcbiAgfVxuICBcbiAgLmJyZWFkY3J1bWItbGluayB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeS1kYXJrKSk7XG4gIH1cbiAgXG4gIC5icmVhZGNydW1iLWxpbms6aG92ZXIge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKSk7XG4gIH1cbiAgXG4gIC5icmVhZGNydW1iLWN1cnJlbnQge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1kYXJrKSk7XG4gIH1cbn1cblxuLyogUHJpbnQgc3R5bGVzICovXG5AbWVkaWEgcHJpbnQge1xuICAuYnJlYWRjcnVtYi1uYXYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn0iLCIvKipcbiAqIEJ1dHRvbiBDb21wb25lbnQgRW5oYW5jZW1lbnQgU3R5bGVzXG4gKiBcbiAqIExheWVyIDI6IENvbXBvbmVudC1zcGVjaWZpYyBlbmhhbmNlbWVudHMgdGhhdCBidWlsZCBvbiB0aGUgZm91bmRhdGlvblxuICogYnV0dG9uIHN0eWxlcyBmcm9tIHNyYy9pbmRleC5jc3NcbiAqIFxuICogSU1QT1JUQU5UOiBUaGlzIGZpbGUgb25seSBjb250YWlucyBjb21wb25lbnQtc3BlY2lmaWMgZW5oYW5jZW1lbnRzLlxuICogQmFzZSBidXR0b24gc3R5bGVzICguYnRuLCAuYnRuLWhlcml0YWdlLCBldGMuKSBhcmUgZGVmaW5lZCBpbiBpbmRleC5jc3NcbiAqL1xuXG4vKiBCdXR0b24gdGV4dCBzdHlsaW5nIGZvciBjb25zaXN0ZW5jeSAqL1xuLmJ0bi10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4vKiBJY29uIGNvbnRhaW5lciBhZGp1c3RtZW50cyB3aXRoaW4gYnV0dG9ucyAqL1xuLmJ0biAuaWNvbi1jb250YWluZXIteHMsXG4uYnRuIC5pY29uLWNvbnRhaW5lci1zbSB7XG4gIC8qIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBpY29uIGNvbnRhaW5lcnMgaW5zaWRlIGJ1dHRvbnMgKi9cbiAgbWFyZ2luOiAwO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogQnV0dG9uIHdpdGggaWNvbiBzcGFjaW5nICovXG4uYnRuIC5pY29uLWNvbnRhaW5lci14cyArIC5idG4tdGV4dCxcbi5idG4gLmljb24tY29udGFpbmVyLXNtICsgLmJ0bi10ZXh0IHtcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uYnRuIC5idG4tdGV4dCArIC5pY29uLWNvbnRhaW5lci14cyxcbi5idG4gLmJ0bi10ZXh0ICsgLmljb24tY29udGFpbmVyLXNtIHtcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBGdWxsIHdpZHRoIGJ1dHRvbiAqL1xuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmJ0bi1sb2FkaW5nLXNwaW5uZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmxvYWRpbmctZG90cyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG4ubG9hZGluZy1kb3Qge1xuICB3aWR0aDogNnB4O1xuICBoZWlnaHQ6IDZweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIG9wYWNpdHk6IDAuMztcbiAgYW5pbWF0aW9uOiBwdWxzZSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG4ubG9hZGluZy1kb3Q6bnRoLWNoaWxkKDIpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjJzO1xufVxuXG4ubG9hZGluZy1kb3Q6bnRoLWNoaWxkKDMpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjRzO1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUsIDYwJSwgMTAwJSB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgfVxufVxuXG4vKiBEaXNhYmxlZCBzdGF0ZSBlbmhhbmNlbWVudHMgKi9cbi5idG4tZGlzYWJsZWQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5idG4tZGlzYWJsZWQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIFRvdWNoIGZlZWRiYWNrIGZvciBtb2JpbGUgLSBpbnRlZ3JhdGVzIHdpdGggYW5pbWF0aW9uIHN0YW5kYXJkICovXG4udG91Y2gtc2NhbGUge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIGVhc2Utb3V0O1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4udG91Y2gtc2NhbGU6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk2KTtcbn1cblxuLyogRW5oYW5jZWQgaG92ZXIgc3RhdGVzIHdpdGggUFdBIGFuaW1hdGlvbnMgKi9cbi5idG4ge1xuICAvKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gZm9yIHNtb290aCBhbmltYXRpb25zICovXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5idG46aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5idG4tZGlzYWJsZWQpIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4uYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKTpub3QoLmJ0bi1kaXNhYmxlZCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi8qIFJlbW92ZSB3aWxsLWNoYW5nZSBhZnRlciBhbmltYXRpb24gKi9cbi5idG46bm90KDpob3Zlcik6bm90KDpmb2N1cyk6bm90KDphY3RpdmUpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIEZvY3VzIHN0YXRlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuLmJ0bjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4vKiBJY29uLW9ubHkgYnV0dG9uIGFkanVzdG1lbnRzICovXG4uYnRuOmhhcyguaWNvbi1jb250YWluZXIteHMpOm5vdCg6aGFzKC5idG4tdGV4dCkpLFxuLmJ0bjpoYXMoLmljb24tY29udGFpbmVyLXNtKTpub3QoOmhhcyguYnRuLXRleHQpKSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICBtaW4td2lkdGg6IDQ4cHg7IC8qIE1haW50YWluIHRvdWNoIHRhcmdldCAqL1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIE1vYmlsZS1zcGVjaWZpYyBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuYnRuIHtcbiAgICAvKiBFbnN1cmUgbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbiAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgIFxuICAgIC8qIFByZXZlbnQgaU9TIHpvb20gb24gdGFwICovXG4gICAgZm9udC1zaXplOiBtYXgoMXJlbSwgMTZweCk7XG4gIH1cbiAgXG4gIC8qIExhcmdlciB0b3VjaCBhcmVhIGZvciBpY29uIGJ1dHRvbnMgKi9cbiAgLmJ0bjpoYXMoLmljb24tY29udGFpbmVyLXhzKTpub3QoOmhhcyguYnRuLXRleHQpKSxcbiAgLmJ0bjpoYXMoLmljb24tY29udGFpbmVyLXNtKTpub3QoOmhhcyguYnRuLXRleHQpKSB7XG4gICAgbWluLXdpZHRoOiA1MnB4O1xuICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gIH1cbiAgXG4gIC8qIEVuaGFuY2VkIHRvdWNoIGZlZWRiYWNrICovXG4gIC50b3VjaC1zY2FsZTphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NCk7XG4gIH1cbn1cblxuLyogVGFibGV0IGVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5idG4ge1xuICAgIC8qIFNsaWdodGx5IHJlZHVjZWQgbWluaW11bSBoZWlnaHQgKi9cbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xuICB9XG59XG5cbi8qIERlc2t0b3AgcmVmaW5lbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmJ0biB7XG4gICAgLyogU3RhbmRhcmQgZGVza3RvcCBtaW5pbXVtICovXG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgaG92ZXIgZWZmZWN0cyAqL1xuICAuYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdCguYnRuLWRpc2FibGVkKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICB9XG4gIFxuICAvKiBJY29uLW9ubHkgYnV0dG9ucyBjYW4gYmUgc21hbGxlciBvbiBkZXNrdG9wICovXG4gIC5idG46aGFzKC5pY29uLWNvbnRhaW5lci14cyk6bm90KDpoYXMoLmJ0bi10ZXh0KSksXG4gIC5idG46aGFzKC5pY29uLWNvbnRhaW5lci1zbSk6bm90KDpoYXMoLmJ0bi10ZXh0KSkge1xuICAgIG1pbi13aWR0aDogNDBweDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiBkaXNwbGF5IGVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdCguYnRuLWRpc2FibGVkKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5idG4ge1xuICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLmxvYWRpbmctZG90IHtcbiAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLnRvdWNoLXNjYWxlOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAuYnRuIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5idG46Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogM3B4O1xuICB9XG59IiwiLyogQnV0dG9uIENvbXBvbmVudCBFbmhhbmNlbWVudHMgLSBGTEFUIERFU0lHTiAyMDI1ICovXG4vKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIGJ1dHRvbiBlbmhhbmNlbWVudHMgb25seSAtIGJyYW5kIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzICovXG4vKiBJTVBPUlRBTlQ6IFRoZXNlIGNsYXNzZXMgd29yayBXSVRIIGJyYW5kIGJ1dHRvbiBjbGFzc2VzICguYnRuLXByaW1hcnksIC5idG4tc2Vjb25kYXJ5LCBldGMuKSAqL1xuXG4vKiBCdXR0b24gTG9hZGluZyBTdGF0ZSBFbmhhbmNlbWVudCAqL1xuLmJ0bi1sb2FkaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYnRuLWxvYWRpbmc6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luLXRvcDogLTAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYW5pbWF0aW9uOiBidG4tc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgYnRuLXNwaW4ge1xuICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbi8qIEJ1dHRvbiBJY29uIFNwYWNpbmcgKi9cbi5idG4taWNvbi1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5idG4taWNvbi1yaWdodCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi8qIEJ1dHRvbiBTaXplIEVuaGFuY2VtZW50cyAqL1xuLmJ0bi14cyB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5idG4tc20ge1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmJ0bi1tZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmJ0bi1sZyB7XG4gIHBhZGRpbmc6IDFyZW0gMS41cmVtO1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi5idG4teGwge1xuICBwYWRkaW5nOiAxLjI1cmVtIDJyZW07XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG59XG5cbi8qIEJ1dHRvbiBXaWR0aCBVdGlsaXRpZXMgKi9cbi5idG4tZnVsbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmJ0bi1hdXRvIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi8qIFJlc3BvbnNpdmUgQnV0dG9uIFV0aWxpdGllcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gIC5idG4tcmVzcG9uc2l2ZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cbiIsIi8qKlxuICogRE8gTk9UIFJFTU9WRSAtIExMTSBBcmNoaXRlY3R1cmUgRG9jdW1lbnRhdGlvblxuICogXG4gKiBJTVBPUlRBTlQ6IFRoaXMgQ1NTIGZpbGUgY29udGFpbnMgQUxMIGRlZmF1bHQgc3R5bGVzIGZvciB0aGUgQ2FwYWJpbGl0aWVzIGNvbXBvbmVudC5cbiAqIFxuICogLSBUaGlzIGZpbGUgc2hvdWxkIE5PVCBiZSBtb2RpZmllZCBmcm9tIGNvbXBvbmVudCBmaWxlcyAtIHRoZXkgcmVmZXJlbmNlIHRoZXNlIGNsYXNzZXNcbiAqIC0gQWxsIGNvbXBvbmVudCBzdHlsaW5nIHNob3VsZCBiZSBoYW5kbGVkIGhlcmUgdGhyb3VnaCBDU1MgY2xhc3Nlc1xuICogLSBjb21wb25lbnRTdHlsZXMudHMgaXMgb25seSBmb3IgcGFnZS1sZXZlbCBvdmVycmlkZXMsIG5vdCBkZWZhdWx0c1xuICogLSBUaGlzIGVuc3VyZXMgY29uc2lzdGVudCBzdHlsaW5nIGFuZCBiZXR0ZXIgcGVyZm9ybWFuY2VcbiAqIFxuICogQ1NTIFZhcmlhYmxlcyAoQ3VzdG9tIFByb3BlcnRpZXMpOlxuICogLSBVc2UgQ1NTIHZhcmlhYmxlcyBmb3IgdmFsdWVzIHRoYXQgbWlnaHQgY2hhbmdlIGJhc2VkIG9uIHRoZW1lIG9yIGNvbnRleHRcbiAqIC0gVmFyaWFibGVzIHNob3VsZCBoYXZlIHNlbnNpYmxlIGRlZmF1bHRzIHRoYXQgd29yayBpbiBib3RoIGxpZ2h0IGFuZCBkYXJrIHRoZW1lc1xuICogLSBUaGlzIHByb3ZpZGVzIGJldHRlciBtYWludGFpbmFiaWxpdHkgYW5kIHRoZW1lIGNvbnNpc3RlbmN5XG4gKi9cblxuLyogQ29tcG9uZW50IFZhcmlhYmxlcyAqL1xuOnJvb3Qge1xuICAvKiBMYXlvdXQgdmFyaWFibGVzICovXG4gIC0tY2FwYWJpbGl0aWVzLXBhZGRpbmc6IDVyZW0gMDtcbiAgLS1jYXBhYmlsaXRpZXMtZ3JpZC1jb2xzOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMDBweCwgMWZyKSk7XG4gIC0tY2FwYWJpbGl0aWVzLWdyaWQtZ2FwOiAycmVtO1xuXG4gIC8qIFR5cG9ncmFwaHkgdmFyaWFibGVzICovXG4gIC0tY2FwYWJpbGl0aWVzLXRpdGxlLXNpemU6IDIuMjVyZW07XG4gIC0tY2FwYWJpbGl0aWVzLXRpdGxlLXdlaWdodDogNzAwO1xuICAtLWNhcGFiaWxpdGllcy10aXRsZS1jb2xvcjogIzBmMTcyYTtcbiAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtY29sb3ItZGFyazogI2ZmZmZmZjtcbiAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtbWFyZ2luOiAwIDAgMXJlbSAwO1xuXG4gIC0tY2FwYWJpbGl0aWVzLWRlc2Mtc2l6ZTogMS4yNXJlbTtcbiAgLS1jYXBhYmlsaXRpZXMtZGVzYy1jb2xvcjogIzQ3NTU2OTtcbiAgLS1jYXBhYmlsaXRpZXMtZGVzYy1jb2xvci1kYXJrOiAjY2JkNWUxO1xuICAtLWNhcGFiaWxpdGllcy1kZXNjLW1hcmdpbjogMCAwIDRyZW0gMDtcbn1cblxuLyogTWFpbiBjb21wb25lbnQgY29udGFpbmVyICovXG4uY2FwYWJpbGl0aWVzIHtcbiAgcGFkZGluZzogdmFyKC0tY2FwYWJpbGl0aWVzLXBhZGRpbmcpO1xuICAvKiBSZW1vdmUgYmFja2dyb3VuZCBvdmVycmlkZXMgLSB1c2UgZ2xvYmFsIHNlY3Rpb24gYmFja2dyb3VuZCAqL1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7XG59XG5cbi8qIFJlbW92ZSBkYXJrIHRoZW1lIGJhY2tncm91bmQgb3ZlcnJpZGUgLSB1c2UgZ2xvYmFsIHNlY3Rpb24gc3R5bGluZyAqL1xuXG4vKiBDb250YWluZXIgZm9yIGFsbCBjb250ZW50ICovXG4uY2FwYWJpbGl0aWVzX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDgwcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCAxLjVyZW07XG59XG5cbi8qIEhlYWRlciBzZWN0aW9uIHdpdGggdGl0bGUgYW5kIGRlc2NyaXB0aW9uICovXG4uY2FwYWJpbGl0aWVzX19oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDRyZW07XG59XG5cbi8qIFRpdGxlIHN0eWxpbmcgKi9cbi5jYXBhYmlsaXRpZXNfX3RpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1jYXBhYmlsaXRpZXMtdGl0bGUtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jYXBhYmlsaXRpZXMtdGl0bGUtd2VpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWNhcGFiaWxpdGllcy10aXRsZS1jb2xvcik7XG4gIG1hcmdpbjogdmFyKC0tY2FwYWJpbGl0aWVzLXRpdGxlLW1hcmdpbik7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5kYXJrIC5jYXBhYmlsaXRpZXNfX3RpdGxlIHtcbiAgY29sb3I6IHZhcigtLWNhcGFiaWxpdGllcy10aXRsZS1jb2xvci1kYXJrKTtcbn1cblxuLyogRGVzY3JpcHRpb24gc3R5bGluZyAqL1xuLmNhcGFiaWxpdGllc19fZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLWNhcGFiaWxpdGllcy1kZXNjLXNpemUpO1xuICBjb2xvcjogdmFyKC0tY2FwYWJpbGl0aWVzLWRlc2MtY29sb3IpO1xuICBtYXJnaW46IHZhcigtLWNhcGFiaWxpdGllcy1kZXNjLW1hcmdpbik7XG4gIG1heC13aWR0aDogNDhyZW07XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbn1cblxuLmRhcmsgLmNhcGFiaWxpdGllc19fZGVzY3JpcHRpb24ge1xuICBjb2xvcjogdmFyKC0tY2FwYWJpbGl0aWVzLWRlc2MtY29sb3ItZGFyayk7XG59XG5cbi8qIEdyaWQgbGF5b3V0IGZvciBjYXBhYmlsaXR5IGNhcmRzICovXG4uY2FwYWJpbGl0aWVzX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1jYXBhYmlsaXRpZXMtZ3JpZC1jb2xzKTtcbiAgZ2FwOiB2YXIoLS1jYXBhYmlsaXRpZXMtZ3JpZC1nYXApO1xufVxuXG4vKiBSZXNwb25zaXZlIGRlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIDpyb290IHtcbiAgICAtLWNhcGFiaWxpdGllcy1wYWRkaW5nOiA0cmVtIDA7XG4gICAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtc2l6ZTogMS44NzVyZW07XG4gICAgLS1jYXBhYmlsaXRpZXMtZGVzYy1zaXplOiAxLjEyNXJlbTtcbiAgICAtLWNhcGFiaWxpdGllcy1ncmlkLWNvbHM6IDFmcjtcbiAgICAtLWNhcGFiaWxpdGllcy1ncmlkLWdhcDogMS41cmVtO1xuICB9XG5cbiAgLmNhcGFiaWxpdGllc19fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG4gIH1cblxuICAuY2FwYWJpbGl0aWVzX19oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIDpyb290IHtcbiAgICAtLWNhcGFiaWxpdGllcy1wYWRkaW5nOiAzcmVtIDA7XG4gICAgLS1jYXBhYmlsaXRpZXMtdGl0bGUtc2l6ZTogMS41cmVtO1xuICAgIC0tY2FwYWJpbGl0aWVzLWRlc2Mtc2l6ZTogMXJlbTtcbiAgfVxufVxuIiwiLyogQ2FwYWJpbGl0eSBDYXJkIENvbXBvbmVudCBTdHlsZXMgLSBNb2Rlcm4gQm9yZGVybGVzcyBEZXNpZ24gMjAyNSAqL1xuLyogRm9sbG93aW5nIGJyYW5kL2NvbXBvbmVudC9zdHlsaW5nLXN0YW5kYXJkLm1kIC0gVGhyZWUtTGF5ZXIgQ1NTIEFyY2hpdGVjdHVyZSAqL1xuXG4vKiBDYXBhYmlsaXR5IENhcmQgQ29udGFpbmVyIC0gQk9SREVSTEVTUyB3aXRoIGVsZXZhdGlvbiAqL1xuLmNhcGFiaWxpdHktY2FyZCB7XG4gIC8qIEV4dHJlbWUgd2hpdGVzcGFjZSAtIDMwJSBtb3JlIHNwYWNpbmcgcGVyIGJyYW5kIGd1aWRlbGluZXMgKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS04KSAqIDEuMyk7IC8qIDMycHggKiAxLjMgPSB+NDJweCAqL1xuICBib3JkZXI6IDA7IC8qIENSSVRJQ0FMOiBCb3JkZXJsZXNzIGRlc2lnbiBwZXIgc3R5bGluZyBzdGFuZGFyZCAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBcbiAgLyogRWxldmF0aW9uIGluc3RlYWQgb2YgYm9yZGVycyAqL1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogU3VidGxlIGJhc2UgZWxldmF0aW9uICovXG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG4gIFxuICAvKiBFbnN1cmUgZnVsbCBoZWlnaHQgaW4gZ3JpZCAqL1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5jYXBhYmlsaXR5LWNhcmQ6aG92ZXIge1xuICAvKiBFbGV2YXRpb24gY2hhbmdlIG9uIGhvdmVyIC0gTk8gYm9yZGVyIGNoYW5nZXMgKi9cbiAgYm9yZGVyOiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgLyogSW5jcmVhc2VkIGVsZXZhdGlvbiAqL1xufVxuXG4uY2FwYWJpbGl0eS1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7IC8qIFByZXNzZWQgc3RhdGUgKi9cbn1cblxuLyogQ2xlYW4gdXAgd2lsbC1jaGFuZ2UgYWZ0ZXIgaW50ZXJhY3Rpb24gKi9cbi5jYXBhYmlsaXR5LWNhcmQ6bm90KDpob3Zlcik6bm90KDpmb2N1cykge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn1cblxuLyogQ2FwYWJpbGl0eSBDYXJkIENvbnRlbnQgd3JhcHBlciAqL1xuLmNhcGFiaWxpdHktY2FyZC1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTsgLyogSW5jcmVhc2VkIHNwYWNpbmcgKi9cbn1cblxuLyogQ2FwYWJpbGl0eSBDYXJkIEljb24gQ29udGFpbmVyIC0gRm9sbG93aW5nIGljb24gc3lzdGVtIHN0YW5kYXJkICovXG4uY2FwYWJpbGl0eS1jYXJkLWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogSWNvbiBjb250YWluZXIgc2l6aW5nICovXG4gIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTE2KSAqIDEuMyk7IC8qIH44M3B4IHdpdGggZXh0cmVtZSBzcGFjaW5nICovXG4gIGhlaWdodDogY2FsYyh2YXIoLS1zcGFjZS0xNikgKiAxLjMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTsgLyogRXh0cmEgc3BhY2luZyBiZWxvdyBpY29uICovXG4gIFxuICAvKiBObyBiYWNrZ3JvdW5kIHBlciBicmFuZCBndWlkZWxpbmVzIC0gY29udGFpbmVycyBhcmUgbGF5b3V0LW9ubHkgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5jYXBhYmlsaXR5LWNhcmQ6aG92ZXIgLmNhcGFiaWxpdHktY2FyZC1pY29uIHtcbiAgLyogTm8gYmFja2dyb3VuZCBvbiBob3ZlciBwZXIgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4vKiBDYXBhYmlsaXR5IEljb24gd2l0aGluIGNvbnRhaW5lciAqL1xuLmNhcGFiaWxpdHktaWNvbiB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB3aWR0aDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4ICovXG4gIGhlaWdodDogdmFyKC0tc3BhY2UtMTIpO1xufVxuXG4vKiBDYXBhYmlsaXR5IENvbnRlbnQgQXJlYSAqL1xuLmNhcGFiaWxpdHktY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7IC8qIEluY3JlYXNlZCBzcGFjaW5nIGJldHdlZW4gZWxlbWVudHMgKi9cbn1cblxuLyogVGl0bGUgLSBNVVNUIHVzZSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzcyAqL1xuLmNhcGFiaWxpdHktY2FyZC10aXRsZSB7XG4gIC8qIHRpdGxlLWNhcmQgY2xhc3Mgd2lsbCBiZSBhZGRlZCBpbiBjb21wb25lbnQgKi9cbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0zKSAqIDEuMyk7XG59XG5cbi8qIERlc2NyaXB0aW9uIC0gTVVTVCB1c2UgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3MgKi9cbi5jYXBhYmlsaXR5LWNhcmQtZGVzY3JpcHRpb24ge1xuICAvKiBkZXNjcmlwdGlvbiBjbGFzcyB3aWxsIGJlIGFkZGVkIGluIGNvbXBvbmVudCAqL1xuICBsaW5lLWhlaWdodDogMS42O1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbn1cblxuLyogRmVhdHVyZXMgTGlzdCAqL1xuLmNhcGFiaWxpdHktY2FyZC1mZWF0dXJlcyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTsgLyogSW5jcmVhc2VkIHNwYWNpbmcgYmV0d2VlbiBpdGVtcyAqL1xufVxuXG4uY2FwYWJpbGl0eS1mZWF0dXJlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogY2FsYyh2YXIoLS1zcGFjZS0zKSAqIDEuMyk7XG4gIC8qIGRlc2NyaXB0aW9uIGNsYXNzIHdpbGwgYmUgYWRkZWQgaW4gY29tcG9uZW50ICovXG59XG5cbi5jYXBhYmlsaXR5LWZlYXR1cmUtaWNvbiB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogdmFyKC0tc3BhY2UtNSk7IC8qIDIwcHggKi9cbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS01KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIG1hcmdpbi10b3A6IDJweDsgLyogQWxpZ24gd2l0aCB0ZXh0IGJhc2VsaW5lICovXG59XG5cbi5jYXBhYmlsaXR5LWZlYXR1cmUtdGV4dCB7XG4gIGZsZXg6IDE7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIENhcGFiaWxpdHkgQ2FyZCBWYXJpYW50cyAqL1xuLmNhcGFiaWxpdHktY2FyZC1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbn1cblxuLmNhcGFiaWxpdHktY2FyZC1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSAvIDAuMDUpO1xufVxuXG4vKiBIZXJpdGFnZSB2YXJpYW50IC0gTWF4aW11bSAxIHBlciBjb21wb25lbnQgZ3JvdXAgKi9cbi5jYXBhYmlsaXR5LWNhcmQtaGVyaXRhZ2Uge1xuICAvKiBTdWJ0bGUgaGVyaXRhZ2UgYWNjZW50IHVzaW5nIHNoYWRvdyBpbnN0ZWFkIG9mIGJvcmRlciAqL1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSwgLyogTGVmdCBhY2NlbnQgKi9cbiAgICAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogQmFzZSBlbGV2YXRpb24gKi9cbiAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS4zICsgdmFyKC0tc3BhY2UtMikpOyAvKiBFeHRyYSBwYWRkaW5nIGZvciBhY2NlbnQgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMik7IC8qIFZlcnkgc3VidGxlIHRpbnQgKi9cbiAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTgpICogMS4zKSAwOyAvKiBFeHRyYSB2ZXJ0aWNhbCBzcGFjZSBmb3IgaGVyaXRhZ2UgKi9cbn1cblxuLmNhcGFiaWxpdHktY2FyZC1oZXJpdGFnZTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7XG59XG5cbi8qIFJlc3BvbnNpdmUgRGVzaWduIC0gTW9iaWxlIEZpcnN0ICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNhcGFiaWxpdHktY2FyZCB7XG4gICAgLyogU3RpbGwgZ2VuZXJvdXMgYnV0IGFkanVzdGVkIGZvciBtb2JpbGUgKi9cbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTsgLyogfjMxcHggKi9cbiAgfVxuICBcbiAgLmNhcGFiaWxpdHktY2FyZC1pY29uIHtcbiAgICB3aWR0aDogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAxLjMpOyAvKiB+NjJweCAqL1xuICAgIGhlaWdodDogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAxLjMpO1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICB9XG4gIFxuICAuY2FwYWJpbGl0eS1pY29uIHtcbiAgICB3aWR0aDogdmFyKC0tc3BhY2UtOCk7IC8qIDMycHggb24gbW9iaWxlICovXG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuICBcbiAgLyogUmVkdWNlIGhvdmVyIGxpZnQgb24gbW9iaWxlICovXG4gIC5jYXBhYmlsaXR5LWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmNhcGFiaWxpdHktY2FyZCB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS04KSAqIDEuMik7IC8qIFNsaWdodGx5IGxlc3MgdGhhbiBkZXNrdG9wICovXG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uIGRpc3BsYXlzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5jYXBhYmlsaXR5LWNhcmQge1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMTIpICogMS4zKTsgLyogRXZlbiBtb3JlIGdlbmVyb3VzICovXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbiAgfVxuICBcbiAgLmNhcGFiaWxpdHktY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIH1cbn1cblxuLyogQWNjZXNzaWJpbGl0eSAtIEZvY3VzIFN0YXRlcyAqL1xuLmNhcGFiaWxpdHktY2FyZDpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAwIDAgM3B4IHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KSwgLyogRm9jdXMgcmluZyAqL1xuICAgIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBNYWludGFpbiBiYXNlIGVsZXZhdGlvbiAqL1xufVxuXG4vKiBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5jYXBhYmlsaXR5LWNhcmQge1xuICAgIC8qIFVzZSBvdXRsaW5lIGluc3RlYWQgb2YgYm9yZGVyIGZvciBoaWdoIGNvbnRyYXN0ICovXG4gICAgb3V0bGluZTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuICBcbiAgLmNhcGFiaWxpdHktY2FyZC1oZXJpdGFnZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIE1vdGlvbiBTdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY2FwYWJpbGl0eS1jYXJkLFxuICAuY2FwYWJpbGl0eS1jYXJkLWljb24sXG4gIC5jYXBhYmlsaXR5LWZlYXR1cmUtaWNvbiB7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5jYXBhYmlsaXR5LWNhcmQ6aG92ZXIsXG4gIC5jYXBhYmlsaXR5LWNhcmQ6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufSIsIi8qKlxuICogQ2hhbGxlbmdlcyBDb21wb25lbnQgQ1NTIC0gVGhyZWUtTGF5ZXIgQXJjaGl0ZWN0dXJlXG4gKiBcbiAqIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudFxuICogQnVpbGRzIG9uIGJyYW5kIGZvdW5kYXRpb24gd2l0aCBjb21wb25lbnQtc3BlY2lmaWMgc3R5bGVzLlxuICogVXNlcyBDU1MgdmFyaWFibGVzIGZyb20gTGF5ZXIgMSAoc3JjL2luZGV4LmNzcykgZXhjbHVzaXZlbHkuXG4gKiBcbiAqIE1BTkRBVE9SWTogQWxsIGNsYXNzZXMgZGVmaW5lZCBoZXJlIE1VU1QgYmUgdXNlZCBpbiB0aGUgY29tcG9uZW50LlxuICogTm8gdW51c2VkIHN0eWxlcyBhbGxvd2VkIHBlciBhcmNoaXRlY3R1cmUgc3RhbmRhcmQuXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ29udGFpbmVyICYgTGF5b3V0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGFsbGVuZ2VzLWNvbnRhaW5lciB7XG4gIC8qIEJ1aWxkIG9uIGJyYW5kIGZvdW5kYXRpb24gKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCkgMDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIERhcmsgbW9kZSBzdXBwb3J0IC0gYXV0b21hdGljIHdpdGggQ1NTIHZhcmlhYmxlcyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuY2hhbGxlbmdlcy1jb250YWluZXIge1xuICAgIC8qIENTUyB2YXJpYWJsZXMgYXV0b21hdGljYWxseSBhZGFwdCB0byBkYXJrIG1vZGUgKi9cbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICB9XG59XG5cbi5jaGFsbGVuZ2VzLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMTIpO1xuICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBNYWluIGxheW91dCBncmlkIC0gc2lkZWJhciArIGNvbnRlbnQgKi9cbi5jaGFsbGVuZ2VzLWxheW91dCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzIwcHggMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gIG1heC13aWR0aDogMTQ0MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogTW9iaWxlOiBTdGFjayBsYXlvdXQgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY2hhbGxlbmdlcy1sYXlvdXQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4vKiBUYWJsZXQ6IEFkanVzdCBzaWRlYmFyIHdpZHRoICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmNoYWxsZW5nZXMtbGF5b3V0IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4MHB4IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNpZGViYXIgTmF2aWdhdGlvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hhbGxlbmdlcy1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMDMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIERhcmsgbW9kZSBzaWRlYmFyIC0gYXV0b21hdGljIHdpdGggQ1NTIHZhcmlhYmxlcyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuY2hhbGxlbmdlcy1zaWRlYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4wNSk7XG4gIH1cbn1cblxuLyogRGVza3RvcDogU3RpY2t5IHBvc2l0aW9uaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNoYWxsZW5nZXMtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IGNhbGMoODBweCArIHZhcigtLXNwYWNlLTQpKTsgLyogSGVhZGVyIGhlaWdodCArIHNwYWNpbmcgKi9cbiAgfVxufVxuXG4vKiBNb2JpbGU6IEhvcml6b250YWwgc2Nyb2xsICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmNoYWxsZW5nZXMtc2lkZWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICAvKiBIaWRlIHNjcm9sbGJhciBidXQga2VlcCBmdW5jdGlvbmFsaXR5ICovXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbiAgfVxuICBcbiAgLmNoYWxsZW5nZXMtc2lkZWJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLyogTmF2aWdhdGlvbiBpdGVtcyAqL1xuLmNoYWxsZW5nZS1uYXYtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBtaW4taGVpZ2h0OiA3MnB4OyAvKiBBY2NvbW1vZGF0ZSB0aXRsZSArIGRlc2NyaXB0aW9uICovXG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLmNoYWxsZW5nZS1uYXYtaXRlbTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLyogTW9iaWxlIG5hdiBpdGVtcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW0ge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2UtMyk7XG4gICAgbWluLWhlaWdodDogNjRweDsgLyogU2xpZ2h0bHkgc21hbGxlciBvbiBtb2JpbGUgYnV0IHN0aWxsIHRvdWNoLWZyaWVuZGx5ICovXG4gIH1cbiAgXG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uY2hhbGxlbmdlLW5hdi1pdGVtOmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjA4KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7XG59XG5cbi8qIEFjdGl2ZSBzdGF0ZSB3aXRoIGhlcml0YWdlIHJlZCBhY2NlbnQgKi9cbi5jaGFsbGVuZ2UtbmF2LWl0ZW0uYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMSk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBmb250LXdlaWdodDogNjAwO1xuICAvKiBFeHRyYSBzcGFjaW5nIGZvciBoZXJpdGFnZSBlbGVtZW50cyAoMzAlIG1vcmUpICovXG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTMpICsgdmFyKC0tc3BhY2UtMikpO1xufVxuXG4vKiBEYXJrIG1vZGUgYWN0aXZlIHN0YXRlICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW06aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4xNSk7XG4gIH1cbiAgXG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW0uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4yKTtcbiAgICBib3gtc2hhZG93OiBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgfVxufVxuXG4vKiBOYXYgaXRlbSBjb250ZW50ICovXG4uY2hhbGxlbmdlLW5hdi1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwOyAvKiBBbGxvdyB0ZXh0IHRydW5jYXRpb24gKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLmNoYWxsZW5nZS1uYXYtdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmNoYWxsZW5nZS1uYXYtZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS40O1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgb3BhY2l0eTogMC44O1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbnRlbnQgQXJlYVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hhbGxlbmdlcy1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogRGFyayBtb2RlIGNvbnRlbnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLmNoYWxsZW5nZXMtY29udGVudCB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgfVxufVxuXG4vKiBDaGFsbGVuZ2UgZGV0YWlsIHBhbmVscyAqL1xuLmNoYWxsZW5nZS1kZXRhaWwge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYW5pbWF0aW9uOiBmYWRlSW4gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLmNoYWxsZW5nZS1kZXRhaWwuYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi5jaGFsbGVuZ2UtZGV0YWlsLWhlYWRlciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByb2JsZW1zICYgU29sdXRpb25zIENvbXBhcmlzb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNoYWxsZW5nZS1jb21wYXJpc29uIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIDA7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG59XG5cbi8qIERhcmsgbW9kZSBjb21wYXJpc29uICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5jaGFsbGVuZ2UtY29tcGFyaXNvbiB7XG4gICAgLyogQ2xlYW4gc2VwYXJhdGlvbiB0aHJvdWdoIHNwYWNpbmcgb25seSAqL1xuICB9XG59XG5cbi8qIE1vYmlsZTogU3RhY2sgY29sdW1ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jaGFsbGVuZ2UtY29tcGFyaXNvbiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDA7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgMDtcbiAgfVxufVxuXG4vKiBQcm9ibGVtL1NvbHV0aW9uIGNvbHVtbnMgKi9cbi5jaGFsbGVuZ2UtcHJvYmxlbXMsXG4uY2hhbGxlbmdlLXNvbHV0aW9ucyB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uY2hhbGxlbmdlLXByb2JsZW1zIHtcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2UtNik7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY2hhbGxlbmdlLXByb2JsZW1zIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuICBcbiAgLmNoYWxsZW5nZS1zb2x1dGlvbnMge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG4vKiBMaXN0cyAqL1xuLmNoYWxsZW5nZS1wcm9ibGVtcy1saXN0LFxuLmNoYWxsZW5nZS1zb2x1dGlvbnMtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgMCAwIDA7XG59XG5cbi5jaGFsbGVuZ2UtcHJvYmxlbS1pdGVtLFxuLmNoYWxsZW5nZS1zb2x1dGlvbi1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi5jaGFsbGVuZ2UtcHJvYmxlbS1pdGVtIHN2ZyB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtYXJnaW4tdG9wOiAycHg7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZGVzdHJ1Y3RpdmUpKTtcbn1cblxuLmNoYWxsZW5nZS1zb2x1dGlvbi1pdGVtIHN2ZyB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtYXJnaW4tdG9wOiAycHg7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNZXRyaWNzIFNlY3Rpb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNoYWxsZW5nZS1tZXRyaWNzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBEYXJrIG1vZGUgbWV0cmljcyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuY2hhbGxlbmdlLW1ldHJpY3Mge1xuICAgIC8qIENsZWFuIG1ldHJpY3Mgd2l0aG91dCBiYWNrZ3JvdW5kICovXG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jaGFsbGVuZ2UtbWV0cmljcyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbn1cblxuLm1ldHJpYy1jYXJkIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMDUpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogRGFyayBtb2RlIG1ldHJpYyBjYXJkICovXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gIC5tZXRyaWMtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMDgpO1xuICB9XG59XG5cbi5tZXRyaWMtY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMSk7XG59XG5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLm1ldHJpYy1jYXJkOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4xNSk7XG4gIH1cbn1cblxuLm1ldHJpYy12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4ubWV0cmljLWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xufVxuXG4ubWV0cmljLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIG9wYWNpdHk6IDAuODtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9jdXMgU3RhdGVzICYgQWNjZXNzaWJpbGl0eVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hhbGxlbmdlLW5hdi1pdGVtOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAzcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWZvY3VzKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5jaGFsbGVuZ2UtbmF2LWl0ZW06Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW0sXG4gIC5jaGFsbGVuZ2UtZGV0YWlsLFxuICAubWV0cmljLWNhcmQge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5jaGFsbGVuZ2UtbmF2LWl0ZW0uYWN0aXZlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG4gIFxuICAvKiBPbmx5IGFkZCBib3JkZXJzIGluIGhpZ2ggY29udHJhc3QgbW9kZSBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuICAuY2hhbGxlbmdlLXByb2JsZW1zLFxuICAuY2hhbGxlbmdlLXNvbHV0aW9ucyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG4gIFxuICAubWV0cmljLWNhcmQge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQcmludCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIHByaW50IHtcbiAgLmNoYWxsZW5nZXMtc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLmNoYWxsZW5nZS1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICB9XG4gIFxuICAuY2hhbGxlbmdlcy1sYXlvdXQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG4gIFxuICAuY2hhbGxlbmdlLW1ldHJpY3Mge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxufSIsIi8qIENvZGVFeGFtcGxlIENvbXBvbmVudCBTdHlsZXMgKi9cblxuLmNvZGUtZXhhbXBsZSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5jb2RlLWV4YW1wbGUtaGVhZGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtNSk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlKSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG59XG5cbi5jb2RlLWV4YW1wbGUtaGVhZGVyLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uY29kZS1leGFtcGxlLXRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY29kZS1leGFtcGxlLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSkpO1xuICBtYXJnaW46IDA7XG59XG5cbi5jb2RlLWV4YW1wbGUtYmxvY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICMxOTFjMmM7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1yYWRpdXMtbWQpIHZhcigtLXJhZGl1cy1tZCk7XG59XG5cbi5jb2RlLWV4YW1wbGUtbGFuZ3VhZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogdmFyKC0tc3BhY2UtMik7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjZS0zKTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgY29sb3I6ICM5NGEzYjg7XG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0yKTtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjEpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB6LWluZGV4OiAxO1xufVxuXG4uY29kZS1leGFtcGxlLXByZSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSk7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uY29kZS1leGFtcGxlLWNvZGUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6ICMyMmQzZWU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xufVxuXG4vKiBTeW50YXggaGlnaGxpZ2h0aW5nIGZvciBkaWZmZXJlbnQgbGFuZ3VhZ2VzICovXG4uY29kZS1leGFtcGxlLWNvZGUubGFuZ3VhZ2UteWFtbCB7XG4gIGNvbG9yOiAjMjJkM2VlO1xufVxuXG4uY29kZS1leGFtcGxlLWNvZGUubGFuZ3VhZ2UtYmFzaCB7XG4gIGNvbG9yOiAjODZlZmFjO1xufVxuXG4uY29kZS1leGFtcGxlLWNvZGUubGFuZ3VhZ2UtanNvbiB7XG4gIGNvbG9yOiAjZmJiZjI0O1xufVxuXG4uY29kZS1leGFtcGxlLWNvZGUubGFuZ3VhZ2UtdHlwZXNjcmlwdCxcbi5jb2RlLWV4YW1wbGUtY29kZS5sYW5ndWFnZS1qYXZhc2NyaXB0IHtcbiAgY29sb3I6ICNhNWYzZmM7XG59XG5cbi8qIFNjcm9sbGJhciBzdHlsaW5nICovXG4uY29kZS1leGFtcGxlLXByZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBoZWlnaHQ6IDhweDtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjEpO1xufVxuXG4uY29kZS1leGFtcGxlLXByZTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi5jb2RlLWV4YW1wbGUtcHJlOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC41KTtcbn1cblxuLyogTW9iaWxlIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY29kZS1leGFtcGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB9XG4gIFxuICAuY29kZS1leGFtcGxlLWhlYWRlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5jb2RlLWV4YW1wbGUtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTtcbiAgfVxuICBcbiAgLmNvZGUtZXhhbXBsZS1wcmUge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuY29kZS1leGFtcGxlLWNvZGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG4gIH1cbiAgXG4gIC5jb2RlLWV4YW1wbGUtbGFuZ3VhZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuY29kZS1leGFtcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZC1kYXJrKSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyLWRhcmspKTtcbiAgfVxuICBcbiAgLmNvZGUtZXhhbXBsZS1oZWFkZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlLWRhcmspKTtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXItZGFyaykpO1xuICB9XG4gIFxuICAuY29kZS1leGFtcGxlLWJsb2NrIHtcbiAgICBiYWNrZ3JvdW5kOiAjMGYxMTE3O1xuICB9XG59XG5cbi8qIENvbXBhY3QgdmFyaWFudCAqL1xuLmNvZGUtZXhhbXBsZS5jb2RlLWV4YW1wbGUtY29tcGFjdCAuY29kZS1leGFtcGxlLWhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLmNvZGUtZXhhbXBsZS5jb2RlLWV4YW1wbGUtY29tcGFjdCAuY29kZS1leGFtcGxlLXRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpO1xufVxuXG4vKiBJbmxpbmUgdmFyaWFudCAqL1xuLmNvZGUtZXhhbXBsZS5jb2RlLWV4YW1wbGUtaW5saW5lIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5jb2RlLWV4YW1wbGUuY29kZS1leGFtcGxlLWlubGluZSAuY29kZS1leGFtcGxlLWJsb2NrIHtcbiAgYmFja2dyb3VuZDogIzE5MWMyYztcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09NUEFSSVNPTiBUQUJMRSBDT01QT05FTlQgU1RZTEVTIC0gVGhyZWUtTGF5ZXIgQXJjaGl0ZWN0dXJlXG4gICBMYXllciAyOiBDb21wb25lbnQgRW5oYW5jZW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIERFU0lHTiBQUklOQ0lQTEVTOlxuICAgLSBUaHJlZS1jb2x1bW4gbGF5b3V0OiB2YWx1ZXMgfCBmZWF0dXJlcyB8IHZhbHVlc1xuICAgLSBDZW50cmFsIGZlYXR1cmUgY29sdW1uIHdpdGggbmFtZXMgYW5kIGRlc2NyaXB0aW9uc1xuICAgLSBObyBkdXBsaWNhdGUgZmVhdHVyZSB0ZXh0IC0gc2hvd24gb25jZSBpbiBjZW50ZXJcbiAgIC0gTW9iaWxlLWZpcnN0IHJlc3BvbnNpdmUgZGVzaWduIHdpdGggcHJvcGVyIHN0YWNraW5nXG4gICAtIFByaW1hcnkgY29sdW1uIGhpZ2hsaWdodGluZyB3aXRoIDEwJSByZWQgcnVsZVxuICAgLSBDYXRlZ29yeSBncm91cGluZyB3aXRoIHZpc3VhbCBzZXBhcmF0aW9uXG4gICAtIE5vIGZvbnQtc2l6ZSBkZWNsYXJhdGlvbnMgLSB1c2VzIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXNcbiAgIC0gQWxsIGhvdmVyIHN0YXRlcyB3aXRoIDMwMG1zIHRyYW5zaXRpb25zXG4gICAtIFRvdWNoIHRhcmdldHMgbWluaW11bSA0OHB4IG9uIG1vYmlsZVxuICAgLSBQcm9mZXNzaW9uYWwgZGVwdGggd2l0aCBzdWJ0bGUgZ3JhZGllbnRzIGFuZCBzaGFkb3dzXG4gICAtIEVuaGFuY2VkIHZpc3VhbCBoaWVyYXJjaHkgYW5kIHBvbGlzaFxuKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT0gV1JBUFBFUiAmIExBWU9VVCA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBNYWluIHdyYXBwZXIgZm9yIHRocmVlLWNvbHVtbiBsYXlvdXQgKi9cbi5jb21wYXJpc29uLXdyYXBwZXIge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICB0byBib3R0b20sXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4wMikgMCUsXG4gICAgdHJhbnNwYXJlbnQgNDAlXG4gICk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBHTE9CQUwgSEVBREVSUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBHbG9iYWwgaGVhZGVycyBjb250YWluZXIgc3Bhbm5pbmcgZnVsbCB3aWR0aCAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcnMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIEluZGl2aWR1YWwgZ2xvYmFsIGhlYWRlcnMgKi9cbi5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45NSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4zKSAxMDAlXG4gICk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0yMDApLCAwLjMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAzKSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDQpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDUpLFxuICAgIDAgMTZweCAzMnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA2KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLyogR2xhc3MgZWZmZWN0IG92ZXJsYXkgKi9cbi5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXI6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgMTM1ZGVnLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAwJSxcbiAgICB0cmFuc3BhcmVudCA2MCVcbiAgKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIEdsb2JhbCBoZWFkZXIgaG92ZXIgc3RhdGUgKi9cbi5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMS4wMSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNiksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDgpLFxuICAgIDAgMjRweCA0OHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk4KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjQpIDEwMCVcbiAgKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMzAwKSwgMC40KTtcbn1cblxuLyogUHJpbWFyeSBnbG9iYWwgaGVhZGVyIChzb2x1dGlvbnMpIHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIuY29tcGFyaXNvbi1wcmltYXJ5LWhlYWRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45OCkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTApLCAwLjIpIDUwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDApLCAwLjEpIDEwMCVcbiAgKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTIpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA0KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA2KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wOCksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDYpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSxcbiAgICBpbnNldCAwIDAgMjBweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDMpO1xufVxuXG4vKiBQcmVtaXVtIGdsb3cgZWZmZWN0IGZvciBwcmltYXJ5IGhlYWRlciAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlci5jb21wYXJpc29uLXByaW1hcnktaGVhZGVyOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAtNTAlO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoXG4gICAgY2lyY2xlIGF0IGNlbnRlcixcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDUpIDAlLFxuICAgIHRyYW5zcGFyZW50IDcwJVxuICApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctc2xvdykgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi8qIFByaW1hcnkgZ2xvYmFsIGhlYWRlciBob3ZlciAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlci5jb21wYXJpc29uLXByaW1hcnktaGVhZGVyOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA2KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wOCksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpLFxuICAgIDAgMjRweCA0OHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA4KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSxcbiAgICBpbnNldCAwIDAgMzBweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDUpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wMik7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTApLCAwLjI1KSA1MCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMTAwKSwgMC4xNSkgMTAwJVxuICApO1xufVxuXG4uY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyLmNvbXBhcmlzb24tcHJpbWFyeS1oZWFkZXI6aG92ZXI6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyogU3BlY2lmaWMgaGVhZGVyIGNsYXNzZXMgKi9cbi5jb21wYXJpc29uLWNoYWxsZW5nZXMtaGVhZGVyIHtcbiAgLyogSW5oZXJpdHMgYWxsIHN0eWxlcyBmcm9tIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXIgKi9cbn1cblxuLmNvbXBhcmlzb24tc29sdXRpb25zLWhlYWRlciB7XG4gIC8qIEluaGVyaXRzIGFsbCBzdHlsZXMgZnJvbSAuY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IENBVEVHT1JZIFNFQ1RJT05TID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENhdGVnb3J5IHNlY3Rpb24gd3JhcHBlciAqL1xuLmNvbXBhcmlzb24tY2F0ZWdvcnktc2VjdGlvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogQ2F0ZWdvcnkgdGl0bGUgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tY2F0ZWdvcnktdGl0bGUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gIGZvbnQtc2l6ZTogMC44NzVlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBDYXRlZ29yeSB0aXRsZSBkZWNvcmF0aXZlIGxpbmUgKi9cbi5jb21wYXJpc29uLWNhdGVnb3J5LXRpdGxlOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLXNwYWNlLTEpKTsgLyogLTRweCB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS0xNik7IC8qIDY0cHggLSBjbG9zZXN0IHRvIDYwcHggdXNpbmcgQ1NTIHZhcmlhYmxlICovXG4gIGhlaWdodDogdmFyKC0tc3BhY2UtMC01KTsgLyogMnB4IHVzaW5nIENTUyB2YXJpYWJsZSAqL1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsXG4gICAgdHJhbnNwYXJlbnQsXG4gICAgcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNDAwKSksXG4gICAgdHJhbnNwYXJlbnRcbiAgKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBGRUFUVVJFIEdSSUQgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogU2VtYW50aWMgdGFibGUgY29udGFpbmVyICovXG4uY29tcGFyaXNvbi10YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMDtcbiAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cblxuLyogVGFibGUgaGVhZGVycyBzdHlsaW5nICovXG4uY29tcGFyaXNvbi10YWJsZSB0aGVhZCB0aCB7XG4gIHdpZHRoOiAzMy4zMzMlO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi8qIEZlYXR1cmUgY29sdW1uIGhlYWRlciAoY2VudGVyIGNvbHVtbikgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtY29sdW1uIHtcbiAgd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNzIpIC0gdmFyKC0tc3BhY2UtMikpOyAvKiAyODBweCAtIHVzaW5nIENTUyB2YXJpYWJsZSBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlciAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogVGFibGUgYm9keSBzdHlsaW5nICovXG4uY29tcGFyaXNvbi10YWJsZSB0Ym9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogVGFibGUgcm93IHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLXRhYmxlIHRyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG5cbi8qIFRhYmxlIGNlbGwgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tdGFibGUgdGQge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogSW5kaXZpZHVhbCBmZWF0dXJlIGNhcmQgKHRhYmxlIHJvdykgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtY2FyZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMC45OCkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4xNSkgMTAwJVxuICApO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMjAwKSwgMC4yNSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAyKSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xufVxuXG4vKiBUYWJsZSByb3cgc3BlY2lmaWMgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3cge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3cgdGQge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogU3VidGxlIGlubmVyIGdsb3cgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAxMzVkZWcsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSAwJSxcbiAgICB0cmFuc3BhcmVudCA1MCVcbiAgKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIEZlYXR1cmUgY2FyZCBob3ZlciBzdGF0ZSAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAxKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjIpIDEwMCVcbiAgKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpIHNjYWxlKDEuMDEpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNSksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNyksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDkpLFxuICAgIDAgMjRweCA0OHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjExKSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTMwMCksIDAuMzUpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCkgc2F0dXJhdGUoMS4xKTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCkgc2F0dXJhdGUoMS4xKTtcbn1cblxuLyogRmVhdHVyZSBoZWFkZXIgc2VjdGlvbiAoY2VudGVyIGNlbGwpICovXG4uY29tcGFyaXNvbi1mZWF0dXJlLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4wNSkgMCUsXG4gICAgdHJhbnNwYXJlbnQgMTAwJVxuICApO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0yMDApLCAwLjE1KTtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMTUpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFRhYmxlLXNwZWNpZmljIGZlYXR1cmUgbmFtZSBhbGlnbm1lbnQgKi9cbi5jb21wYXJpc29uLXRhYmxlIC5jb21wYXJpc29uLWZlYXR1cmUtbmFtZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi8qIFRhYmxlLXNwZWNpZmljIGZlYXR1cmUgZGVzY3JpcHRpb24gYWxpZ25tZW50ICovXG4uY29tcGFyaXNvbi10YWJsZSAuY29tcGFyaXNvbi1mZWF0dXJlLWRlc2NyaXB0aW9uIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNzIpIC0gdmFyKC0tc3BhY2UtMikpOyAvKiAyODBweCB1c2luZyBDU1MgdmFyaWFibGUgKi9cbiAgbWFyZ2luOiAwIGF1dG87XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLyogRmVhdHVyZSBuYW1lIHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtbmFtZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xufVxuXG4vKiBGZWF0dXJlIGRlc2NyaXB0aW9uIHN0eWxpbmcgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtZGVzY3JpcHRpb24ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgb3BhY2l0eTogMC44O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4vKiBJbmRpdmlkdWFsIHZhbHVlIGNhcmRzICovXG4uY29tcGFyaXNvbi12YWx1ZS1jYXJkIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk1KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjEpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAyKSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDMpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbn1cblxuLyogVmFsdWUgY2FyZCBnbGFzcyBzaGluZSAqL1xuLmNvbXBhcmlzb24tdmFsdWUtY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAxMDVkZWcsXG4gICAgdHJhbnNwYXJlbnQgNDAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkgNDUlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkgNTAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkgNTUlLFxuICAgIHRyYW5zcGFyZW50IDYwJVxuICApO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC42cyB2YXIoLS1lYXNpbmctc21vb3RoKTtcbn1cblxuLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkOmhvdmVyIC5jb21wYXJpc29uLXZhbHVlLWNhcmQ6OmJlZm9yZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLyogVmFsdWUgY2FyZCBjb250ZW50ICovXG4uY29tcGFyaXNvbi12YWx1ZS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTYpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogQ2hhbGxlbmdlIGNlbGwgc3BlY2lmaWMgc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tY2hhbGxlbmdlIHtcbiAgLyogSW5oZXJpdHMgYWxsIHN0eWxlcyBmcm9tIC5jb21wYXJpc29uLXZhbHVlLWNhcmQgKi9cbn1cblxuLyogU29sdXRpb24gY2VsbCBzcGVjaWZpYyBzdHlsaW5nICovXG4uY29tcGFyaXNvbi1zb2x1dGlvbiB7XG4gIC8qIEluaGVyaXRzIGFsbCBzdHlsZXMgZnJvbSAuY29tcGFyaXNvbi12YWx1ZS1jYXJkICovXG59XG5cbi8qIFByaW1hcnkgY29sdW1uIHN0eWxpbmcgZm9yIHNvbHV0aW9uIGNhcmRzICovXG4uY29tcGFyaXNvbi12YWx1ZS1jYXJkLmNvbXBhcmlzb24tcHJpbWFyeS1jb2x1bW4ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTgpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwKSwgMC4xNSkgNTAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTEwMCksIDAuMDgpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMXB4IDJweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDIpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDMpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDQpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSxcbiAgICBpbnNldCAwIDAgMTJweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDIpO1xufVxuXG4vKiBQcmltYXJ5IHZhbHVlIGNhcmQgc3VidGxlIGFuaW1hdGlvbiAqL1xuLmNvbXBhcmlzb24tdmFsdWUtY2FyZC5jb21wYXJpc29uLXByaW1hcnktY29sdW1uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoXG4gICAgY2lyY2xlIGF0IDUwJSA1MCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA2KSAwJSxcbiAgICB0cmFuc3BhcmVudCA3MCVcbiAgKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctc2xvdykgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY29tcGFyaXNvbi1mZWF0dXJlLWNhcmQ6aG92ZXIgLmNvbXBhcmlzb24tdmFsdWUtY2FyZC5jb21wYXJpc29uLXByaW1hcnktY29sdW1uOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IFZBTFVFIElORElDQVRPUlMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVmFsdWUgd3JhcHBlciBmb3IgYmFkZ2VzIGFuZCBpbmRpY2F0b3JzICovXG4uY29tcGFyaXNvbi12YWx1ZS13cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIFN1Y2Nlc3MgY2hlY2ttYXJrIGluZGljYXRvciAqL1xuLmNvbXBhcmlzb24tY2hlY2ttYXJrIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLXdpZHRoOiB2YXIoLS1zcGFjZS0xMCk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTEyKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjEyKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA0KSAxMDAlXG4gICk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDQpLFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA2KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wOCksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi8qIENoZWNrbWFyayBwdWxzZSBhbmltYXRpb24gb24gaG92ZXIgKi9cbi5jb21wYXJpc29uLWNoZWNrbWFyazo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogLTRweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjIpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi8qIENoZWNrbWFyayBob3ZlciBhbmltYXRpb24gKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIC5jb21wYXJpc29uLWNoZWNrbWFyayB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgcm90YXRlKDVkZWcpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMTYpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDYpIDEwMCVcbiAgKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjI1KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDYpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA4KSxcbiAgICAwIDhweCAxNnB4IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMSksXG4gICAgMCAxMnB4IDI0cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4xMiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xufVxuXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpob3ZlciAuY29tcGFyaXNvbi1jaGVja21hcms6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cblxuLyogVW5hdmFpbGFibGUgWCBtYXJrIGluZGljYXRvciAqL1xuLmNvbXBhcmlzb24teG1hcmsge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgb3BhY2l0eTogMC40O1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLXdpZHRoOiB2YXIoLS1zcGFjZS04KTtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtOCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi8qIFggbWFyayBob3ZlciBzdGF0ZSAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIgLmNvbXBhcmlzb24teG1hcmsge1xuICBvcGFjaXR5OiAwLjY7XG59XG5cbi8qIEN1c3RvbSB0ZXh0IHZhbHVlcyAqL1xuLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTcwMCkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk4KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjI1KSAxMDAlXG4gICk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS0yMDApLCAwLjI1KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMXB4IDJweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wMiksXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAzKSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG59XG5cbi8qIEN1c3RvbSB2YWx1ZSBzaGltbWVyIGVmZmVjdCAqL1xuLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIDEwNWRlZyxcbiAgICB0cmFuc3BhcmVudCA0MCUsXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKSA1MCUsXG4gICAgdHJhbnNwYXJlbnQgNjAlXG4gICk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjhzIHZhcigtLWVhc2luZy1zbW9vdGgpO1xufVxuXG4vKiBDdXN0b20gdmFsdWUgaG92ZXIgKi9cbi5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgMSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSwgMC4zKSAxMDAlXG4gICk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KSBzY2FsZSgxLjAyKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjAzKSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDUpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDcpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktMzAwKSwgMC4zNSk7XG59XG5cbi5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZTo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuXG4vKiBQcmltYXJ5IGNvbHVtbiBjdXN0b20gdmFsdWVzICovXG4uY29tcGFyaXNvbi1wcmltYXJ5LWNvbHVtbiAuY29tcGFyaXNvbi1jdXN0b20tdmFsdWUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTgpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwKSwgMC4yKSA1MCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMTAwKSwgMC4xKSAxMDAlXG4gICk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4xKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wMyksXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNCksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wNSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksXG4gICAgaW5zZXQgMCAwIDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDIpO1xufVxuXG4vKiBQcmltYXJ5IGN1c3RvbSB2YWx1ZSBob3ZlciAqL1xuLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIgLmNvbXBhcmlzb24tcHJpbWFyeS1jb2x1bW4gLmNvbXBhcmlzb24tY3VzdG9tLXZhbHVlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAxKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MCksIDAuMjUpIDUwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDApLCAwLjEyKSAxMDAlXG4gICk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDQpLFxuICAgIDAgNHB4IDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDYpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksXG4gICAgaW5zZXQgMCAwIDEycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjAzKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTUpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMS4wMyk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IFBFUkZPUk1BTkNFIElORElDQVRPUlMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogUGVyZm9ybWFuY2UgYmFkZ2Ugc3R5bGluZyAqL1xuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDAuNzUpIHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbn1cblxuLyogUGVyZm9ybWFuY2UgbGV2ZWxzICovXG4uY29tcGFyaXNvbi1wZXJmb3JtYW5jZS1leGNlbGxlbnQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTUpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDgpIDEwMCVcbiAgKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMXB4IDJweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA0KSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wNiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5jb21wYXJpc29uLXBlcmZvcm1hbmNlLWdvb2Qge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYmFja2dyb3VuZCksIDAuOTUpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItaW5mbyksIDAuMDgpIDEwMCVcbiAgKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1pbmZvKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItaW5mbyksIDAuMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMXB4IDJweCByZ2JhKHZhcigtLWNvbG9yLWluZm8pLCAwLjA0KSxcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1pbmZvKSwgMC4wNiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5jb21wYXJpc29uLXBlcmZvcm1hbmNlLW1vZGVyYXRlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk1KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpLCAwLjA4KSAxMDAlXG4gICk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpLCAwLjIpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDFweCAycHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4wNCksXG4gICAgMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3Itd2FybmluZyksIDAuMDYpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4vKiBQZXJmb3JtYW5jZSBiYWRnZSBob3ZlciAqL1xuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtYmFkZ2U6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG59XG5cbi5jb21wYXJpc29uLXBlcmZvcm1hbmNlLWV4Y2VsbGVudDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjA2KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1zdWNjZXNzKSwgMC4wOCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbn1cblxuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtZ29vZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLWluZm8pLCAwLjA2KSxcbiAgICAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1pbmZvKSwgMC4wOCksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLWluZm8pLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbn1cblxuLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtbW9kZXJhdGU6aG92ZXIge1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4wNiksXG4gICAgMCA0cHggOHB4IHJnYmEodmFyKC0tY29sb3Itd2FybmluZyksIDAuMDgpLFxuICAgIDAgOHB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSwgMC4xKSxcbiAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09IFRPT0xUSVBTICYgT1ZFUkxBWVMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSW5mbyBpY29uIGZvciBhZGRpdGlvbmFsIGRldGFpbHMgKi9cbi5jb21wYXJpc29uLWluZm8taWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNlLTEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLW11dGVkKSwgMC41KTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjdXJzb3I6IGhlbHA7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmNvbXBhcmlzb24taW5mby1pY29uOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSksIDAuMSk7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gREVTS1RPUCBMQVlPVVQgKDc2OHB4KykgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC8qIERlc2t0b3AgcmVzcG9uc2l2ZSBjbGFzcyBvdmVycmlkZXMgKi9cbiAgLmNvbXBhcmlzb24tZGVza3RvcC12aWV3IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1tb2JpbGUtdmlldyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyogVGFibGUgbGF5b3V0IGFkanVzdG1lbnRzIGZvciBkZXNrdG9wICovXG4gIC5jb21wYXJpc29uLXRhYmxlIHRoZWFkIHRoIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1jb2x1bW4ge1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTcyKSAtIHZhcigtLXNwYWNlLTIpKTsgLyogMjgwcHggdXNpbmcgQ1NTIHZhcmlhYmxlICovXG4gIH1cbiAgXG4gIC8qIExhcmdlciBpbmRpY2F0b3JzIG9uIGRlc2t0b3AgKi9cbiAgLmNvbXBhcmlzb24tY2hlY2ttYXJrIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgbWluLXdpZHRoOiB2YXIoLS1zcGFjZS0xMik7XG4gICAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTIpO1xuICB9XG4gIFxuICAvKiBDdXN0b20gdmFsdWVzIG1vcmUgcHJvbWluZW50ICovXG4gIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gICAgZm9udC1zaXplOiAxLjA1ZW07XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gTEFSR0UgREVTS1RPUCAoMTAyNHB4KykgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAvKiBXaWRlciBjZW50ZXIgY29sdW1uIG9uIGxhcmdlIHNjcmVlbnMgdXNpbmcgQ1NTIHZhcmlhYmxlICovXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtY29sdW1uIHtcbiAgICB3aWR0aDogY2FsYyh2YXIoLS1zcGFjZS04MCkgKyB2YXIoLS1zcGFjZS0xMCkpOyAvKiAzNjBweCAoMzIwcHggKyA0MHB4KSAqL1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi10YWJsZSAuY29tcGFyaXNvbi1mZWF0dXJlLWRlc2NyaXB0aW9uIHtcbiAgICBtYXgtd2lkdGg6IHZhcigtLXNwYWNlLTgwKTsgLyogMzIwcHggdXNpbmcgQ1NTIHZhcmlhYmxlICovXG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gTU9CSUxFIE9QVElNSVpBVElPTlMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC8qIEhpZGUgZGVza3RvcCB2aWV3IGNvbXBsZXRlbHkgb24gbW9iaWxlICovXG4gIC5jb21wYXJpc29uLWRlc2t0b3AtdmlldyB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBIaWRlIHRhYmxlIG9uIG1vYmlsZSAtIHVzZSBtb2JpbGUgY2FyZHMgaW5zdGVhZCAqL1xuICAuY29tcGFyaXNvbi10YWJsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIGdsb2JhbCBoZWFkZXJzICovXG4gIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXJzIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIGZlYXR1cmUgY2FyZHMgKGxlZ2FjeSBkaXNwbGF5IGZvciBjYXJkIGxheW91dCkgKi9cbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIHRhYmxlIHJvdyBzdHlsaW5nIChub3QgZGlzcGxheWVkKSAqL1xuICAuY29tcGFyaXNvbi1mZWF0dXJlLXJvdyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLyogTW9iaWxlIGZlYXR1cmUgaGVhZGVyICovXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSB2YWx1ZSBjYXJkcyAqL1xuICAuY29tcGFyaXNvbi12YWx1ZS1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgdmFsdWUgY29udGVudCAqL1xuICAuY29tcGFyaXNvbi12YWx1ZS1jb250ZW50IHtcbiAgICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7XG4gIH1cbiAgXG4gIC8qIE1vYmlsZSBjdXN0b20gdmFsdWVzICovXG4gIC5jb21wYXJpc29uLWN1c3RvbS12YWx1ZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xuICB9XG4gIFxuICAvKiBTaW1wbGlmaWVkIGhvdmVyIHN0YXRlcyBvbiBtb2JpbGUgKi9cbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIH1cbiAgXG4gIC8qIENhdGVnb3J5IHNlY3Rpb25zIG1vcmUgY29tcGFjdCAqL1xuICAuY29tcGFyaXNvbi1jYXRlZ29yeS1zZWN0aW9uIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC8qIENhdGVnb3J5IHRpdGxlIGZ1bGwgd2lkdGggb24gbW9iaWxlICovXG4gIC5jb21wYXJpc29uLWNhdGVnb3J5LXRpdGxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDAuODEyNWVtO1xuICB9XG4gIFxuICAvKiBQZXJmb3JtYW5jZSBiYWRnZXMgKi9cbiAgLmNvbXBhcmlzb24tcGVyZm9ybWFuY2UtYmFkZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgZmVhdHVyZSBkZXNjcmlwdGlvbnMgKi9cbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgdG91Y2ggdGFyZ2V0cyAqL1xuICAuY29tcGFyaXNvbi1jaGVja21hcmsge1xuICAgIG1pbi13aWR0aDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLXhtYXJrIHtcbiAgICBtaW4td2lkdGg6IHZhcigtLXNwYWNlLTEyKTsgLyogNDhweCBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICAgIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTEyKTsgLyogNDhweCBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gREVTS1RPUC9NT0JJTEUgVklFVyBDT05UUk9MUyA9PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBEZXNrdG9wLW9ubHkgdmlldyBjbGFzcyAqL1xuLmNvbXBhcmlzb24tZGVza3RvcC12aWV3IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTW9iaWxlLW9ubHkgdmlldyBjbGFzcyAqL1xuLmNvbXBhcmlzb24tbW9iaWxlLXZpZXcge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogQmFkZ2Ugc3R5bGluZyBmb3IgbW9iaWxlIGNhcmRzICovXG4uY29tcGFyaXNvbi1iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTEpICogMC43NSkgdmFyKC0tc3BhY2UtMik7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEyKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMDYpIDEwMCVcbiAgKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxcHggMnB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wOCksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5jb21wYXJpc29uLWJhZGdlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSksIDAuMTYpIDAlLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4wOCkgMTAwJVxuICApO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSwgMC4yKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpIHNjYWxlKDEuMDIpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDJweCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gTU9CSUxFIENBUkRTID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1vYmlsZSBjb21wYXJpc29uIHdyYXBwZXIgKi9cbi5jb21wYXJpc29uLW1vYmlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIEluZGl2aWR1YWwgbW9iaWxlIGNhcmRzICovXG4uY29tcGFyaXNvbi1tb2JpbGUtY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZyxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpLCAwLjk4KSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktNTApLCAwLjEpIDEwMCVcbiAgKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTIwMCksIDAuMik7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgNHB4IDZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wMiksXG4gICAgMCA4cHggMTZweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSwgMC4wNCksXG4gICAgMCAxNnB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LTkwMCksIDAuMDYpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogUHJpbWFyeSBtb2JpbGUgY2FyZCBoaWdobGlnaHQgd2l0aCBzdHJhdGVnaWMgcmVkIHVzYWdlICovXG4uY29tcGFyaXNvbi1tb2JpbGUtcHJpbWFyeSB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjIpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpLFxuICAgIDAgdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMykgcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjA4KSxcbiAgICAwIHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTYpIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS05MDApLCAwLjA0KTtcbn1cblxuLyogTW9iaWxlIGNhcmQgaGVhZGVyICovXG4uY29tcGFyaXNvbi1tb2JpbGUtaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpLCAwLjUpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLFxuICAgIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMDMpIDAlLFxuICAgIHRyYW5zcGFyZW50IDEwMCVcbiAgKTtcbn1cblxuLyogTW9iaWxlIGZlYXR1cmUgcm93cyB3aXRoIDQ4cHggdG91Y2ggdGFyZ2V0cyAqL1xuLmNvbXBhcmlzb24tbW9iaWxlLWZlYXR1cmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSwgMC4zKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTIpOyAvKiA0OHB4IG1pbmltdW0gdG91Y2ggdGFyZ2V0ICovXG59XG5cbi5jb21wYXJpc29uLW1vYmlsZS1mZWF0dXJlOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4uY29tcGFyaXNvbi1tb2JpbGUtZmVhdHVyZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS01MCksIDAuMyk7XG59XG5cbi8qIE1vYmlsZSB2YWx1ZSBkaXNwbGF5IHdpdGggdG91Y2ggdGFyZ2V0cyAqL1xuLmNvbXBhcmlzb24tbW9iaWxlLXZhbHVlIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4td2lkdGg6IHZhcigtLXNwYWNlLTEyKTsgLyogNDhweCBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7IC8qIDQ4cHggbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTsgLyogRXh0cmEgcGFkZGluZyBmb3IgdG91Y2ggdGFyZ2V0cyAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PSBBQ0NFU1NJQklMSVRZID09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIHN0eWxlcyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiAqL1xuLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcjpmb2N1cy13aXRoaW4sXG4uY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpmb2N1cy13aXRoaW4ge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICBib3gtc2hhZG93OiBcbiAgICAwIDAgMCA0cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpLCAwLjEpLFxuICAgIDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5jb21wYXJpc29uLXByaW1hcnktaGVhZGVyLFxuICAuY29tcGFyaXNvbi1wcmltYXJ5LWNvbHVtbiB7XG4gICAgYm9yZGVyOiAzcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1jaGVja21hcmsge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LWJvbGQpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHByZWZlcmVuY2VzICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY29tcGFyaXNvbi1nbG9iYWwtaGVhZGVyLFxuICAuY29tcGFyaXNvbi1mZWF0dXJlLXJvdyxcbiAgLmNvbXBhcmlzb24tY2hlY2ttYXJrLFxuICAuY29tcGFyaXNvbi1jdXN0b20tdmFsdWUsXG4gIC5jb21wYXJpc29uLXBlcmZvcm1hbmNlLWJhZGdlLFxuICAuY29tcGFyaXNvbi1pbmZvLWljb24ge1xuICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlcjpob3ZlcixcbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1yb3c6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAuY29tcGFyaXNvbi1mZWF0dXJlLXJvdzpob3ZlciAuY29tcGFyaXNvbi1jaGVja21hcmsge1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIFByaW50IHN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmNvbXBhcmlzb24td3JhcHBlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgXG4gIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXJzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tZ2xvYmFsLWhlYWRlciB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpLCAxKTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tZmVhdHVyZS1yb3cge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlciksIDAuNSk7XG4gIH1cbiAgXG4gIC8qIFJlbW92ZSBob3ZlciBzdGF0ZXMgZm9yIHByaW50ICovXG4gIC5jb21wYXJpc29uLWdsb2JhbC1oZWFkZXI6aG92ZXIsXG4gIC5jb21wYXJpc29uLWZlYXR1cmUtcm93OmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT0gVFdPLUxBWUVSIFNDUk9MTCBBTklNQVRJT04gTk9URVMgPT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBOT1RFOiBUd28tTGF5ZXIgU2Nyb2xsIEFuaW1hdGlvbnMgYXJlIGRlZmluZWQgZ2xvYmFsbHkgaW4gc3JjL2luZGV4LmNzc1xuICogd2l0aCBwcm9wZXIgcHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnQgdXNpbmcgLmpzLWVuYWJsZWQgY2xhc3MuXG4gKiBDb21wb25lbnQgQ1NTIGZpbGVzIHNob3VsZCBOT1QgcmVkZWZpbmUgdGhlc2UgYW5pbWF0aW9ucyB0byBhdm9pZFxuICogc3BlY2lmaWNpdHkgY29uZmxpY3RzLlxuICogXG4gKiBBbmltYXRpb24gQ1NTIHZhcmlhYmxlcyBhcmUgYWxzbyBkZWZpbmVkIGdsb2JhbGx5IGluIGluZGV4LmNzcy5cbiAqIFxuICogVGhpcyBjb21wb25lbnQgdXNlcyB0aGUgZm9sbG93aW5nIGFuaW1hdGlvbiBjbGFzc2VzOlxuICogLSBwd2Etc2Nyb2xsLWZhZGU6IEFwcGxpZWQgdG8gaGVhZGVyIGFuZCB3cmFwcGVyIHNlY3Rpb25zXG4gKiAtIHB3YS1zY3JvbGwtc2xpZGUtcmlnaHQ6IEFwcGxpZWQgdG8gZmVhdHVyZSByb3dzIGZvciBzdGFnZ2VyZWQgZW50cmFuY2VcbiAqIC0gcHdhLXNjcm9sbC1zdGFnZ2VyOiBBcHBsaWVkIHRvIG1vYmlsZSB3cmFwcGVyIGZvciBzdGFnZ2VyZWQgY2hpbGRyZW5cbiAqIFxuICogQWxsIGFuaW1hdGlvbnMgcmVzcGVjdCB1c2VyIHByZWZlcmVuY2VzIGZvciByZWR1Y2VkIG1vdGlvbi5cbiAqLyIsIi8qIENvbnRhY3QgTW9kYWwgU3R5bGVzIC0gRm9sbG93aW5nIEJyYW5kIEd1aWRlbGluZXMgKi9cblxuLmNvbnRhY3QtbW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgei1pbmRleDogOTk5OTtcbiAgZGlzcGxheTogbm9uZTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuLyogRmFkZSBhbmltYXRpb25zIHBlciBicmFuZCBndWlkZWxpbmVzICovXG4uY29udGFjdC1tb2RhbC0tZmFkZS1pbiB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5jb250YWN0LW1vZGFsLS1mYWRlLWluIC5jb250YWN0LW1vZGFsLWNvbnRlbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5jb250YWN0LW1vZGFsLS1mYWRlLW91dCB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5jb250YWN0LW1vZGFsLS1mYWRlLW91dCAuY29udGFjdC1tb2RhbC1jb250ZW50IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmNvbnRhY3QtbW9kYWwtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuLmNvbnRhY3QtbW9kYWwtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHBhZGRpbmc6IDJyZW07XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgd2lkdGg6IDkwJTtcbiAgbWF4LWhlaWdodDogOTB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgei1pbmRleDogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuLmNvbnRhY3QtbW9kYWwtY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAycmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbn1cblxuLmNvbnRhY3QtbW9kYWwtY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKTtcbn1cblxuLmNvbnRhY3QtbW9kYWwgLmZvcm0tZ3JvdXAge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5jb250YWN0LW1vZGFsIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi5jb250YWN0LW1vZGFsIC5mb3JtLWlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbi5jb250YWN0LW1vZGFsIC5mb3JtLWlucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtbW9kYWwgdGV4dGFyZWEuZm9ybS1pbnB1dCB7XG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xufVxuXG4uY29udGFjdC1tb2RhbCAuYnRuIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi8qIFN1Y2Nlc3MgbWVzc2FnZSBzdHlsaW5nICovXG4uY29udGFjdC1tb2RhbC1zdWNjZXNzIHtcbiAgcGFkZGluZzogMnJlbSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5jb250YWN0LW1vZGFsLXN1Y2Nlc3MgcCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi8qIEVycm9yIG1lc3NhZ2Ugc3R5bGluZyAqL1xuLmNvbnRhY3QtbW9kYWwtZXJyb3Ige1xuICBwYWRkaW5nOiAxcmVtO1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmNjO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmNvbnRhY3QtbW9kYWwtZXJyb3IgcCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICNjMDA7XG59IiwiLyogQ1RBIENvbXBvbmVudCBTdHlsZXMgLSBCUkFOREVEIENTUyBBUkNISVRFQ1RVUkUgKi9cbi8qIENSSVRJQ0FMOiBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGluZyBvbmx5IC0gYnJhbmQgZm91bmRhdGlvbiBpbiBpbmRleC5jc3MgKi9cblxuLyogXG4gKiBDT01QT05FTlQgRU5IQU5DRU1FTlQgUEFUVEVSTjpcbiAqIDEuIEJ1aWxkcyBvbiBsYXlvdXQtc2VjdGlvbiwgbGF5b3V0LWNvbnRhaW5lciBjbGFzc2VzIGZyb20gQnJhbmQgRm91bmRhdGlvbiAoTGF5ZXIgMSlcbiAqIDIuIEVuaGFuY2VzIHdpdGggY29tcG9uZW50LXNwZWNpZmljIGZlYXR1cmVzXG4gKiAzLiBJbXBsZW1lbnRzIHByb3BlciByZXNwb25zaXZlIGRlc2lnbiB3aXRoIGFsbCBzdGFuZGFyZCBicmVha3BvaW50c1xuICovXG5cbi8qIENvbXBvbmVudCBCYXNlIC0gQ1RBIG11c3QgTk9UIHVzZSBzZWN0aW9uIGVsZW1lbnQgcGVyIHN0YW5kYXJkcyAqL1xuLyogQ1JJVElDQUw6IE9ubHkgSGVybyBhbmQgU2VjdGlvbiBjb21wb25lbnRzIGNhbiByZXR1cm4gPHNlY3Rpb24+IGVsZW1lbnRzICovXG4vKiBDVEEgcmV0dXJucyBhIDxkaXY+IHdyYXBwZXIgYW5kIHNob3VsZCBiZSB3cmFwcGVkIGluIFNlY3Rpb24gd2hlbiB1c2VkICovXG4uY3RhLXdyYXBwZXIge1xuICAvKiBDb21wb25lbnQgd3JhcHBlciBzdHlsZXMgKi9cbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uY3RhLXNlY3Rpb24ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogQ29udGFpbiBkZWNvcmF0aXZlIGVsZW1lbnRzICovXG59XG5cbi5jdGEtc2VjdGlvbi1ncmFkaWVudCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBDb250YWluIGRlY29yYXRpdmUgZWxlbWVudHMgKi9cbn1cblxuLyogR3JhZGllbnQgZWZmZWN0IHVzaW5nIHBzZXVkby1lbGVtZW50cyBmb3Igc3VidGxlIGVuaGFuY2VtZW50IHdpdGhvdXQgY3JlYXRpbmcgYm9yZGVycyAqL1xuLmN0YS1zZWN0aW9uLWdyYWRpZW50OjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAzMCU7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpLFxuICAgIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDA1KVxuICApO1xuICBvcGFjaXR5OiAwLjQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY3RhLXNlY3Rpb24tbWluaW1hbCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBDb250YWluIGRlY29yYXRpdmUgZWxlbWVudHMgKi9cbn1cblxuLyogUkVNT1ZFRDogLmN0YS1jb250YWluZXIgLSB1bnVzZWQsIHJlcGxhY2VkIGJ5IGxheW91dC1jb250YWluZXIgKi9cblxuLyogQ29udGVudCBlbnRyYW5jZSBhbmltYXRpb25zICovXG4uY3RhLXNlY3Rpb24gLmxheW91dC1jb250YWluZXIge1xuICBhbmltYXRpb246IGN0YS1zZWN0aW9uLXJldmVhbCB2YXIoLS10aW1pbmctZGVsaWJlcmF0ZSkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKSBmb3J3YXJkcztcbiAgb3BhY2l0eTogMDtcbn1cblxuQGtleWZyYW1lcyBjdGEtc2VjdGlvbi1yZXZlYWwge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zcGFjZS0yKSk7IC8qIFVzZSBDU1MgdmFyaWFibGUgaW5zdGVhZCBvZiBoYXJkY29kZWQgOHB4ICovXG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qIENvbnRlbnQgLSBDbGVhbiBUeXBvZ3JhcGh5IC0gVVNFUyBCUkFORCBGT1VOREFUSU9OIENMQVNTRVMgKi9cbi8qIFxuICogLmN0YS1jb250ZW50IC0gVXNlcyBsYXlvdXQtY2VudGVyIGNsYXNzIGZvciB3aWR0aC9jZW50ZXJpbmcgZnJvbSBicmFuZCBmb3VuZGF0aW9uXG4gKiBPbmx5IGNvbXBvbmVudC1zcGVjaWZpYyBib3R0b20gbWFyZ2luIG5lZWRlZFxuICovXG4uY3RhLWNvbnRlbnQge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggKi9cbiAgLyogV2lkdGggYW5kIGNlbnRlcmluZyByZW1vdmVkIC0gdXNpbmcgbGF5b3V0LWNlbnRlciBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLyogVHlwb2dyYXBoeSBmb3IgdmlzdWFsIGhpZXJhcmNoeSAtIE1JTklNQUwgT1ZFUlJJREVTIE9OTFkgKi9cbi5jdGEtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDE2cHggKi9cbiAgLyogVHlwb2dyYXBoeSBzdHlsZXMgcmVtb3ZlZCAtIHVzaW5nIHRpdGxlLXNlY3Rpb24gZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG59XG5cbi5jdGEtZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjZS02KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDI0cHggKi9cbiAgLyogVHlwb2dyYXBoeSBhbmQgc2l6aW5nIHJlbW92ZWQgLSB1c2luZyBkZXNjcmlwdGlvbi1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLmN0YS1kaXNjbGFpbWVyIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSBhdXRvIDA7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiAyNHB4ICovXG4gIC8qIFR5cG9ncmFwaHkgYW5kIHNpemluZyByZW1vdmVkIC0gdXNpbmcgZGVzY3JpcHRpb24gKyB0ZXh0LW11dGVkIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xufVxuXG4vKiBcbiAqIFR5cG9ncmFwaHkgRW5oYW5jZW1lbnQgLSBCVUlMRFMgT04gQlJBTkQgRk9VTkRBVElPTlxuICogVXNpbmcgc2VtYW50aWMgdHlwb2dyYXBoeSBjbGFzc2VzIGZyb20gaW5kZXguY3NzIHdpdGggY29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50c1xuICogQ1RBIGNvbXBvbmVudCByZW5kZXJzOlxuICogPGgyIGNsYXNzPVwidGl0bGUtc2VjdGlvbiBjdGEtdGl0bGVcIj4gKEJyYW5kIEd1aWRlIGNvbXBsaWFudClcbiAqIDxoMyBjbGFzcz1cInN1YnRpdGxlLWxnIHRleHQtbXV0ZWQgY3RhLXN1YnRpdGxlXCI+XG4gKiA8cCBjbGFzcz1cImRlc2NyaXB0aW9uLWxnIHRleHQtbXV0ZWQgY3RhLWRlc2NyaXB0aW9uXCI+XG4gKiA8cCBjbGFzcz1cImRlc2NyaXB0aW9uIHRleHQtbXV0ZWQgY3RhLWRpc2NsYWltZXJcIj5cbiAqL1xuXG4vKiBTdWJ0aXRsZSBzdHlsaW5nIGZvciBzZW1hbnRpYyB0eXBvZ3JhcGh5IGNvbXBsaWFuY2UgKi9cbi5jdGEtc3VidGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IGNvbnNpc3RlbnQgd2l0aCB0aXRsZSAqL1xuICAvKiBUeXBvZ3JhcGh5IHJlbW92ZWQgLSB1c2luZyBzdWJ0aXRsZS1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbn1cblxuLyogQnV0dG9ucyBTZWN0aW9uIC0gSGVyaXRhZ2UgUmVkIENvbXBsaWFuY2UgKi9cbi5jdGEtYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7IC8qIE1hdGNoIEhlcm8gY29tcG9uZW50IG1vYmlsZSBzcGFjaW5nICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggKi9cbiAgLyogUkVNT1ZFRDogcGFkZGluZyBjYXVzZXMgZG91YmxlIHNwYWNpbmcgY29uZmxpY3RzICovXG59XG5cbi8qIFRvdWNoIHRhcmdldCBjb21wbGlhbmNlIC0gNDhweCBtaW5pbXVtICovXG4uY3RhLWJ1dHRvbnMgLmJ0bixcbi5jdGEtYnV0dG9ucyBhIHtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgbWluLXdpZHRoOiA0OHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIFJFTU9WRUQ6IERpcmVjdCBoZXJpdGFnZSBidXR0b24gbWFyZ2lucyAtIHJlcGxhY2VkIHdpdGggd3JhcHBlciBwYXR0ZXJuICovXG4vKiBIZXJpdGFnZSBidXR0b24gc3BhY2luZyBub3cgaGFuZGxlZCBieSAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB3cmFwcGVyICovXG5cbi8qIEhlcml0YWdlIEJ1dHRvbiBXcmFwcGVyIC0gUHJvdmlkZXMgMzAlIGV4dHJhIHNwYWNpbmcgc2VtYW50aWNhbGx5ICovXG4uY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gIC8qIE1vYmlsZTogdmVydGljYWwgZXh0cmEgc3BhY2luZyAoMzAlIG9mIC0tc3BhY2UtNCA9IDE2cHggKiAwLjMwID0gNC44cHgpICovXG4gIC8qIFVzaW5nIDI1JSBmb3IgYmV0dGVyIGJyb3dzZXIgY29tcGF0aWJpbGl0eTogMC4yNXJlbSA9IDRweCBndWFyYW50ZWVkICovXG4gIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMC4yNSk7IC8qIDI1JSA9IDRweCAobW9yZSB2aXNpYmxlKSAqL1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDAuMjUpOyAvKiAyNSUgPSA0cHggKG1vcmUgdmlzaWJsZSkgKi9cbn1cblxuXG4vKipcbiAqIE5vdGU6IEJ1dHRvbiBzdHlsaW5nIGhhcyBiZWVuIG1vdmVkIHRvIGluZGV4LmNzcyBhcyBwYXJ0IG9mIHRoZSBicmFuZCBmb3VuZGF0aW9uXG4gKiAtIEFsbCBidXR0b24gc3R5bGVzIG5vdyB1c2UgLmJ0biBiYXNlIGNsYXNzIHdpdGggbW9kaWZpZXJzXG4gKiAtIEFuaW1hdGlvbiwgaG92ZXIgZWZmZWN0cywgYW5kIGZvY3VzIHN0YXRlcyBkZWZpbmVkIGluIGdsb2JhbCBDU1NcbiAqIC0gQnV0dG9uIHZhcmlhbnRzIChoZXJpdGFnZSwgcHJpbWFyeSwgc2Vjb25kYXJ5LCBvdXRsaW5lLCBnaG9zdCkgZGVmaW5lZCBnbG9iYWxseVxuICogLSBIb25vciBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIGltcGxlbWVudGVkIGluIGdsb2JhbCBDU1NcbiAqL1xuXG4vKiBcbiAqIERpc2NsYWltZXIgLSBSRU1PVkVEIFNUWUxJTkcgSU4gRkFWT1IgT0YgQlJBTkQgRk9VTkRBVElPTlxuICogVXNpbmcgdGV4dC1tdXRlZCBjbGFzcyBmcm9tIGluZGV4LmNzc1xuICogQ1RBIGNvbXBvbmVudCByZW5kZXJzOlxuICogPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIGN0YS1kaXNjbGFpbWVyXCI+XG4gKi9cblxuLyogUkVTUE9OU0lWRSBERVNJR04gLSBNT0JJTEUtRklSU1QgQVBQUk9BQ0hcbiAqIEJhc2Ugc3R5bGVzIGZvciBtb2JpbGUgKDBweCspLCBlbmhhbmNlZCBmb3IgbGFyZ2VyIHNjcmVlbnNcbiAqIEltcGxlbWVudHMgYWxsIHN0YW5kYXJkIGJyZWFrcG9pbnRzOiA2NDBweCwgNzY4cHgsIDEwMjRweCtcbiAqIEVuc3VyZXMgdG91Y2ggdGFyZ2V0IGNvbXBsaWFuY2Ugb24gYWxsIGRldmljZXNcbiAqL1xuXG4vKiBSRVNQT05TSVZFIERFU0lHTiBPUFRJTUlaQVRJT04gLSBBTEwgU1RBTkRBUkQgQlJFQUtQT0lOVFNcbiAqIE1vYmlsZS1maXJzdCBhcHByb2FjaCB3aXRoIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50XG4gKiBJbXBsZW1lbnRzIG9wdGltaXplZCBzcGFjaW5nIGFuZCBsYXlvdXQgZm9yIGFsbCBkZXZpY2Ugc2l6ZXNcbiAqL1xuXG4vKiBTbWFsbCBzY3JlZW5zICg2NDBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmN0YS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiAyNHB4IC0gbW9yZSBzcGFjZSBvbiBsYXJnZXIgc2NyZWVucyAqL1xuICAgIC8qIEZvbnQgc2l6ZSByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSB0aXRsZS1zZWN0aW9uIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICB9XG4gIFxuICAuY3RhLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmc6IDMycHggLSBtb3JlIHNwYWNlIG9uIGxhcmdlciBzY3JlZW5zICovXG4gICAgLyogRm9udCBzaXplIGFuZCB3aWR0aCByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSBkZXNjcmlwdGlvbi1sZyBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbiAgfVxuICBcbiAgLmN0YS1idXR0b25zIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDsgLyogQWxsb3cgd3JhcHBpbmcgb24gc21hbGxlciBzY3JlZW5zICovXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQgdGFibGV0IHNwYWNpbmcgKi9cbiAgfVxuICBcbiAgLyogSGVyaXRhZ2Ugd3JhcHBlciByZXNwb25zaXZlIC0gaG9yaXpvbnRhbCBzcGFjaW5nIGZvciB0YWJsZXQgKi9cbiAgLmN0YS1idXR0b24taGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDAuMjUpOyAvKiAyNSUgPSA2cHggKG1vcmUgdmlzaWJsZSkgKi9cbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTYpICogMC4yNSk7IC8qIDI1JSA9IDZweCAobW9yZSB2aXNpYmxlKSAqL1xuICB9XG4gIFxuICAvKiBTZWN0aW9uIHZhcmlhbnRzIC0gUGFkZGluZyBoYW5kbGVkIGJ5IGxheW91dC1zZWN0aW9uIGNsYXNzIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICAuY3RhLXNlY3Rpb24sXG4gIC5jdGEtc2VjdGlvbi1ncmFkaWVudCxcbiAgLmN0YS1zZWN0aW9uLW1pbmltYWwge1xuICAgIC8qIE5vIGFkZGl0aW9uYWwgcGFkZGluZyAtIGhhbmRsZWQgYnkgbGF5b3V0LXNlY3Rpb24gY2xhc3MgKi9cbiAgfVxuICBcbn1cblxuLyogTWVkaXVtIHNjcmVlbnMgKDc2OHB4KykgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAvKiBDb250ZW50IHdpZHRoIHJlbW92ZWQgLSB1c2luZyBsYXlvdXQtY2VudGVyIHJlc3BvbnNpdmUgYmVoYXZpb3IgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIFxuICAvKiBEZXNjcmlwdGlvbiB0eXBvZ3JhcGh5IHJlbW92ZWQgLSB1c2luZyByZXNwb25zaXZlIGRlc2NyaXB0aW9uLWxnIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICBcbiAgLmN0YS1idXR0b25zIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpOyAvKiBNYXRjaCBIZXJvIGNvbXBvbmVudCB0YWJsZXQgc3BhY2luZyBhdCA3NjhweCAqL1xuICB9XG4gIFxuICAuY3RhLXdyYXBwZXIge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXNwYWNlLTMyKSk7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nICovXG4gIH1cbiAgXG59XG5cbi8qIExhcmdlIHNjcmVlbnMgKDEwMjRweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC8qIENvbnRlbnQgd2lkdGggcmVtb3ZlZCAtIHVzaW5nIGxheW91dC1jZW50ZXIgcmVzcG9uc2l2ZSBiZWhhdmlvciBmcm9tIGJyYW5kIGZvdW5kYXRpb24gKi9cbiAgXG4gIC5jdGEtYnV0dG9ucyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS04KTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQgZGVza3RvcCBzcGFjaW5nICovXG4gICAgZmxleC13cmFwOiBub3dyYXA7IC8qIFNpbmdsZSByb3cgb24gZGVza3RvcCB3aGVuIHBvc3NpYmxlICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgcmVzcG9uc2l2ZSAtIGhvcml6b250YWwgc3BhY2luZyBmb3IgZGVza3RvcCAqL1xuICAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTgpICogMC4yNSk7IC8qIDI1JSA9IDhweCAobW9yZSB2aXNpYmxlKSAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtOCkgKiAwLjI1KTsgLyogMjUlID0gOHB4IChtb3JlIHZpc2libGUpICovXG4gIH1cbiAgXG4gIC5jdGEtdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpOyAvKiBCcmFuZC1jb21wbGlhbnQgc3BhY2luZzogMzJweCAqL1xuICAgIC8qIEZvbnQgc2l6ZSByZW1vdmVkIC0gdXNpbmcgcmVzcG9uc2l2ZSB0aXRsZS1zZWN0aW9uIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuICB9XG4gIFxuICAuY3RhLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7IC8qIEJyYW5kLWNvbXBsaWFudCBzcGFjaW5nOiA0OHB4ICovXG4gICAgLyogV2lkdGggcmVtb3ZlZCAtIHVzaW5nIHJlc3BvbnNpdmUgZGVzY3JpcHRpb24tbGcgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIH1cbiAgXG4gIC5jdGEtd3JhcHBlciB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7IC8qIE1heGltdW0gd2lkdGggY29uc3RyYWludCAqL1xuICB9XG4gIFxufVxuXG4vKiBFeHRyYSBsYXJnZSBzY3JlZW5zICgxMjgwcHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAvKiBDb250ZW50IHdpZHRoIHJlbW92ZWQgLSB1c2luZyBsYXlvdXQtY2VudGVyIHJlc3BvbnNpdmUgYmVoYXZpb3IgZnJvbSBicmFuZCBmb3VuZGF0aW9uICovXG4gIFxuICAuY3RhLXdyYXBwZXIge1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNDgpOyAvKiBCcmFuZC1jb21wbGlhbnQgc3BhY2luZyAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNlLTQ4KTsgLyogQnJhbmQtY29tcGxpYW50IHNwYWNpbmcgKi9cbiAgfVxufVxuXG4vKiBMYXJnZSBkZXNrdG9wIHNjcmVlbnMgKDE5MjBweCspIC0gRW5oYW5jZWQgc3BhY2luZyBsaWtlIEhlcm8gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxOTIwcHgpIHtcbiAgLmN0YS1idXR0b25zIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEyKTsgLyogTWF0Y2ggSGVybyBjb21wb25lbnQncyBsYXJnZSBkZXNrdG9wIHNwYWNpbmcgKDQ4cHgpICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgcmVzcG9uc2l2ZSAtIGVuaGFuY2VkIGhvcml6b250YWwgc3BhY2luZyBmb3IgbGFyZ2UgZGVza3RvcCAqL1xuICAuY3RhLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDAuMjUpOyAvKiAyNSUgPSAxMnB4IGZvciBwcmVtaXVtIGZlZWwgKi9cbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTEyKSAqIDAuMjUpOyAvKiAyNSUgPSAxMnB4IGZvciBwcmVtaXVtIGZlZWwgKi9cbiAgfVxufVxuXG4vKiBQcmVtaXVtIGxhcmdlIGRlc2t0b3AgKDE5MjBweCspIC0gTWF0Y2ggSGVybyBjb21wb25lbnQgcHJlbWl1bSBzcGFjaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gIC5jdGEtYnV0dG9ucyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xMik7IC8qIEVuaGFuY2VkIGdhcCBmb3IgcHJlbWl1bSBmZWVsLCBtYXRjaGluZyBIZXJvICovXG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIHdyYXBwZXIgZW5oYW5jZWQgZm9yIGxhcmdlIHNjcmVlbnMgKi9cbiAgLmN0YS1idXR0b24taGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS0xMikgKiAwLjI1KTsgLyogMjUlID0gMTJweCAobW9yZSB2aXNpYmxlKSAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2UtMTIpICogMC4yNSk7IC8qIDI1JSA9IDEycHggKG1vcmUgdmlzaWJsZSkgKi9cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VTU0lCSUxJVFkgLSBSRURVQ0VEIE1PVElPTiBTVVBQT1JUXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogV0NBRyAyLjEgQUEgQ29tcGxpYW5jZSAtIFJlc3BlY3QgdXNlciBtb3Rpb24gcHJlZmVyZW5jZXMgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC8qIERpc2FibGUgYWxsIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zIGZvciBtb3Rpb24tc2Vuc2l0aXZlIHVzZXJzICovXG4gIC5jdGEtc2VjdGlvbixcbiAgLmN0YS1zZWN0aW9uLWdyYWRpZW50LFxuICAuY3RhLXNlY3Rpb24tbWluaW1hbCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBEaXNhYmxlIGVudHJhbmNlIGFuaW1hdGlvbiBhbmQgc2hvdyBjb250ZW50IGltbWVkaWF0ZWx5ICovXG4gIC5jdGEtc2VjdGlvbiAubGF5b3V0LWNvbnRhaW5lciB7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBFbnN1cmUgc3RhdGljIHN0YXRlIG1haW50YWlucyB2aXN1YWwgaGllcmFyY2h5ICovXG4gIEBrZXlmcmFtZXMgY3RhLXNlY3Rpb24tcmV2ZWFsIHtcbiAgICBmcm9tLCB0byB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVC1TUEVDSUZJQyBOT1RFUyAtIDEwMCUgQ1NTIFVUSUxJWkFUSU9OIFZFUklGSUVEXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogXG4gKiBBUkNISVRFQ1RVUkUgQ09NUExJQU5DRSBDT05GSVJNRUQ6XG4gKiDinIUgQWxsIENTUyBjbGFzc2VzIGluIHRoaXMgZmlsZSBhcmUgdXNlZCBieSB0aGUgQ1RBIGNvbXBvbmVudFxuICog4pyFIENvbXBvbmVudCB1c2VzIHNlbWFudGljIHR5cG9ncmFwaHkgY2xhc3NlcyBmcm9tIGluZGV4LmNzc1xuICog4pyFIEhlcml0YWdlIHJlZCBzcGFjaW5nIGltcGxlbWVudGVkIHBlciBCcmFuZCBHdWlkZSByZXF1aXJlbWVudHNcbiAqIOKchSBDb21wb25lbnQgcmV0dXJucyA8ZGl2PiBub3QgPHNlY3Rpb24+IHBlciBzdGFuZGFyZHNcbiAqIOKchSBBbmltYXRpb24gc3lzdGVtIHVzZXMgZGF0YS1zdGFnZ2VyLWluZGV4IGF0dHJpYnV0ZXNcbiAqIFxuICogQ1NTIENsYXNzZXMgVXNlZCBieSBDb21wb25lbnQ6XG4gKiAtIC5jdGEtd3JhcHBlciAobWFpbiBjb21wb25lbnQgd3JhcHBlciAtIE5PVCBhIHNlY3Rpb24pXG4gKiAtIC5jdGEtc2VjdGlvbiwgLmN0YS1zZWN0aW9uLWdyYWRpZW50LCAuY3RhLXNlY3Rpb24tbWluaW1hbCAoc3R5bGUgdmFyaWFudHMpXG4gKiAtIC5jdGEtY29udGVudCAoY29udGVudCB3cmFwcGVyKVxuICogLSAuY3RhLXRpdGxlICh0aXRsZSBlbmhhbmNlbWVudCBmb3IgdGl0bGUtc2VjdGlvbiBiYXNlKVxuICogLSAuY3RhLXN1YnRpdGxlIChzdWJ0aXRsZSBlbmhhbmNlbWVudCBmb3Igc3VidGl0bGUtbGcgYmFzZSlcbiAqIC0gLmN0YS1kZXNjcmlwdGlvbiAoZGVzY3JpcHRpb24gZW5oYW5jZW1lbnQgZm9yIGRlc2NyaXB0aW9uLWxnIGJhc2UpXG4gKiAtIC5jdGEtZGlzY2xhaW1lciAoZGlzY2xhaW1lciBlbmhhbmNlbWVudCBmb3IgZGVzY3JpcHRpb24gYmFzZSlcbiAqIC0gLmN0YS1idXR0b25zIChidXR0b24gY29udGFpbmVyKVxuICogLSAuY3RhLWJ1dHRvbnMgLmJ0bi1oZXJpdGFnZSAoaGVyaXRhZ2UgYnV0dG9uIHNwYWNpbmcpXG4gKiBcbiAqIEdsb2JhbCBDbGFzc2VzIGZyb20gaW5kZXguY3NzOlxuICogLSBzdXJmYWNlLWRlZmF1bHQsIGxheW91dC1zZWN0aW9uLCBzY3JvbGwtc2VjdGlvbiAoY29udGFpbmVyKVxuICogLSBsYXlvdXQtY29udGFpbmVyIChjb250ZW50IHdyYXBwZXIpXG4gKiAtIHRpdGxlLWNhcmQsIHN1YnRpdGxlLWxnLCBkZXNjcmlwdGlvbi1sZywgZGVzY3JpcHRpb24gKHR5cG9ncmFwaHkpXG4gKiAtIHRleHQtbXV0ZWQgKHRleHQgY29sb3JpbmcpXG4gKiAtIGJ0biwgYnRuLWhlcml0YWdlLCBidG4tcHJpbWFyeSwgZXRjLiAoYnV0dG9uIHN5c3RlbSlcbiAqL1xuIiwiLyogRG9jc05hdmlnYXRpb24gQ29tcG9uZW50IFN0eWxlcyAqL1xuXG4vKiBEb2NzTmF2aWdhdGlvblNpZGViYXIgKi9cbi5kb2NzLW5hdmlnYXRpb24tc2lkZWJhciB7XG4gIC8qIEJhc2Ugc3R5bGVzIGFyZSBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzIGluIGNvbXBvbmVudCAqL1xufVxuXG4uZG9jcy1uYXZpZ2F0aW9uLXNpZGViYXItbW9iaWxlIHtcbiAgLyogTW9iaWxlLXNwZWNpZmljIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCAqL1xufVxuXG4uZG9jcy1uYXZpZ2F0aW9uLXNpZGViYXItb3BlbiB7XG4gIC8qIE9wZW4gc3RhdGUgaGFuZGxlZCB2aWEgVGFpbHdpbmQgdHJhbnNmb3JtIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyLWNsb3NlZCB7XG4gIC8qIENsb3NlZCBzdGF0ZSBoYW5kbGVkIHZpYSBUYWlsd2luZCB0cmFuc2Zvcm0gY2xhc3NlcyAqL1xufVxuXG4vKiBNb2JpbGUgTWVudSBUb2dnbGUgKi9cbi5kb2NzLW1vYmlsZS1tZW51LXRvZ2dsZSB7XG4gIC8qIFN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW1vYmlsZS1iYWNrZHJvcCB7XG4gIC8qIEJhY2tkcm9wIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIERvY3NOYXZpZ2F0aW9uVGFiICovXG4uZG9jcy1uYXYtdGFiIHtcbiAgLyogQmFzZSB0YWIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgaW4gY29tcG9uZW50ICovXG59XG5cbi5kb2NzLW5hdi10YWItYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi10YWItZXhwYW5kZWQge1xuICAvKiBFeHBhbmRlZCBzdGF0ZSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWV4cGFuZGFibGUge1xuICAvKiBFeHBhbmRhYmxlIGluZGljYXRvciBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWhvdmVyIHtcbiAgLyogSG92ZXIgZWZmZWN0cyBoYW5kbGVkIHZpYSBUYWlsd2luZCBob3ZlcjogY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtdGFiLWZvY3VzZWQge1xuICAvKiBGb2N1cyBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgZm9jdXM6IGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXRhYi1jb250YWluZXIge1xuICAvKiBDb250YWluZXIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXRhYi1jb250ZW50IHtcbiAgLyogQ29udGVudCBhcmVhIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cHMge1xuICAvKiBSZXNvdXJjZSBncm91cHMgY29udGFpbmVyIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIERvY3NOYXZpZ2F0aW9uUmVzb3VyY2VHcm91cCAqL1xuLmRvY3MtbmF2LXJlc291cmNlLWdyb3VwIHtcbiAgLyogQmFzZSByZXNvdXJjZSBncm91cCBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtaGVhZGVyIHtcbiAgLyogSGVhZGVyIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzIGluIGNvbXBvbmVudCAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1leHBhbmRlZCB7XG4gIC8qIEV4cGFuZGVkIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1jb2xsYXBzZWQge1xuICAvKiBDb2xsYXBzZWQgc3RhdGUgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LXJlc291cmNlLWdyb3VwLWV4cGFuZGFibGUge1xuICAvKiBFeHBhbmRhYmxlIGdyb3VwIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1zaW5nbGUge1xuICAvKiBTaW5nbGUgcmVzb3VyY2UgKG5vbi1leHBhbmRhYmxlKSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtaG92ZXIge1xuICAvKiBIb3ZlciBlZmZlY3RzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGhvdmVyOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1yZXNvdXJjZS1ncm91cC1mb2N1c2VkIHtcbiAgLyogRm9jdXMgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGZvY3VzOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1zdWItcmVzb3VyY2VzIHtcbiAgLyogU3ViLXJlc291cmNlcyBjb250YWluZXIgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLyogRG9jc05hdmlnYXRpb25JdGVtICovXG4uZG9jcy1uYXYtaXRlbSB7XG4gIC8qIEJhc2UgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyBpbiBjb21wb25lbnQgKi9cbn1cblxuLmRvY3MtbmF2LWl0ZW0tYWN0aXZlIHtcbiAgLyogQWN0aXZlIHN0YXRlIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWhvdmVyIHtcbiAgLyogSG92ZXIgZWZmZWN0cyBoYW5kbGVkIHZpYSBUYWlsd2luZCBob3ZlcjogY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1mb2N1c2VkIHtcbiAgLyogRm9jdXMgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGZvY3VzOiBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWRpc2FibGVkIHtcbiAgLyogRGlzYWJsZWQgc3RhdGUgc3R5bGVzIGhhbmRsZWQgdmlhIFRhaWx3aW5kIGNsYXNzZXMgKi9cbn1cblxuLmRvY3MtbmF2LWl0ZW0tbWFpbiB7XG4gIC8qIE1haW4gbGV2ZWwgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1zdWItcmVzb3VyY2Uge1xuICAvKiBTdWItcmVzb3VyY2UgbGV2ZWwgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1pbnRyb2R1Y3Rpb24ge1xuICAvKiBJbnRyb2R1Y3Rpb24gc2VjdGlvbiBpdGVtIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWF3cyB7XG4gIC8qIEFXUyByZXNvdXJjZSBpdGVtIHN0eWxlcyBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi5kb2NzLW5hdi1pdGVtLWF6dXJlIHtcbiAgLyogQXp1cmUgcmVzb3VyY2UgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1leHRlcm5hbCB7XG4gIC8qIEV4dGVybmFsIGxpbmsgaXRlbSBzdHlsZXMgaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4uZG9jcy1uYXYtaXRlbS1jbGlja2FibGUtb25seSB7XG4gIC8qIEVtcGhhc2l6ZXMgbm9uLWV4cGFuZGFibGUgbmF0dXJlIC0gaGFuZGxlZCB2aWEgVGFpbHdpbmQgY2xhc3NlcyAqL1xufVxuXG4vKiBSZXNwb25zaXZlIHV0aWxpdGllcyAqL1xuLm1vYmlsZS1oaWRkZW4ge1xuICAvKiBIaWRkZW4gb24gbW9iaWxlIC0gaGFuZGxlZCB2aWEgVGFpbHdpbmQgbGc6YmxvY2sgaGlkZGVuIGNsYXNzZXMgKi9cbn1cblxuLm1vYmlsZS1vcGVuIHtcbiAgLyogT3BlbiBvbiBtb2JpbGUgLSBoYW5kbGVkIHZpYSBUYWlsd2luZCBjbGFzc2VzICovXG59XG5cbi8qIEFuaW1hdGlvbiB1dGlsaXRpZXMgKi9cbi5yb3RhdGUtMTgwIHtcbiAgLyogSWNvbiByb3RhdGlvbiBoYW5kbGVkIHZpYSBUYWlsd2luZCB0cmFuc2Zvcm0gcm90YXRlLTE4MCAqL1xufVxuXG4vKiBGb2N1cyByaW5nIHV0aWxpdGllcyAqL1xuLmZvY3VzLXJpbmctb3JhbmdlIHtcbiAgLyogT3JhbmdlIGZvY3VzIHJpbmcgaGFuZGxlZCB2aWEgVGFpbHdpbmQgZm9jdXM6cmluZy1vcmFuZ2UtNTAwIGNsYXNzZXMgKi9cbn1cblxuLyogQWRkaXRpb25hbCB1dGlsaXR5IGNsYXNzZXMgZm9yIGNvbnNpc3RlbnQgc3BhY2luZyBhbmQgdGhlbWluZyAqL1xuLmRvY3MtbmF2LXNwYWNpbmctc20ge1xuICBAYXBwbHkgcHgtMiBweS0xO1xufVxuXG4uZG9jcy1uYXYtc3BhY2luZy1tZCB7XG4gIEBhcHBseSBweC0zIHB5LTI7XG59XG5cbi5kb2NzLW5hdi1zcGFjaW5nLWxnIHtcbiAgQGFwcGx5IHB4LTQgcHktMztcbn1cblxuLmRvY3MtbmF2LXRleHQtcHJpbWFyeSB7XG4gIEBhcHBseSB0ZXh0LXNsYXRlLTkwMCBkYXJrOnRleHQtd2hpdGU7XG59XG5cbi5kb2NzLW5hdi10ZXh0LXNlY29uZGFyeSB7XG4gIEBhcHBseSB0ZXh0LXNsYXRlLTYwMCBkYXJrOnRleHQtc2xhdGUtNDAwO1xufVxuXG4uZG9jcy1uYXYtdGV4dC1hY3RpdmUge1xuICBAYXBwbHkgdGV4dC1vcmFuZ2UtNjAwIGRhcms6dGV4dC1vcmFuZ2UtNDAwO1xufVxuXG4uZG9jcy1uYXYtYmctYWN0aXZlIHtcbiAgQGFwcGx5IGJnLW9yYW5nZS01MCBkYXJrOmJnLW9yYW5nZS05MDAvMjA7XG59XG5cbi5kb2NzLW5hdi1iZy1ob3ZlciB7XG4gIEBhcHBseSBob3ZlcjpiZy1zdG9uZS01MCBkYXJrOmhvdmVyOmJnLXNsYXRlLTgwMDtcbn1cblxuLmRvY3MtbmF2LWJvcmRlci1hY3RpdmUge1xuICBAYXBwbHkgYm9yZGVyLXItMiBib3JkZXItb3JhbmdlLTYwMDtcbn1cblxuLmRvY3MtbmF2LXRyYW5zaXRpb24ge1xuICBAYXBwbHkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwO1xufVxuXG4vKiBDdXN0b20gYW5pbWF0aW9ucyBmb3Igc21vb3RoIGV4cGFuZC9jb2xsYXBzZSAqL1xuQGtleWZyYW1lcyBkb2NzLW5hdi1leHBhbmQge1xuICBmcm9tIHtcbiAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBkb2NzLW5hdi1jb2xsYXBzZSB7XG4gIGZyb20ge1xuICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uZG9jcy1uYXYtZXhwYW5kIHtcbiAgYW5pbWF0aW9uOiBkb2NzLW5hdi1leHBhbmQgMC4zcyBlYXNlLW91dDtcbn1cblxuLmRvY3MtbmF2LWNvbGxhcHNlIHtcbiAgYW5pbWF0aW9uOiBkb2NzLW5hdi1jb2xsYXBzZSAwLjNzIGVhc2Utb3V0O1xufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5kb2NzLW5hdi1pdGVtLWFjdGl2ZSB7XG4gICAgQGFwcGx5IGJvcmRlci0yIGJvcmRlci1vcmFuZ2UtNjAwO1xuICB9XG4gIFxuICAuZG9jcy1uYXYtcmVzb3VyY2UtZ3JvdXAtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyLTIgYm9yZGVyLW9yYW5nZS02MDA7XG4gIH1cbiAgXG4gIC5kb2NzLW5hdi10YWItYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItb3JhbmdlLTYwMDtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZG9jcy1uYXYtdHJhbnNpdGlvbixcbiAgLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyLFxuICAucm90YXRlLTE4MCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIFByaW50IHN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmRvY3MtbmF2aWdhdGlvbi1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuZG9jcy1tb2JpbGUtbWVudS10b2dnbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgXG4gIC5kb2NzLW1vYmlsZS1iYWNrZHJvcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufSIsIi8qIERvY3VtZW50YXRpb24gUGFnZSBTdHlsZXMgLSBGb2xsb3dpbmcgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuXG4vKiBMYXlvdXQgRm91bmRhdGlvbiAqL1xuLmRvY3MtbGF5b3V0IHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN0b25lLTUwKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWJhc2UpO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEhlYWRlciAqL1xuLmRvY3MtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDQwO1xufVxuXG4uaGVhZGVyLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCAxcmVtO1xufVxuXG4uaGVhZGVyLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGhlaWdodDogNHJlbTtcbn1cblxuLmhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xufVxuXG4ubW9iaWxlLW1lbnUtdG9nZ2xlIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuXG4ubW9iaWxlLW1lbnUtdG9nZ2xlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3RvbmUtMTAwKTtcbn1cblxuLm1lbnUtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS02MDApO1xufVxuXG4uYnJhbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG59XG5cbi5icmFuZC1pY29uIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbn1cblxuLmJyYW5kIGgxIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4udmVyc2lvbiB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS02MDApO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG59XG5cbi8qIERvY3VtZW50YXRpb24gQ29udGFpbmVyICovXG4uZG9jcy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIE5hdmlnYXRpb24gU2lkZWJhciAqL1xuLmRvY3Mtc2lkZWJhciB7XG4gIHdpZHRoOiAxNnJlbTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA0cmVtO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDMwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4uc2lkZWJhci1oZWFkZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xufVxuXG4uc2lkZWJhci1oZWFkZXIgc3BhbiB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS05MDApO1xufVxuXG4uc2lkZWJhci1oZWFkZXIgYnV0dG9uIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTYwMCk7XG59XG5cbi5zaWRlYmFyLWhlYWRlciBidXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xufVxuXG4uc2lkZWJhci1jb250ZW50IHtcbiAgcGFkZGluZzogMXJlbTtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNHJlbSk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi8qIERvY3VtZW50YXRpb24gU2VhcmNoICovXG4uZG9jLXNlYXJjaCB7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnNlYXJjaC1pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTMwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS05MDApO1xufVxuXG4uc2VhcmNoLWlucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNzEsIDg1LCAxMDUsIDAuMSk7XG59XG5cbi5zZWFyY2gtaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTQwMCk7XG59XG5cbi8qIE5hdmlnYXRpb24gR3JvdXBzICovXG4ubmF2LWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLm5hdi1ncm91cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTUwMCk7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5uYXYtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLm5hdi1saXN0IGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cblxuLm5hdi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4ubmF2LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS0xMDApO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbn1cblxuLm5hdi1pdGVtLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlLWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWhlcml0YWdlLWRhcmspO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBNYWluIENvbnRlbnQgQXJlYSAqL1xuLmRvY3MtY29udGVudCB7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbi1sZWZ0OiAxNnJlbTtcbiAgcGFkZGluZzogMnJlbTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEFydGljbGUgKi9cbi5kb2MtYXJ0aWNsZSB7XG4gIG1heC13aWR0aDogNDhyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4vKiBEb2N1bWVudGF0aW9uIEhlYWRlciAqL1xuLmRvYy1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG59XG5cbi8qIFR5cG9ncmFwaHkgLSBGb2xsb3dpbmcgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuLnRpdGxlLWRvYyB7XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS43NXJlbSwgM3Z3LCAyLjVyZW0pO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnRpdGxlLXNlY3Rpb24ge1xuICBmb250LXNpemU6IGNsYW1wKDEuNXJlbSwgMi41dncsIDJyZW0pO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgbWFyZ2luLXRvcDogM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLmRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNjAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4vKiBUYWJsZSBvZiBDb250ZW50cyAqL1xuLmRvYy10b2Mge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS01MCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgcGFkZGluZzogMS41cmVtO1xuICBtYXJnaW46IDJyZW0gMDtcbn1cblxuLmRvYy10b2MgaDIge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtOTAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmRvYy10b2MgdWwsXG4uZG9jLXRvYyBvbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG59XG5cbi5kb2MtdG9jIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uZG9jLXRvYyBhIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5kb2MtdG9jIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tY29sb3ItaGVyaXRhZ2UpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLyogRG9jdW1lbnRhdGlvbiBTZWN0aW9ucyAqL1xuLmRvYy1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbn1cblxuLyogU3RlcCBOdW1iZXJzICovXG4uc3RlcC1udW1iZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhlcml0YWdlKTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcbn1cblxuLyogUmVxdWlyZW1lbnRzIExpc3QgKi9cbi5yZXF1aXJlbWVudHMtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cblxuLnJlcXVpcmVtZW50LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itc3RvbmUtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4ucmVxdWlyZW1lbnQtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi01MDApO1xuICBmbGV4LXNocmluazogMDtcbiAgbWFyZ2luLXRvcDogMC4xMjVyZW07XG59XG5cbi8qIFN0ZXAgTGlzdHMgKi9cbi5zdGVwLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgbWFyZ2luOiAxcmVtIDA7XG59XG5cbi5zdGVwLWxpc3QgbGkge1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLyogQ29kZSBCbG9ja3MgKi9cbi5kb2MtY29kZS1ibG9jayB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIG1hcmdpbjogMS41cmVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXNsYXRlLTcwMCk7XG59XG5cbi5jb2RlLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTgwMCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xufVxuXG4uY29kZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS0yMDApO1xufVxuXG4uY29weS1idXR0b24ge1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbn1cblxuLmNvcHktYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrKTtcbn1cblxuLmNvZGUtY29udGVudCB7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uY29kZS1jb250ZW50IGNvZGUge1xuICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTQwMCk7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLyogQ2FsbG91dCBCb3hlcyAtIEZvbGxvd2luZyBicmFuZCBndWlkZWxpbmVzICovXG4uY2FsbG91dC1pbmZvLFxuLmNhbGxvdXQtd2FybmluZyxcbi5jYWxsb3V0LWVycm9yLFxuLmNhbGxvdXQtc3VjY2VzcyB7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBtYXJnaW46IDEuNXJlbSAwO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkO1xufVxuXG4uY2FsbG91dC1pbmZvIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmx1ZS01MCk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTUwMCk7XG59XG5cbi5jYWxsb3V0LWluZm8gaDMge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5jYWxsb3V0LWluZm8gcCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNhbGxvdXQtd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXllbGxvdy01MCk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci15ZWxsb3ctNTAwKTtcbn1cblxuLmNhbGxvdXQtd2FybmluZyBoMyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci15ZWxsb3ctOTAwKTtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4uY2FsbG91dC13YXJuaW5nIHAge1xuICBjb2xvcjogdmFyKC0tY29sb3IteWVsbG93LTgwMCk7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogUHJvdmlkZXIgU3BlY2lmaWNhdGlvbnMgKi9cbi5wcm92aWRlci1zcGVjcyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMnJlbTtcbn1cblxuLnNwZWMtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itc3RvbmUtMjAwKTtcbn1cblxuLnNwZWMtdGFibGUgdGgge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdG9uZS01MCk7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1zdG9uZS0yMDApO1xufVxuXG4uc3BlYy10YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXN0b25lLTIwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xufVxuXG4uc3BlYy10YWJsZSB0ZDpmaXJzdC1jaGlsZCB7XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zcGVjLXRhYmxlIHRkOm50aC1jaGlsZCgyKSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3Itc2xhdGUtNjAwKTtcbn1cblxuLyogUmVzb3VyY2UgU3BlY2lmaWNhdGlvbnMgKi9cbi5yZXNvdXJjZS1zcGVjIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiAycmVtO1xufVxuXG4ucGFyYW0tbGlzdCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogMXJlbTtcbn1cblxuLnBhcmFtLWl0ZW0ge1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xufVxuXG4ucGFyYW0taXRlbS5pbnB1dCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJsdWUtNTApO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtMjAwKTtcbn1cblxuLnBhcmFtLWl0ZW0ub3V0cHV0IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JlZW4tNTApO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTIwMCk7XG59XG5cbi5wYXJhbS1pdGVtIGNvZGUge1xuICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLnBhcmFtLWl0ZW0uaW5wdXQgY29kZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG59XG5cbi5wYXJhbS1pdGVtLm91dHB1dCBjb2RlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTgwMCk7XG59XG5cbi5wYXJhbS1pdGVtIHAge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5wYXJhbS1pdGVtLmlucHV0IHAge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS03MDApO1xufVxuXG4ucGFyYW0taXRlbS5vdXRwdXQgcCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi03MDApO1xufVxuXG4vKiBNb2JpbGUgU3R5bGVzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5kb2NzLXNpZGViYXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cblxuICAuZG9jcy1zaWRlYmFyLm1vYmlsZS12aXNpYmxlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAubW9iaWxlLW1lbnUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5zaWRlYmFyLWhlYWRlci5tb2JpbGUtb25seSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5kb2NzLWNvbnRlbnQge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gIH1cblxuICAuc2lkZWJhci1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIHotaW5kZXg6IDI1O1xuICB9XG5cbiAgLyogTW9iaWxlLW9wdGltaXplZCB0eXBvZ3JhcGh5ICovXG4gIC50aXRsZS1kb2Mge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgfVxuXG4gIC50aXRsZS1zZWN0aW9uIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xuICB9XG5cbiAgLmRvYy10b2Mge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gIH1cblxuICAucmVxdWlyZW1lbnQtaXRlbSB7XG4gICAgcGFkZGluZzogMC43NXJlbTtcbiAgfVxuXG4gIC5jb2RlLWhlYWRlciB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAwLjVyZW07XG4gIH1cblxuICAuY29kZS1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICB9XG5cbiAgLnBhcmFtLWxpc3Qge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLnByb3ZpZGVyLXNwZWNzIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgc3VwcG9ydCAoaWYgbmVlZGVkIGxhdGVyKSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuZG9jcy1sYXlvdXQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTkwMCk7XG4gIH1cbiAgXG4gIC5kb2NzLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtODAwKTtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1zbGF0ZS03MDApO1xuICB9XG4gIFxuICAuYnJhbmQgaDEge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICBcbiAgLmRvY3Mtc2lkZWJhciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtODAwKTtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLWNvbG9yLXNsYXRlLTcwMCk7XG4gIH1cbn1cblxuLyogVXRpbGl0aWVzICovXG4ubW9iaWxlLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1vYmlsZS1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIFxuICAubW9iaWxlLW9ubHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5tb2JpbGUtb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59IiwiLyoqXG4gKiBGQVEgQ29tcG9uZW50IFN0eWxlcyAtIENvbXBvbmVudCBFbmhhbmNlbWVudCBMYXllclxuICogXG4gKiBJTVBPUlRBTlQ6IFRoaXMgZmlsZSBjb250YWlucyBjb21wb25lbnQtc3BlY2lmaWMgZW5oYW5jZW1lbnRzIG9ubHkuXG4gKiBHbG9iYWwgdHlwb2dyYXBoeSwgY29sb3JzLCBhbmQgc3BhY2luZyBhcmUgZGVmaW5lZCBpbiBzcmMvaW5kZXguY3NzXG4gKiBcbiAqIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiAxLiBCcmFuZCBGb3VuZGF0aW9uIChpbmRleC5jc3MpIC0gR2xvYmFsIHZhcmlhYmxlcyBhbmQgdHlwb2dyYXBoeVxuICogMi4gQ29tcG9uZW50IEVuaGFuY2VtZW50ICh0aGlzIGZpbGUpIC0gQ29tcG9uZW50LXNwZWNpZmljIHN0eWxlc1xuICogMy4gUGFnZSBDdXN0b21pemF0aW9uICh2aWEgc3R5bGVzIHByb3ApIC0gUGFnZS1sZXZlbCBvdmVycmlkZXNcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZBUSBJVEVNIC0gTUFJTiBDT05UQUlORVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEZBUSBJdGVtIENvbnRhaW5lclxuICogLSBCYXNlIGNvbnRhaW5lciBmb3IgRkFRIGl0ZW1zXG4gKiAtIFJldHVybnMgZGl2LCBub3Qgc2VjdGlvbiAoU2VjdGlvbiBQYXR0ZXJuIGNvbXBsaWFuY2UpXG4gKiAtIFN1cHBvcnRzIHZhcmlhbnRzIChwcmltYXJ5LCBzZWNvbmRhcnksIGhlcml0YWdlKVxuICovXG4uZmFxLWl0ZW0ge1xuICAvKiBDb21wb25lbnQgc3RydWN0dXJlICovXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBcbiAgLyogRVhUUkVNRSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyAqL1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTsgLyogfjMxcHggd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgXG4gIC8qIEJPUkRFUkxFU1MgZGVzaWduIC0gTk8gYm9yZGVycyAqL1xuICBib3JkZXI6IDA7IC8qIENSSVRJQ0FMOiBCb3JkZXJsZXNzIGRlc2lnbiBwZXIgc3R5bGluZyBzdGFuZGFyZCAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBcbiAgLyogQmFja2dyb3VuZCBhbmQgY29sb3JzICovXG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBcbiAgLyogRWxldmF0aW9uIHRocm91Z2ggc2hhZG93cyBpbnN0ZWFkIG9mIGJvcmRlcnMgKi9cbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIFN1YnRsZSBiYXNlIGVsZXZhdGlvbiAqL1xuICBcbiAgLyogU21vb3RoIHRyYW5zaXRpb25zICovXG4gIHRyYW5zaXRpb246IFxuICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgIGJveC1zaGFkb3cgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIEhvdmVyIHN0YXRlIC0gZWxldmF0aW9uIGNoYW5nZSwgTk8gYm9yZGVyIGNoYW5nZXMgKi9cbi5mYXEtaXRlbTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG4gIGJvcmRlcjogMDsgLyogTWFpbnRhaW4gYm9yZGVybGVzcyBkZXNpZ24gKi9cbn1cblxuLyogSGVyaXRhZ2UgdmFyaWFudCAtIDEwJSBydWxlIGNvbXBsaWFuY2Ugd2l0aCBCT1JERVJMRVNTIGRlc2lnbiAqL1xuLmZhcS1pdGVtLWhlcml0YWdlIHtcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIHNoYWRvdyBpbnN0ZWFkIG9mIGJvcmRlciAqL1xuICBib3JkZXI6IDA7IC8qIE5vIGJvcmRlcnMgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksIC8qIExlZnQgYWNjZW50ICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIEJhc2UgZWxldmF0aW9uICovXG4gIHBhZGRpbmctbGVmdDogY2FsYygodmFyKC0tc3BhY2UtNCkgKyB2YXIoLS1zcGFjZS0yKSkgKiAxLjMpOyAvKiBFeHRyYSBwYWRkaW5nIGZvciBhY2NlbnQgd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgXG4gIC8qIDMwJSBleHRyYSBzcGFjaW5nIGZvciBoZXJpdGFnZSBpdGVtcyAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMpIDA7IC8qIEV2ZW4gbW9yZSBnZW5lcm91cyBmb3IgaGVyaXRhZ2UgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMik7IC8qIFZlcnkgc3VidGxlIHRpbnQgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGQVEgQ09OVEVOVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mYXEtaXRlbS1jb250ZW50IHtcbiAgLyogQ29udGVudCBjb250YWluZXIgd2l0aCBFWFRSRU1FIHdoaXRlc3BhY2UgKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyk7IC8qIH4zMXB4IHdpdGggZXh0cmVtZSBzcGFjaW5nICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRkFRIFFVRVNUSU9OIEJVVFRPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogRkFRIFF1ZXN0aW9uIEJ1dHRvblxuICogLSBJbnRlcmFjdGl2ZSBidXR0b24gZm9yIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50XG4gKiAtIFRyYW5zcGFyZW50IGJ1dHRvbiB3aXRoIGZsZXggbGF5b3V0XG4gKi9cbi5mYXEtcXVlc3Rpb24tYnV0dG9uIHtcbiAgLyogTGF5b3V0ICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIHdpZHRoOiAxMDAlO1xuICBcbiAgLyogQnV0dG9uIHJlc2V0ICovXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIFxuICAvKiBTcGFjaW5nIHdpdGggZXh0cmVtZSB3aGl0ZXNwYWNlICovXG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMykgMDsgLyogQWRkIHZlcnRpY2FsIHBhZGRpbmcgZm9yIGJldHRlciB0b3VjaCB0YXJnZXQgKi9cbiAgXG4gIC8qIEVuc3VyZSBtaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBcbiAgLyogSW50ZXJhY3RpdmUgKi9cbiAgY3Vyc29yOiBwb2ludGVyO1xuICBcbiAgLyogVGV4dCBhbGlnbm1lbnQgKi9cbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgXG4gIC8qIEluaGVyaXQgZm9udCAqL1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgXG4gIC8qIFNtb290aCB0cmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uZmFxLXF1ZXN0aW9uLWJ1dHRvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogRm9jdXMgc3RhdGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5mYXEtcXVlc3Rpb24tYnV0dG9uOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4vKipcbiAqIEZBUSBRdWVzdGlvbiBUZXh0XG4gKiAtIFVzZXMgZ2xvYmFsIHRpdGxlLWNhcmQgY2xhc3MgZm9yIHR5cG9ncmFwaHlcbiAqIC0gT3ZlcnJpZGVzIG1hcmdpbiBmb3IgcHJvcGVyIGFsaWdubWVudFxuICovXG4uZmFxLXF1ZXN0aW9uLXRleHQge1xuICAvKiBFbnN1cmUgdGV4dCBncm93cyB0byBmaWxsIHNwYWNlICovXG4gIGZsZXg6IDE7XG4gIFxuICAvKiBPdmVycmlkZSB0aXRsZS1jYXJkIG1hcmdpbiBmb3IgYWxpZ25tZW50IHdpdGhpbiBidXR0b24gKi9cbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgXG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSB0aXRsZS1jYXJkIGNsYXNzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRkFRIElDT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZmFxLWljb24ge1xuICAvKiBJY29uIHBvc2l0aW9uaW5nIG9ubHkgLSBzaXplIGhhbmRsZWQgYnkgSWNvbiBjb21wb25lbnQgKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogRml4IGFsaWdubWVudCBpc3N1ZSAtIHJlbW92ZSBhbnkgbWFyZ2luICovXG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIFxuICAvKiBFbnN1cmUgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudCAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4vKiBPdmVycmlkZSBhbnkgaWNvbi1zbSBtYXJnaW4gdGhhdCBtaWdodCBiZSBpbmhlcml0ZWQgKi9cbi5mYXEtaWNvbi5pY29uLXNtIHtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4vKiBSb3RhdGUgaWNvbiB3aGVuIGV4cGFuZGVkICovXG4uZmFxLWV4cGFuZGVkIC5mYXEtaWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGQVEgQU5TV0VSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBGQVEgQW5zd2VyXG4gKiAtIFVzZXMgZ2xvYmFsIGRlc2NyaXB0aW9uIGNsYXNzIGZvciB0eXBvZ3JhcGh5XG4gKiAtIFNtb290aCByZXZlYWwgYW5pbWF0aW9uXG4gKi9cbi5mYXEtYW5zd2VyIHtcbiAgLyogRVhUUkVNRSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyAqL1xuICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbiAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICBcbiAgLyogVmlzdWFsIHNlcGFyYXRvciB3aXRoIHN1YnRsZSBzaGFkb3cgaW5zdGVhZCBvZiBib3JkZXIgKi9cbiAgYm9yZGVyLXRvcDogMDsgLyogTm8gYm9yZGVycyBpbiBib3JkZXJsZXNzIGRlc2lnbiAqL1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSAvIDAuMik7IC8qIFN1YnRsZSBpbnNldCBzaGFkb3cgKi9cbiAgXG4gIC8qIEFuaW1hdGlvbiAqL1xuICBhbmltYXRpb246IGZhZGVJbiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogVHlwb2dyYXBoeSBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzICovXG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTU9CSUxFIFJFU1BPTlNJVkVORVNTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5mYXEtaXRlbSB7XG4gICAgLyogU3RpbGwgZ2VuZXJvdXMgc3BhY2luZyBvbiBtb2JpbGUgKi9cbiAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTsgLyogfjIxcHggKi9cbiAgfVxuICBcbiAgLmZhcS1pdGVtLWNvbnRlbnQge1xuICAgIC8qIEFkanVzdGVkIGJ1dCBzdGlsbCBnZW5lcm91cyBwYWRkaW5nIG9uIG1vYmlsZSAqL1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpOyAvKiB+MjFweCAqL1xuICB9XG4gIFxuICAuZmFxLXF1ZXN0aW9uLWJ1dHRvbiB7XG4gICAgLyogRW5zdXJlIHRvdWNoLWZyaWVuZGx5IHNpemUgKi9cbiAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC5mYXEtYW5zd2VyIHtcbiAgICAvKiBTdGlsbCBnZW5lcm91cyBzcGFjaW5nIG9uIG1vYmlsZSAqL1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpO1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuZmFxLWl0ZW0tY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSk7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmZhcS1pdGVtIHtcbiAgICAvKiBNb3JlIGdlbmVyb3VzIHNwYWNpbmcgb24gZGVza3RvcCAqL1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuZmFxLWl0ZW06aG92ZXIge1xuICAgIC8qIEVuaGFuY2VkIGhvdmVyIGVmZmVjdCBvbiBkZXNrdG9wICovXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7IC8qIE1vcmUgcHJvbWluZW50IGVsZXZhdGlvbiAqL1xuICAgIGJvcmRlcjogMDsgLyogTWFpbnRhaW4gYm9yZGVybGVzcyAqL1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQUNDRVNTSUJJTElUWVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIHN0YXRlcyBtb3ZlZCB0byBidXR0b24gc3R5bGVzIGFib3ZlICovXG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmZhcS1pdGVtIHtcbiAgICAvKiBVc2Ugb3V0bGluZSBpbnN0ZWFkIG9mIGJvcmRlciBmb3IgaGlnaCBjb250cmFzdCAqL1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgYm9yZGVyOiAwOyAvKiBLZWVwIGJvcmRlcmxlc3MgKi9cbiAgfVxuICBcbiAgLmZhcS1pdGVtLWhlcml0YWdlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlcjogMDsgLyogS2VlcCBib3JkZXJsZXNzICovXG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmZhcS1pdGVtLFxuICAuZmFxLWljb24sXG4gIC5mYXEtYW5zd2VyIHtcbiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQRVJGT1JNQU5DRSBPUFRJTUlaQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbmltYXRpb25zICovXG4uZmFxLWl0ZW0sXG4uZmFxLWljb24ge1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4uZmFxLWl0ZW06bm90KDpob3ZlciksXG4uZmFxLWljb246bm90KC5yb3RhdGluZykge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn0iLCIvKipcbiAqIEZlYXR1cmVzIENvbXBvbmVudCBDU1MgLSBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAqIFxuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50XG4gKiAtIEJ1aWxkcyB1cG9uIGJyYW5kIGZvdW5kYXRpb24gdmFyaWFibGVzXG4gKiAtIEltcGxlbWVudHMgY29tcG9uZW50LXNwZWNpZmljIHN0eWxlc1xuICogLSBVc2VzIE9OTFkgQ1NTIHZhcmlhYmxlcyBmcm9tIGluZGV4LmNzc1xuICogLSBOTyBoYXJkLWNvZGVkIHZhbHVlcyBhbGxvd2VkXG4gKiBcbiAqIE1vYmlsZS1GaXJzdCBEZXNpZ24gd2l0aCBQcm9mZXNzaW9uYWwgVmlzdWFsIEhpZXJhcmNoeVxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZlYXR1cmUgQ2FyZCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5mZWF0dXJlLWNhcmQge1xuICAvKiBDYXJkIGZvdW5kYXRpb24gLSBib3JkZXJsZXNzIGRlc2lnbiAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIFxuICAvKiBUcmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG59XG5cbi8qIEhvdmVyIHN0YXRlICovXG4uZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG59XG5cbi8qIEFjdGl2ZSBzdGF0ZSAqL1xuLmZlYXR1cmUtY2FyZDphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWFjdGl2ZSk7XG59XG5cbi8qIENsZWFuIHVwIHdpbGwtY2hhbmdlIGFmdGVyIGludGVyYWN0aW9uICovXG4uZmVhdHVyZS1jYXJkOm5vdCg6aG92ZXIpIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIFRyYW5zcGFyZW50IHZhcmlhbnQgLSBib3JkZXJsZXNzICovXG4uZmVhdHVyZS1jYXJkLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogMDtcbn1cblxuLmZlYXR1cmUtY2FyZC10cmFuc3BhcmVudDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItY2FyZCkgLyAwLjUpO1xuICBib3JkZXI6IDA7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRmVhdHVyZSBDb250ZW50IExheW91dFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgLyogRmxleGJveCBsYXlvdXQgZm9yIHZlcnRpY2FsIGNlbnRlcmluZyAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEljb24gY29udGFpbmVyIHNwYWNpbmcgaGFuZGxlZCBieSBpY29uLmNzcyBhbmQgZmxleGJveCBnYXAgKi9cblxuLyogVHlwb2dyYXBoeSBzcGFjaW5nIC0gdXNlcyBnbG9iYWwgY2xhc3NlcyAqL1xuLmZlYXR1cmUtY2FyZC1jb250ZW50IC50aXRsZS1jYXJkIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5mZWF0dXJlLWNhcmQtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgLyogTGltaXQgd2lkdGggZm9yIGJldHRlciByZWFkYWJpbGl0eSAqL1xuICBtYXgtd2lkdGg6IDQyY2g7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZlYXR1cmUgVGFnc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtdGFncyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZmVhdHVyZS10YWcge1xuICAvKiBUYWcgc3R5bGluZyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMyk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBcbiAgLyogU3VidGxlIGludGVyYWN0aW9uICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uZmVhdHVyZS10YWc6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC44KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJY29uIEFuaW1hdGlvbnMgKENvbXBvbmVudCBMYXllcilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5pY29uLXB1bHNlIHtcbiAgYW5pbWF0aW9uOiBpY29uUHVsc2UgMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKSBpbmZpbml0ZTtcbn1cblxuLmljb24tc3BpbiB7XG4gIGFuaW1hdGlvbjogaWNvblNwaW4gM3MgbGluZWFyIGluZmluaXRlO1xufVxuXG4uaWNvbi1pbnRlcmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uZmVhdHVyZS1jYXJkOmhvdmVyIC5pY29uLWludGVyYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSg1ZGVnKTtcbn1cblxuLyogQW5pbWF0aW9uIGtleWZyYW1lcyAqL1xuQGtleWZyYW1lcyBpY29uUHVsc2Uge1xuICAwJSwgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBpY29uU3BpbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIE1vYmlsZSBSZXNwb25zaXZlbmVzc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICAgIC8qIFJlZHVjZSBob3ZlciBsaWZ0IG9uIG1vYmlsZSAqL1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICB9XG4gIFxuICAuZmVhdHVyZS10YWdzIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICB9XG4gIFxuICAuZmVhdHVyZS10YWcge1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMSkgKiAwLjc1KSB2YXIoLS1zcGFjZS0yKTtcbiAgfVxufVxuXG4vKiBTbWFsbCBtb2JpbGUgb3B0aW1pemF0aW9uICovXG5AbWVkaWEgKG1heC13aWR0aDogMzc1cHgpIHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGV0IEVuaGFuY2VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNyk7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQtY29udGVudCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBEZXNrdG9wIEVuaGFuY2VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLnRpdGxlLWNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS01KTtcbiAgICBtYXgtd2lkdGg6IDQ4Y2g7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRm9jdXMgU3RhdGVzIChBY2Nlc3NpYmlsaXR5KVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmZlYXR1cmUtY2FyZDpmb2N1cy13aXRoaW4ge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWZvY3VzKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhlcml0YWdlIFJlZCBDb21wbGlhbmNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBXaGVuIGZlYXR1cmUgaGFzIGhlcml0YWdlIGljb24sIGFkZCBleHRyYSBzcGFjaW5nICovXG4uZmVhdHVyZS1jYXJkOmhhcyguaWNvbi1jb250YWluZXItaGVyaXRhZ2UpIHtcbiAgLyogMzAlIGV4dHJhIHNwYWNpbmcgZm9yIGhlcml0YWdlIGVsZW1lbnRzICovXG4gIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTQpICogMS4zKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgR3JpZCBMYXlvdXQgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogV2hlbiBmZWF0dXJlcyBhcmUgaW4gYSBncmlkICovXG4ubGF5b3V0LWdyaWQtMyAuZmVhdHVyZS1jYXJkLFxuLmxheW91dC1ncmlkLTQgLmZlYXR1cmUtY2FyZCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmxheW91dC1ncmlkLTMgLmZlYXR1cmUtY2FyZC1jb250ZW50LFxuLmxheW91dC1ncmlkLTQgLmZlYXR1cmUtY2FyZC1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5mZWF0dXJlLWNhcmQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQ6Zm9jdXMtd2l0aGluIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAzcHg7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLXRhZyB7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSZWR1Y2VkIE1vdGlvbiBTdXBwb3J0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZmVhdHVyZS1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG4gIFxuICAuZmVhdHVyZS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5pY29uLXB1bHNlLFxuICAuaWNvbi1zcGluIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbiAgXG4gIC5pY29uLWludGVyYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByaW50IFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmZlYXR1cmUtY2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBvdXRsaW5lOiAxcHggc29saWQgIzAwMDtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgXG4gIC5mZWF0dXJlLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLmZlYXR1cmUtdGFnIHtcbiAgICBvdXRsaW5lOiAxcHggc29saWQgIzAwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59IiwiLyogRmxvYXRpbmcgQ1RBIENvbXBvbmVudCBTdHlsZXMgLSBGTEFUIERFU0lHTiAyMDI1ICovXG4vKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgb25seSAtIHRoZW1lIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzICovXG5cbi8qIEZsb2F0aW5nIENUQSBDb250YWluZXIgKi9cbi5mbG9hdGluZy1jdGEge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMnJlbTtcbiAgcmlnaHQ6IDJyZW07XG4gIHotaW5kZXg6IDQwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbi8qIEZsb2F0aW5nIENUQSBCdXR0b24gRW5oYW5jZW1lbnQgLSBVc2VzIGJyYW5kIGZvdW5kYXRpb24gKi9cbi5mbG9hdGluZy1jdGEtYnV0dG9uLWVuaGFuY2VkIHtcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1jb2xvcnMpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZmxvYXRpbmctY3RhLWJ1dHRvbi1lbmhhbmNlZDpob3ZlciB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLyogRmxvYXRpbmcgQ1RBIENvbnRlbnQgKi9cbi5mbG9hdGluZy1jdGEtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xufVxuXG4uZmxvYXRpbmctY3RhLXRleHQge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uZmxvYXRpbmctY3RhLWljb24ge1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xufVxuXG4vKiBIaWRkZW4gU3RhdGUgKi9cbi5mbG9hdGluZy1jdGEtLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIFJlc3BvbnNpdmUgRGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmZsb2F0aW5nLWN0YSB7XG4gICAgYm90dG9tOiAxcmVtO1xuICAgIHJpZ2h0OiAxcmVtO1xuICB9XG4gIFxuICAuZmxvYXRpbmctY3RhLWJ1dHRvbi1lbmhhbmNlZCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICB9XG4gIFxuICAuZmxvYXRpbmctY3RhLXRleHQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5mbG9hdGluZy1jdGEge1xuICAgIGJvdHRvbTogMXJlbTtcbiAgICByaWdodDogMXJlbTtcbiAgfVxufVxuIiwiLyogRmxvYXRpbmcgVGhlbWUgVG9nZ2xlIENvbXBvbmVudCBTdHlsZXMgLSBGTEFUIERFU0lHTiAyMDI1ICovXG4vKiBDUklUSUNBTDogQ29tcG9uZW50LXNwZWNpZmljIHN0eWxpbmcgb25seSAtIHRoZW1lIGZvdW5kYXRpb24gaW4gaW5kZXguY3NzICovXG5cbi8qIEZsb2F0aW5nIFRoZW1lIFRvZ2dsZSBDb250YWluZXIgKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIHotaW5kZXg6IDUwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZSB7XG4gICAgdG9wOiAxLjVyZW07XG4gICAgcmlnaHQ6IDEuNXJlbTtcbiAgfVxufVxuXG4vKiBGbG9hdGluZyBUaGVtZSBUb2dnbGUgQnV0dG9uIEVuaGFuY2VtZW50IC0gVXNlcyBicmFuZCBmb3VuZGF0aW9uICovXG4uZmxvYXRpbmctdGhlbWUtdG9nZ2xlLWJ1dHRvbi1lbmhhbmNlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAzcmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpIC8gMC45NSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tY29sb3JzKTtcbn1cblxuLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQ6Zm9jdXMge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogVGhlbWUgVG9nZ2xlIEljb24gKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbiB7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tY29sb3JzKTtcbn1cblxuLyogSWNvbiBTdGF0ZXMgKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWxpZ2h0IC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tc3VuIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWxpZ2h0IC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5mbG9hdGluZy10aGVtZS10b2dnbGUtLWRhcmsgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1pY29uLS1zdW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZmxvYXRpbmctdGhlbWUtdG9nZ2xlLS1kYXJrIC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBSZXNwb25zaXZlIERlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICAgIHRvcDogMC43NXJlbTtcbiAgICByaWdodDogMC43NXJlbTtcbiAgfVxuICBcbiAgLmZsb2F0aW5nLXRoZW1lLXRvZ2dsZS1idXR0b24tZW5oYW5jZWQge1xuICAgIHdpZHRoOiAyLjVyZW07XG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gIH1cbiAgXG4gIC5mbG9hdGluZy10aGVtZS10b2dnbGUtaWNvbiB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG59XG4iLCIvKipcbiAqIEZvb3RlciBDb21wb25lbnQgU3R5bGVzIC0gU3RhbmRhcmRzLUNvbXBsaWFudCBUaHJlZS1MYXllciBBcmNoaXRlY3R1cmVcbiAqIFxuICogRm9sbG93cyBhcmNoaXRlY3R1cmUtc3RhbmRhcmQubWQgd2l0aCBjb21wbGV0ZSBDU1MgdmFyaWFibGUgdXNhZ2UsXG4gKiBtb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ24sIGFuZCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uXG4gKiBJbnRlZ3JhdGVzIHdpdGggUFdBIGFuaW1hdGlvbiBzeXN0ZW0gYW5kIGFjY2Vzc2liaWxpdHkgc3RhbmRhcmRzLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb290ZXIgTWFpbiBDb250YWluZXIgKFRocmVlLUxheWVyIEFyY2hpdGVjdHVyZSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mb290ZXItbWFpbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlcjogMDsgLyogQm9yZGVybGVzcyBkZXNpZ24gKi9cbiAgYm94LXNoYWRvdzogMCAtMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBUb3AgZWxldmF0aW9uIGZvciBzZXBhcmF0aW9uICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTE2KSAwO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2JpbGUtRmlyc3QgUmVzcG9uc2l2ZSBHcmlkIFN5c3RlbVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEyKTtcbn1cblxuLyogVGFibGV0IExheW91dCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTIpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgTGF5b3V0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xNik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJyYW5kIFNlY3Rpb24gKEhlcml0YWdlIFJlZCBDb21wbGlhbmNlKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvb3Rlci1icmFuZC1zZWN0aW9uIHtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbn1cblxuLyogSGVyaXRhZ2UgUmVkIENvbXBsaWFuY2U6IDMwJSBleHRyYSBzcGFjaW5nIGFyb3VuZCByZWQgbG9nbyAqL1xuLmZvb3Rlci1sb2dvLWNvbnRhaW5lciB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpOyAvKiBJbmNyZWFzZWQgZnJvbSBzcGFjZS00IGZvciAzMCUgZXh0cmEgc3BhY2luZyAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSAwOyAvKiBBZGRpdGlvbmFsIHBhZGRpbmcgZm9yIGhlcml0YWdlIHJlZCBlbGVtZW50ICovXG59XG5cbi5mb290ZXItbG9nbyB7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtOCk7XG4gIHdpZHRoOiBhdXRvO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi5mb290ZXItbG9nbzpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKHZhcigtLXNwYWNlLTAtNSkgKiAtMSkpOyAvKiBVc2Ugc3BhY2luZyB2YXJpYWJsZSBmb3IgLTJweCAqL1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLyogQWRkcmVzcyBlbGVtZW50IHN0eWxpbmcgZm9yIHNlbWFudGljIEhUTUwgKi9cbi5mb290ZXItYWRkcmVzcyB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgLyogUmVzZXQgZGVmYXVsdCBpdGFsaWMgc3R5bGUgKi9cbn1cblxuLyogVHlwb2dyYXBoeSB1c2VzIGdsb2JhbCBjbGFzc2VzIC0gYWRkaXRpb25hbCBzcGFjaW5nIG9ubHkgKi9cbi5mb290ZXItYnJhbmQtc2VjdGlvbiAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgLyogTGluZSBoZWlnaHQgaW5oZXJpdGVkIGZyb20gZ2xvYmFsIC5kZXNjcmlwdGlvbiBjbGFzcyAqL1xufVxuXG4uZm9vdGVyLWJyYW5kLXNlY3Rpb24gLmRlc2NyaXB0aW9uOmxhc3Qtb2YtdHlwZSB7XG4gIC8qIEZvbnQgc3R5bGUgaW5oZXJpdGVkIGZyb20gZ2xvYmFsIGNsYXNzZXMgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTb2NpYWwgTGlua3MgKFRvdWNoLU9wdGltaXplZCAmIEhlcml0YWdlIFJlZCBDb21wbGlhbnQpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZm9vdGVyLXNvY2lhbC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmZvb3Rlci1zb2NpYWwtbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNwYWNlLTEwKTsgLyogNDBweCAqL1xuICBoZWlnaHQ6IHZhcigtLXNwYWNlLTEwKTsgLyogNDBweCAqL1xuICBtaW4td2lkdGg6IDQ4cHg7IC8qIFRvdWNoIHRhcmdldCBjb21wbGlhbmNlICovXG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjEpO1xuICBib3JkZXI6IDA7IC8qIEJvcmRlcmxlc3MgZGVzaWduICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgZWxldmF0aW9uICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmZvb3Rlci1zb2NpYWwtbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7IC8qIExpZnQgb24gaG92ZXIgKi9cbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDgpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG59XG5cbi5mb290ZXItc29jaWFsLWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSk7IC8qIFNoYWRvdy1iYXNlZCBmb2N1cyByaW5nICovXG59XG5cbi8qIEljb25zIHVzZSB0aGUgY2VudHJhbGl6ZWQgaWNvbiBzeXN0ZW0gLSBubyBjdXN0b20gc3R5bGluZyBuZWVkZWQgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvb3RlciBDb2x1bW5zIChTdGFuZGFyZHMtQ29tcGxpYW50IFR5cG9ncmFwaHkpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZm9vdGVyLWNvbHVtbiB7XG4gIG1pbi13aWR0aDogMDtcbn1cblxuLyogVHlwb2dyYXBoeSB1c2VzIGdsb2JhbCBjbGFzc2VzIC0gc3BhY2luZyBhZGp1c3RtZW50cyBvbmx5ICovXG4uZm9vdGVyLWNvbHVtbiAudGl0bGUtY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uZm9vdGVyLWxpbmstbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmZvb3Rlci1saW5rLWl0ZW0ge1xuICBtYXJnaW46IDA7XG59XG5cbi5mb290ZXItbGluayB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIC8qIFR5cG9ncmFwaHkgaGFuZGxlZCBieSBnbG9iYWwgY2xhc3NlcyAqL1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSAwO1xufVxuXG4uZm9vdGVyLWxpbms6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS1weCk7IC8qIFVzZSBzcGFjaW5nIHZhcmlhYmxlIGZvciAxcHggKi9cbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgdHJhbnNpdGlvbjogd2lkdGggdmFyKC0tdGltaW5nLW1lZGl1bSkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKTtcbn1cblxuLmZvb3Rlci1saW5rOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1zcGFjZS0wLTUpKTsgLyogVXNlIHNwYWNpbmcgdmFyaWFibGUgZm9yIDJweCAqL1xufVxuXG4uZm9vdGVyLWxpbms6aG92ZXI6OmFmdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb290ZXItbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KTsgLyogU2hhZG93LWJhc2VkIGZvY3VzIHJpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvb3RlciBCb3R0b20gKE1vYmlsZS1GaXJzdCBMZWdhbCBMaW5rcylcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mb290ZXItYm90dG9tIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTIpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtOCk7XG4gIGJvcmRlcjogMDsgLyogQm9yZGVybGVzcyBkZXNpZ24gKi9cbiAgYm94LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogU3VidGxlIHRvcCBzZXBhcmF0b3IgKi9cbn1cblxuLmZvb3Rlci1ib3R0b20tY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5mb290ZXItYm90dG9tLWNvbnRlbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxufVxuXG4vKiBUeXBvZ3JhcGh5IHVzZXMgZ2xvYmFsIGNsYXNzZXMgLSBtYXJnaW4gYWRqdXN0bWVudHMgb25seSAqL1xuLmZvb3Rlci1ib3R0b20tY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDA7XG59XG5cbi5mb290ZXItbGVnYWwtbGlua3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmZvb3Rlci1sZWdhbC1saW5rcyB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxufVxuXG4uZm9vdGVyLWxlZ2FsLWxpbmsge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAvKiBUeXBvZ3JhcGh5IGhhbmRsZWQgYnkgZ2xvYmFsIGNsYXNzZXMgKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtMik7IC8qIEluY3JlYXNlZCBwYWRkaW5nIGZvciA0OHB4IHRvdWNoIHRhcmdldCAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7IC8qIFdDQUcgMi4xIEFBIHRvdWNoIHRhcmdldCBjb21wbGlhbmNlICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5mb290ZXItbGVnYWwtbGluazpob3ZlciB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLmZvb3Rlci1sZWdhbC1saW5rOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpOyAvKiBTaGFkb3ctYmFzZWQgZm9jdXMgcmluZyAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTW9iaWxlLUZpcnN0IFJlc3BvbnNpdmUgRGVzaWduICYgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTbWFsbCBNb2JpbGUgRGV2aWNlcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5mb290ZXItbWFpbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIDA7XG4gIH1cbiAgXG4gIC5mb290ZXItZ3JpZCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuICBcbiAgLmZvb3Rlci1zb2NpYWwtY29udGFpbmVyIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIFxuICAuZm9vdGVyLXNvY2lhbC1saW5rIHtcbiAgICB3aWR0aDogdmFyKC0tc3BhY2UtOSk7IC8qIDM2cHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTkpO1xuICB9XG4gIFxuICAuZm9vdGVyLWxlZ2FsLWxpbmtzIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBY2Nlc3NpYmlsaXR5IEVuaGFuY2VtZW50cyAoV0NBRyAyLjEgQUEpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZm9vdGVyLWxvZ28sXG4gIC5mb290ZXItc29jaWFsLWxpbmssXG4gIC5mb290ZXItbGluayB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5mb290ZXItbG9nbzpob3ZlcixcbiAgLmZvb3Rlci1zb2NpYWwtbGluazpob3ZlcixcbiAgLmZvb3Rlci1saW5rOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5mb290ZXItc29jaWFsLWxpbmsge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpOyAvKiBTdHJvbmcgc2hhZG93IGZvciBjb250cmFzdCAqL1xuICB9XG4gIFxuICAuZm9vdGVyLWxpbmsge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG4gIFxuICAuZm9vdGVyLWJvdHRvbSB7XG4gICAgYm94LXNoYWRvdzogMCAtMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOyAvKiBTdHJvbmdlciBzZXBhcmF0b3Igc2hhZG93ICovXG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mb290ZXItbG9nbyxcbi5mb290ZXItc29jaWFsLWxpbmssXG4uZm9vdGVyLWxpbmsge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IC8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiAqL1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IC8qIFByZXZlbnQgZmxpY2tlcmluZyAqL1xufVxuXG4uZm9vdGVyLXNvY2lhbC1jb250YWluZXIsXG4uZm9vdGVyLWxpbmstbGlzdCB7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07IC8qIE9wdGltaXplIGZvciBhbmltYXRpb25zICovXG59XG5cbi8qIENyaXRpY2FsIENTUyBoaW50IGZvciBhYm92ZS10aGUtZm9sZCBvcHRpbWl6YXRpb24gKi9cbi8qXG4uZm9vdGVyLW1haW57YmFja2dyb3VuZC1jb2xvcjpyZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO2JvcmRlcjowO2JveC1zaGFkb3c6MCAtMXB4IDNweCByZ2JhKDAsMCwwLDAuMDUpO3BhZGRpbmc6dmFyKC0tc3BhY2UtMTYpIDB9XG4uZm9vdGVyLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOnZhcigtLXNwYWNlLTgpfVxuKi8iLCIvKipcbiAqIEhlYWRlciBDb21wb25lbnQgRW5oYW5jZW1lbnQgTGF5ZXIgKExheWVyIDIpXG4gKiBcbiAqIFRoaXMgQ1NTIGZpbGUgcHJvdmlkZXMgY29tcG9uZW50LXNwZWNpZmljIGVuaGFuY2VtZW50cyB0aGF0IGJ1aWxkIHVwb246XG4gKiAtIExheWVyIDE6IEJyYW5kIGZvdW5kYXRpb24gKHRoZW1lIHZhcmlhYmxlcywgdHlwb2dyYXBoeSBjbGFzc2VzIGluIGluZGV4LmNzcylcbiAqIC0gTGF5ZXIgMjogQ29tcG9uZW50IGVuaGFuY2VtZW50cyAodGhpcyBmaWxlIC0gbGF5b3V0LCBzcGFjaW5nLCBpbnRlcmFjdGlvbnMpXG4gKiAtIExheWVyIDM6IFBhZ2UgY3VzdG9taXphdGlvbiAodmlhIGNvbXBvbmVudCdzIHN0eWxlcyBwcm9wKVxuICogXG4gKiBLZXkgUHJpbmNpcGxlczpcbiAqIC0gUmVsaWVzIG9uIGdsb2JhbCB0eXBvZ3JhcGh5IGNsYXNzZXMgKGFwcGxpZWQgaW4gY29tcG9uZW50IEpTWClcbiAqIC0gUHJvdmlkZXMgc3RydWN0dXJhbCBhbmQgaW50ZXJhY3RpdmUgZW5oYW5jZW1lbnRzIG9ubHlcbiAqIC0gRGVzaWduZWQgdG8gYmUgZWFzaWx5IG92ZXJyaWRlYWJsZSB2aWEgc3R5bGUgcHJvcHNcbiAqIC0gTW9iaWxlLWZpcnN0IHdpdGggcHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnRcbiAqIFxuICogVHlwb2dyYXBoeSBVc2FnZTpcbiAqIC0gQ29tcG9uZW50IGFwcGxpZXM6IGRlc2NyaXB0aW9uIGNsYXNzIGNvbnNpc3RlbnRseSBmb3IgYWxsIG5hdmlnYXRpb24gdGV4dFxuICogLSBDU1MgaGFuZGxlczogc3BhY2luZywgYWxpZ25tZW50LCB0cmFuc2l0aW9ucyBvbmx5IChOT1QgZm9udC1zaXplIG9yIGZvbnQtd2VpZ2h0KVxuICovXG5cbi8qID09PT09IFNUUlVDVFVSQUwgRU5IQU5DRU1FTlRTID09PT09ICovXG5cbi8qIENvbnRhaW5lciAtIEVuaGFuY2VkIHN0aWNreSBwb3NpdGlvbmluZyB3aXRoIGJhY2tkcm9wIGJsdXIgb3B0aW1pemF0aW9uICovXG4uaGVhZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbiAgei1pbmRleDogNTA7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLWJhY2tncm91bmQpIC8gMC45NSk7XG4gIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTtcbiAgY29udGFpbmVyLW5hbWU6IGhlYWRlcjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMnB4KTtcbiAgLyogYm9yZGVyLWJvdHRvbSByZW1vdmVkIGZvciBjbGVhbmVyIGxvb2sgKi9cbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsgLyogQWxsb3cgZHJvcGRvd25zIHRvIGV4dGVuZCBiZXlvbmQgY29udGFpbmVyICovXG4gIFxuICAvKiBQZXJmb3JtYW5jZSBmYWxsYmFjayBmb3IgZGV2aWNlcyB0aGF0IGRvbid0IHN1cHBvcnQgYmFja2Ryb3AtZmlsdGVyICovXG4gIEBzdXBwb3J0cyBub3QgKGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMnB4KSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIH1cbiAgXG4gIC8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLyoqXG4gKiBBTklNQVRJT05TOiBUd28tTGF5ZXIgUFdBIFNjcm9sbCBBbmltYXRpb25zIGFyZSBkZWZpbmVkIGdsb2JhbGx5IGluIHNyYy9pbmRleC5jc3NcbiAqIENvbXBvbmVudCB1c2VzOiBwd2Etc2Nyb2xsLXNlY3Rpb24sIHB3YS1zY3JvbGwtZmFkZVxuICogTm8gbG9jYWwgYW5pbWF0aW9uIGRlZmluaXRpb25zIG5lZWRlZCAtIGRlbGVnYXRlcyB0byBnbG9iYWwgc3lzdGVtLlxuICovXG5cbi8qIEFsaWdubWVudCBDb250YWluZXIgLSBJbmhlcml0cyBmcm9tIGxheW91dC1jb250YWluZXIgd2l0aCBIZWFkZXItU3BlY2lmaWMgSGVpZ2h0ICovXG4uaGVhZGVyLWNvbnRhaW5lciAubGF5b3V0LWNvbnRhaW5lciB7XG4gIC8qIEZsZXhpYmxlIGhlaWdodCB0byBhY2NvbW1vZGF0ZSBib3RoIHNpbmdsZS1saW5lIGFuZCB3cmFwcGVkIG5hdmlnYXRpb24gKi9cbiAgLyogbWluLWhlaWdodCByZW1vdmVkIHRvIGFsbG93IG5hdHVyYWwgY29udGVudCBzaXppbmcgKi9cbiAgaGVpZ2h0OiBhdXRvOyAvKiBBbGxvdyBuYXR1cmFsIGhlaWdodCBleHBhbnNpb24gKi9cbiAgLyogRGVza3RvcDogbGF5b3V0LXNlY3Rpb24tc20gZXF1aXZhbGVudCAoNHJlbSA9IDY0cHgpIG1pbmltdW0gKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgLyogYm9yZGVyLWNvbG9yIHJlbW92ZWQgdG8gZWxpbWluYXRlIHZlcnRpY2FsIGJvcmRlcnMgKi9cbiAgLyogVXNlIENTUyB2YXJpYWJsZXMgZm9yIGFsbCBwcm9wZXJ0aWVzIHRvIGVuc3VyZSB0aHJlZS1sYXllciBhcmNoaXRlY3R1cmUgY29tcGxpYW5jZSAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogQ2VudGVyIHRoZSB3cmFwcGVyICovXG4gIC8qIFZlcnRpY2FsIGNlbnRlcmluZyB3aXRoaW4gY29udGFpbmVyIC0gd2lsbCBzaGlmdCB0byBmbGV4LXN0YXJ0IHdoZW4gd3JhcHBlZCAqL1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAvKiBBbGxvdyBkcm9wZG93bnMgdG8gZXh0ZW5kIGJleW9uZCBjb250YWluZXIgKi9cbiAgLyogU21hcnQgcGFkZGluZyB0aGF0IGFkYXB0cyB0byBjb250ZW50ICovXG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICAvKiBGaXhlZCB3aWR0aCB3aXRoIHByb3BlciBib3VuZGFyaWVzIHRvIHByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLyogVXNlIGZ1bGwgd2lkdGggdG8gY29udGFpbiBhbGwgY29udGVudCAqL1xuICBtaW4td2lkdGg6IDA7IC8qIEFsbG93IHNocmlua2luZyBvbiBzbWFsbCB2aWV3cG9ydHMgKi9cbiAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OyAvKiBFbnN1cmUgaXQgZG9lc24ndCBleGNlZWQgdmlld3BvcnQgKi9cbiAgbWFyZ2luOiAwIGF1dG87IC8qIENlbnRlciBob3Jpem9udGFsbHkgKi9cbiAgLyogTm90ZTogaG9yaXpvbnRhbCBwYWRkaW5nIGluaGVyaXRlZCBmcm9tIGxheW91dC1jb250YWluZXIgY2xhc3MgKi9cbn1cblxuLyogV3JhcHBlciAtIFNpbXBsaWZpZWQgZmxleCBsYXlvdXQgd2l0aCBwcm9wZXIgY29udGFpbm1lbnQgKi9cbi5oZWFkZXItd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7IC8qIFVzZSBmbGV4Ym94IGZvciBiZXR0ZXIgd2lkdGggcHJvcGFnYXRpb24gKi9cbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAvKiBTcGFjZSBiZXR3ZWVuIGxvZ28gYW5kIG5hdiBpdGVtcyAqL1xuICBnYXA6IHZhcigtLXNwYWNlLTQpOyAvKiBSZWR1Y2VkIGdhcCBzaW5jZSBuYXYgaGFuZGxlcyBpbnRlcm5hbCBzcGFjaW5nICovXG4gIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBhdmFpbGFibGUgd2lkdGggZnJvbSBjb250YWluZXIgKi9cbiAgbWF4LXdpZHRoOiAxMjAwcHg7IC8qIFNldCBtYXhpbXVtIHdpZHRoIHRvIHByZXZlbnQgZXhjZXNzaXZlIGV4cGFuc2lvbiAqL1xuICBoZWlnaHQ6IGF1dG87IC8qIEFsbG93IG5hdHVyYWwgaGVpZ2h0IGJhc2VkIG9uIGNvbnRlbnQgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwIGF1dG87IC8qIENlbnRlciB0aGUgd3JhcHBlciB3aXRoaW4gdGhlIGNvbnRhaW5lciAqL1xufVxuXG4vKiBXaGVuIG5hdmlnYXRpb24gd3JhcHMgKGRldGVjdGVkIGJ5IGRhdGEgYXR0cmlidXRlKSwgYWRqdXN0IGJlaGF2aW9yICovXG4uaGVhZGVyLWNvbnRhaW5lciAubGF5b3V0LWNvbnRhaW5lcltkYXRhLW5hdi13cmFwcGVkPVwidHJ1ZVwiXSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyAvKiBTd2l0Y2ggdG8gdG9wIGFsaWdubWVudCB3aGVuIHdyYXBwZWQgKi9cbiAgLyogQWxsb3cgbmF0dXJhbCBoZWlnaHQgYmFzZWQgb24gY29udGVudCAqL1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMyk7IC8qIE1vcmUgcGFkZGluZyB3aGVuIHdyYXBwZWQgKi9cbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uaGVhZGVyLXdyYXBwZXJbZGF0YS1uYXYtd3JhcHBlZD1cInRydWVcIl0ge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgLyogQWxpZ24gaXRlbXMgdG8gdG9wIHdoZW4gd3JhcHBlZCAqL1xuICBoZWlnaHQ6IGF1dG87IC8qIEV4cGxpY2l0IGF1dG8gaGVpZ2h0IGZvciB3cmFwcGVkIHN0YXRlICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7IC8qIEV4dHJhIHZlcnRpY2FsIHBhZGRpbmcgZm9yIHdyYXBwZWQgc3RhdGUgKi9cbn1cblxuLyogRmFsbGJhY2sgZm9yIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCA6aGFzKCkgc2VsZWN0b3IgKi9cbi5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyOmhhcyguaGVhZGVyLW5hdi1saXN0W2RhdGEtd3JhcHBlZD1cInRydWVcIl0pIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIC8qIEFsbG93IG5hdHVyYWwgaGVpZ2h0IGJhc2VkIG9uIGNvbnRlbnQgKi9cbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5oZWFkZXItd3JhcHBlcjpoYXMoLmhlYWRlci1uYXYtbGlzdFtkYXRhLXdyYXBwZWQ9XCJ0cnVlXCJdKSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi8qIEZpeGVkIENvbnRhaW5lciAtIE5vIGxvbmdlciB1c2VkIChsb2dvIG1vdmVkIHRvIG5hdiBsaXN0KSAqL1xuLmhlYWRlci1maXhlZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lOyAvKiBDb250YWluZXIgbm8gbG9uZ2VyIG5lZWRlZCAqL1xufVxuXG4vKiA9PT09PSBMT0dPIEVOSEFOQ0VNRU5UUyA9PT09PSAqL1xuLmhlYWRlci1sb2dvLWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4OiAwIDAgYXV0bzsgLyogRG8gbm90IHNocmluayBsb2dvICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICAvKiBSZW1vdmUgbWFyZ2luIGFuZCBtaW4taGVpZ2h0IHRvIHByZXZlbnQgaW50ZXJmZXJpbmcgd2l0aCBhbGlnbm1lbnQgY29udGFpbmVyIGNlbnRlcmluZyAqL1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWZhc3QpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIExldCBhbGlnbm1lbnQgY29udGFpbmVyIGhhbmRsZSB2ZXJ0aWNhbCBjZW50ZXJpbmcgKi9cbn1cblxuLmhlYWRlci1sb2dvLWxpbms6aG92ZXIge1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi5oZWFkZXItbG9nby1saW5rOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLmhlYWRlci1sb2dvIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogTW9iaWxlIGxvZ28gKGNvbXBhY3QgY2xvdWQgaWNvbikgKi9cbi5oZWFkZXItbG9nby1tb2JpbGUge1xuICBoZWlnaHQ6IHZhcigtLXNwYWNlLTgpO1xuICAvKiAzMnB4ICovXG4gIG1heC13aWR0aDogY2FsYyh2YXIoLS1zcGFjZS04KSAqIDEuODc1KTtcbiAgLyogNjBweCAqL1xufVxuXG4vKiBEZXNrdG9wIGxvZ28gaGlkZGVuIG9uIG1vYmlsZSAqL1xuLmhlYWRlci1sb2dvLWRlc2t0b3Age1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiA9PT09PSBOQVZJR0FUSU9OIFNUUlVDVFVSRSA9PT09PSAqL1xuXG4vKiBEZXNrdG9wIE5hdmlnYXRpb24gLSBDb250YWluZWQgd2l0aGluIHdyYXBwZXIgKi9cbi5oZWFkZXItbmF2IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxleDogMTsgLyogVGFrZSBhdmFpbGFibGUgc3BhY2UgYmV0d2VlbiBsb2dvIGFuZCBhY3Rpb25zICovXG4gIG1pbi13aWR0aDogMDsgLyogQWxsb3cgc2hyaW5raW5nIGlmIG5lZWRlZCAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIFByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogUHJldmVudCBhbnkgdGV4dCB3cmFwcGluZyAqL1xufVxuXG4uaGVhZGVyLW5hdi1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogUHJldmVudCB3cmFwcGluZyBvbiBkZXNrdG9wICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBDZW50ZXIgbmF2aWdhdGlvbiBpdGVtcyAqL1xuICB3aWR0aDogMTAwJTsgLyogVXNlIGZ1bGwgYXZhaWxhYmxlIHdpZHRoICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogUHJldmVudCBvdmVyZmxvdyAqL1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBQcmV2ZW50IHRleHQgd3JhcHBpbmcgd2l0aGluIGl0ZW1zICovXG4gIHJvdy1nYXA6IHZhcigtLXNwYWNlLTEpO1xuICAvKiBQZXJmb3JtYW5jZTogb25seSB0cmFuc2l0aW9uIHdoYXQgY2hhbmdlcyAqL1xuICB0cmFuc2l0aW9uOiBnYXAgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLmhlYWRlci1uYXYtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogTG9nbyBpdGVtIGluIG5hdiBsaXN0IC0gc3BlY2lhbCBzdHlsaW5nICovXG4ubmF2LWxvZ28taXRlbSB7XG4gIGZsZXg6IG5vbmU7IC8qIE9wdGltaXplZCBzaG9ydGhhbmQgZm9yIGZsZXg6IDAgMCBhdXRvICovXG4gIG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2UtNik7IC8qIEV4dHJhIHNwYWNpbmcgYWZ0ZXIgbG9nbyAqL1xufVxuXG4vKiBCdXR0b24gaXRlbSBpbiBuYXYgbGlzdCAtIHNwZWNpYWwgc3R5bGluZyAqL1xuLm5hdi1idXR0b24taXRlbSB7XG4gIGZsZXg6IG5vbmU7IC8qIE9wdGltaXplZCBzaG9ydGhhbmQgZm9yIGZsZXg6IDAgMCBhdXRvICovXG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjZS00KTsgLyogQWRkIHNwYWNpbmcgZnJvbSBuYXYgaXRlbXMgKi9cbn1cblxuLyogTmF2IExpbmtzIC0gU3RydWN0dXJlIGFuZCB0cmFuc2l0aW9ucyBvbmx5ICovXG4uaGVhZGVyLW5hdi1saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIC8qIFJlbW92ZSBleHBsaWNpdCBoZWlnaHQgY29uc3RyYWludHMgdG8gbGV0IGFsaWdubWVudCBjb250YWluZXIgaGFuZGxlIGNlbnRlcmluZyAqL1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluLCA0OHB4KTtcbiAgLyogS2VlcCBtaW4taGVpZ2h0IGZvciB0b3VjaCB0YXJnZXQgY29tcGxpYW5jZSAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgLyogQmFsYW5jZWQgcGFkZGluZyBmb3IgdG91Y2ggdGFyZ2V0cyAqL1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiBFbnN1cmUgcGFkZGluZyBpcyBpbmNsdWRlZCBpbiBoZWlnaHQgY2FsY3VsYXRpb24gKi9cbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC8qIFByZXZlbnQgbGluZS1oZWlnaHQgZnJvbSBhZmZlY3RpbmcgaGVpZ2h0ICovXG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgLyogT3ZlcnJpZGUgZ2xvYmFsIC5kZXNjcmlwdGlvbiBtYXJnaW4gZm9yIHByb3BlciBhbGlnbm1lbnQgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KTtcbiAgLyogVHlwb2dyYXBoeSBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzIGluIGNvbXBvbmVudCBKU1ggKi9cbn1cblxuLmhlYWRlci1uYXYtbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5oZWFkZXItbmF2LWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4uaGVhZGVyLW5hdi1saW5rW2FyaWEtY3VycmVudD1cInBhZ2VcIl0ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBkZXNjcmlwdGlvbiBjbGFzcyAqL1xufVxuXG4vKiBIZXJpdGFnZSByZWQgZm9yIGFjdGl2ZSBuYXZpZ2F0aW9uIC0gU3RyYXRlZ2ljIDEwJSB1c2FnZSB3aXRoIGVuaGFuY2VkIHNwYWNpbmcgKi9cbi5oZWFkZXItbmF2LWxpbmstLWFjdGl2ZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSkgIWltcG9ydGFudDtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzc2VzICovXG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIHJlZCBlbGVtZW50cyAoMjUtMzUlIG1vcmUpIGZvciBicmFuZCBjb21wbGlhbmNlICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpO1xuICAvKiAzMCUgZXh0cmEgcGFkZGluZyBob3Jpem9udGFsbHkgKi9cbiAgbWFyZ2luOiAwIGNhbGModmFyKC0tc3BhY2UtMSkgKiAwLjMpO1xuICAvKiBBZGRpdGlvbmFsIG1hcmdpbiBmb3IgMjRweCBtaW5pbXVtIGlzb2xhdGlvbiBvbiBtb2JpbGUgKi9cbn1cblxuLyogT3B0aW9uYWwgaGVyaXRhZ2UgcmVkIGluZGljYXRvciBmb3IgYWN0aXZlIHBhZ2UgKi9cbi5oZWFkZXItbmF2LWxpbmtbYXJpYS1jdXJyZW50PVwicGFnZVwiXTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IGNhbGMoLTEgKiB2YXIoLS1zcGFjZS0xKSAvIDIpO1xuICAvKiAtMnB4IHVzaW5nIHZhcmlhYmxlICovXG4gIGxlZnQ6IHZhcigtLXNwYWNlLTMpO1xuICByaWdodDogdmFyKC0tc3BhY2UtMyk7XG4gIGhlaWdodDogdmFyKC0tc3BhY2UtMSk7XG4gIC8qIDJweCB1c2luZyB2YXJpYWJsZSAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpO1xufVxuXG4uaGVhZGVyLW5hdi1pdGVtOmhvdmVyIC5oZWFkZXItbmF2LWxpbmtbYXJpYS1jdXJyZW50PVwicGFnZVwiXTo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBEcm9wZG93biAqL1xuLmhlYWRlci1kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogTmV3IHNwbGl0LWJ1dHRvbiBncm91cCBmb3IgbGluayArIHRvZ2dsZSAqL1xuLmhlYWRlci1kcm9wZG93bi1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoOyAvKiBDaGFuZ2VkIGZyb20gY2VudGVyIHRvIHN0cmV0Y2ggZm9yIHByb3BlciBiYXNlbGluZSBhbGlnbm1lbnQgKi9cbiAgZ2FwOiAwO1xufVxuXG4vKiBMaW5rIHBhcnQgb2YgdGhlIGRyb3Bkb3duIChuYXZpZ2F0ZXMgdG8gcGFyZW50IHBhZ2UpICovXG4uaGVhZGVyLWRyb3Bkb3duLWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluLCA0OHB4KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIC8qIEJhbGFuY2VkIHBhZGRpbmcgZm9yIHRvdWNoIHRhcmdldHMgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgLyogT3ZlcnJpZGUgZ2xvYmFsIC5kZXNjcmlwdGlvbiBtYXJnaW4gZm9yIHByb3BlciBhbGlnbm1lbnQgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKSAwIDAgdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1saW5rLS1hY3RpdmUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5oZWFkZXItZHJvcGRvd24tbGluazpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIHotaW5kZXg6IDE7XG59XG5cbi8qIFRvZ2dsZSBidXR0b24gcGFydCAob3BlbnMgZHJvcGRvd24gbWVudSkgKi9cbi5oZWFkZXItZHJvcGRvd24tdG9nZ2xlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1taW4sIDQ4cHgpO1xuICBtaW4td2lkdGg6IDI4cHg7XG4gIC8qIEZ1cnRoZXIgcmVkdWNlZCB3aWR0aCAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTEpIC8gMik7XG4gIC8qIEV2ZW4gc21hbGxlciBwYWRkaW5nICovXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICAvKiBib3JkZXItbGVmdCByZW1vdmVkIGZvciBzZWFtbGVzcyBuYXYvZHJvcGRvd24gaW50ZWdyYXRpb24gKi9cbiAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1yYWRpdXMtbWQpIHZhcigtLXJhZGl1cy1tZCkgMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpO1xufVxuXG4vKiBFbnN1cmUgaWNvbiBjb250YWluZXIgZG9lc24ndCBhZmZlY3QgYWxpZ25tZW50ICovXG4uaGVhZGVyLWRyb3Bkb3duLXRvZ2dsZSAuaWNvbi1jb250YWluZXIteHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmhlYWRlci1kcm9wZG93bi10b2dnbGU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4uaGVhZGVyLWRyb3Bkb3duLXRvZ2dsZTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5oZWFkZXItZHJvcGRvd24tdG9nZ2xlW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIC5oZWFkZXItZHJvcGRvd24taWNvbiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi8qIExlZ2FjeSB0cmlnZ2VyIHN0eWxlcyAoa2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKi9cbi5oZWFkZXItZHJvcGRvd24tdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG4gIC8qIFJlbW92ZSBleHBsaWNpdCBoZWlnaHQgY29uc3RyYWludHMgdG8gbGV0IGFsaWdubWVudCBjb250YWluZXIgaGFuZGxlIGNlbnRlcmluZyAqL1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluLCA0OHB4KTtcbiAgLyogS2VlcCBtaW4taGVpZ2h0IGZvciB0b3VjaCB0YXJnZXQgY29tcGxpYW5jZSAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgLyogQWRkIHZlcnRpY2FsIHBhZGRpbmcgZm9yIHRvdWNoIHRhcmdldCAqL1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiBFbnN1cmUgcGFkZGluZyBpcyBpbmNsdWRlZCBpbiBoZWlnaHQgY2FsY3VsYXRpb24gKi9cbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC8qIFByZXZlbnQgbGluZS1oZWlnaHQgZnJvbSBhZmZlY3RpbmcgaGVpZ2h0ICovXG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgLyogT3ZlcnJpZGUgZ2xvYmFsIC5kZXNjcmlwdGlvbiBtYXJnaW4gZm9yIHByb3BlciBhbGlnbm1lbnQgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgLyogVHlwb2dyYXBoeSBoYW5kbGVkIGJ5IGRlc2NyaXB0aW9uIGNsYXNzIGluIGNvbXBvbmVudCBKU1ggKi9cbiAgLyogUmVtb3ZlIGFsaWduLXNlbGY6IGNlbnRlciB0byBsZXQgYWxpZ25tZW50IGNvbnRhaW5lciBoYW5kbGUgY2VudGVyaW5nICovXG59XG5cbi5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5oZWFkZXItZHJvcGRvd24taWNvbiB7XG4gIC8qIExldCBpY29uIHN5c3RlbSBoYW5kbGUgYWxsIHNpemluZyBhbmQgYWxpZ25tZW50ICovXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi0tb3BlbiAuaGVhZGVyLWRyb3Bkb3duLWljb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuXG4vKiA9PT09PSBEUk9QRE9XTiBFTkhBTkNFTUVOVFMgPT09PT0gKi9cblxuLyogRHJvcGRvd24gTWVudSBDb250YWluZXIgKi9cbi5oZWFkZXItZHJvcGRvd24tbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG4gIG1pbi13aWR0aDogMjIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjE1KSwgMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtMTBweCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCk7XG59XG5cbi8qIEhvdmVyIHN0YXRlIGZvciBkcm9wZG93biBvbiBkZXNrdG9wICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlYWRlci1kcm9wZG93bjpob3ZlciAuaGVhZGVyLWRyb3Bkb3duLW1lbnUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIC5oZWFkZXItZHJvcGRvd246aG92ZXIgLmhlYWRlci1kcm9wZG93bi1pY29uIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICB9XG59XG5cbi5oZWFkZXItZHJvcGRvd24tLW9wZW4gLmhlYWRlci1kcm9wZG93bi1tZW51IHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG59XG5cbi5oZWFkZXItZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1pdGVtOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLmhlYWRlci1kcm9wZG93bi1pdGVtOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG59XG5cbi5oZWFkZXItZHJvcGRvd24taXRlbVthcmlhLWN1cnJlbnQ9XCJwYWdlXCJdIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIC8qIGZvbnQtd2VpZ2h0IGhhbmRsZWQgYnkgZGVzY3JpcHRpb24gY2xhc3MgKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG59XG5cbi8qID09PT09IEFDVElPTiBBUkVBIEVOSEFOQ0VNRU5UUyA9PT09PSAqL1xuLmhlYWRlci1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTsgLyogQ29uc2lzdGVudCBzcGFjaW5nIHdpdGhpbiBhY3Rpb24gYXJlYSAqL1xuICBmbGV4OiAwIDAgYXV0bzsgLyogS2VlcCBhY3Rpb25zIGZpeGVkIHdpZHRoOyBhbGxvdyBuYXYgdG8gYWJzb3JiIHNocmluayAqL1xuICBqdXN0aWZ5LXNlbGY6IGVuZDsgLyogQWxpZ24gdG8gZW5kIG9mIGdyaWQgY2VsbCAqL1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7IC8qIENlbnRlciB2ZXJ0aWNhbGx5IGluIGdyaWQgY2VsbCBzaW5jZSB3cmFwcGVyIHVzZXMgZmxleC1zdGFydCAqL1xuICAvKiBSZW1vdmVkIHBhZGRpbmctbGVmdCBhcyBncmlkIGdhcCBub3cgaGFuZGxlcyBzcGFjaW5nICovXG4gIG1pbi13aWR0aDogMTIwcHg7IC8qIE1pbmltdW0gd2lkdGggdG8gZW5zdXJlIGNvbnRhY3QgYnV0dG9uIGZpdHMgKi9cbn1cblxuLyogPT09PT0gTU9CSUxFIE1FTlUgRU5IQU5DRU1FTlRTID09PT09ICovXG5cbi8qIE1vYmlsZSBUb2dnbGUgQnV0dG9uICovXG4uaGVhZGVyLW1vYmlsZS10b2dnbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDQ4cHg7IC8qIEVuc3VyZSBleGFjdGx5IDQ4cHggZm9yIHRvdWNoIHRhcmdldHMgKi9cbiAgaGVpZ2h0OiA0OHB4OyAvKiBFbnN1cmUgZXhhY3RseSA0OHB4IGZvciB0b3VjaCB0YXJnZXRzICovXG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbiAganVzdGlmeS1zZWxmOiBlbmQ7IC8qIEFsaWduIHRvIGVuZCBvZiBncmlkIGNlbGwgKi9cbiAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnQgc2hyaW5raW5nICovXG59XG5cbi5oZWFkZXItbW9iaWxlLXRvZ2dsZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtdG9nZ2xlOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG59XG5cbi5oZWFkZXItbW9iaWxlLXRvZ2dsZS1pY29uIHtcbiAgLyogTGV0IGljb24gc3lzdGVtIGhhbmRsZSBhbGwgc2l6aW5nIGFuZCBhbGlnbm1lbnQgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi8qIENvbnRhY3QgQnV0dG9uIC0gTm93IGluIG5hdiBsaXN0ICovXG4ubmF2LWJ1dHRvbi1pdGVtIC5oZWFkZXItY29udGFjdC1idG4ge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS00KSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNDhweCAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtaW4td2lkdGg6IDEwMHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBIZXJpdGFnZSBDVEEgQnV0dG9uIC0gU3RyYXRlZ2ljIFJlZCBVc2FnZSAoMTAlIHJ1bGUpIHdpdGggZW5oYW5jZWQgc3BhY2luZyAqL1xuLmhlYWRlci1jdGEuYnRuLWhlcml0YWdlIHtcbiAgLyogQmFzZSBzdHlsZXMgZnJvbSBidG4taGVyaXRhZ2UgaW4gaW5kZXguY3NzICovXG4gIC8qIEV4dHJhIHNwYWNpbmcgZm9yIHN0cmF0ZWdpYyByZWQgZWxlbWVudHMgKDI1LTM1JSBtb3JlKSBmb3IgYnJhbmQgY29tcGxpYW5jZSAqL1xuICBtYXJnaW46IDAgY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMyk7XG4gIC8qIDMwJSBleHRyYSBtYXJnaW4gKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSArIDJweCkgY2FsYyh2YXIoLS1zcGFjZS01KSAqIDEuMykgIWltcG9ydGFudDtcbiAgLyogMzAlIGV4dHJhIHBhZGRpbmcgKi9cblxuICAvKiBFbmhhbmNlZCB0cmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcblxuICAvKiBMZXQgYWxpZ25tZW50IGNvbnRhaW5lciBoYW5kbGUgdmVydGljYWwgY2VudGVyaW5nICovXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIEVuc3VyZSBwYWRkaW5nIGlzIGluY2x1ZGVkIGluIGhlaWdodCBjYWxjdWxhdGlvbiAqL1xuICAvKiBSZW1vdmUgZXhwbGljaXQgaGVpZ2h0IHRvIGxldCBhbGlnbm1lbnQgY29udGFpbmVyIGhhbmRsZSBjZW50ZXJpbmcgKi9cbn1cblxuLmhlYWRlci1jdGEuYnRuLWhlcml0YWdlOmhvdmVyIHtcbiAgLyogTWljcm8taW50ZXJhY3Rpb24gZW5oYW5jZW1lbnQgKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4yKTtcbn1cblxuLmhlYWRlci1jdGEuYnRuLWhlcml0YWdlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMik7XG59XG5cbi8qIE1vYmlsZSBNZW51IENvbnRhaW5lciAqL1xuLmhlYWRlci1tb2JpbGUtbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBtYXgtaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IHZhcigtLXRpbWluZy1mYXN0KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtbWVudVthcmlhLWhpZGRlbj1cImZhbHNlXCJdLFxuLmhlYWRlci1tb2JpbGUtbWVudS0tb3BlbiB7XG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zcGFjZS0xNikpO1xuICAvKiBVc2UgQ1NTIHZhcmlhYmxlIGZvciA2NHB4ICovXG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLyogTW9iaWxlIE5hdmlnYXRpb24gU3RydWN0dXJlICovXG4uaGVhZGVyLW1vYmlsZS1uYXYge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1uYXYtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmhlYWRlci1tb2JpbGUtbmF2LWl0ZW0ge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpIC8gMC41KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtbmF2LWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi8qIE1vYmlsZSBOYXYgTGlua3MgLSBUb3VjaC1vcHRpbWl6ZWQgKi9cbi5oZWFkZXItbW9iaWxlLW5hdi1saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1taW4sIDQ4cHgpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbn1cblxuLmhlYWRlci1tb2JpbGUtbmF2LWxpbms6aG92ZXIsXG4uaGVhZGVyLW1vYmlsZS1uYXYtbGluazpmb2N1cy12aXNpYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1uYXYtbGlua1thcmlhLWN1cnJlbnQ9XCJwYWdlXCJdIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIC8qIGZvbnQtd2VpZ2h0IGhhbmRsZWQgYnkgZGVzY3JpcHRpb24gY2xhc3MgKi9cbn1cblxuLyogQWN0aXZlIHN0YXRlIGNsYXNzIGZvciBtb2JpbGUgbmF2IGxpbmtzIC0gU3RyYXRlZ2ljIHJlZCB1c2FnZSB3aXRoIGVuaGFuY2VkIHNwYWNpbmcgKi9cbi5oZWFkZXItbW9iaWxlLW5hdi1saW5rLS1hY3RpdmUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpICFpbXBvcnRhbnQ7XG4gIC8qIGZvbnQtd2VpZ2h0IGhhbmRsZWQgYnkgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuICAvKiBFeHRyYSBzcGFjaW5nIGZvciByZWQgZWxlbWVudHMgd2l0aCAyNHB4IG1pbmltdW0gaXNvbGF0aW9uIG9uIG1vYmlsZSAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTMpICsgdmFyKC0tc3BhY2UtMSkpIGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICAvKiAyNSUgZXh0cmEgcGFkZGluZyArIDRweCBleHRyYSB2ZXJ0aWNhbCBmb3IgaXNvbGF0aW9uICovXG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtMSkgMDtcbiAgLyogQWRkaXRpb25hbCBtYXJnaW4gZm9yIDI0cHggbWluaW11bSBpc29sYXRpb24gKi9cbn1cblxuLyogTW9iaWxlIERyb3Bkb3duICovXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93biB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bi10cmlnZ2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbiwgNDhweCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCk7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6aG92ZXIsXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bi10cmlnZ2VyOmZvY3VzLXZpc2libGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6OmFmdGVyIHtcbiAgY29udGVudDogXCLilrhcIjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLWZhc3QpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bltvcGVuXSAuaGVhZGVyLW1vYmlsZS1kcm9wZG93bi10cmlnZ2VyOjphZnRlciB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbn1cblxuLyogTW9iaWxlIERyb3Bkb3duIE1lbnUgKi9cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLW1lbnUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMyk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogdmFyKC0tdG91Y2gtdGFyZ2V0LW1pbiwgNDhweCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTYpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tZHVyYXRpb24tZmFzdCk7XG59XG5cbi5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLWl0ZW06aG92ZXIsXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bi1pdGVtOmZvY3VzLXZpc2libGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4wNSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTcpO1xufVxuXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bi1pdGVtW2FyaWEtY3VycmVudD1cInBhZ2VcIl0ge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgLyogZm9udC13ZWlnaHQgaGFuZGxlZCBieSBkZXNjcmlwdGlvbiBjbGFzcyAqL1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgY2xhc3MgZm9yIG1vYmlsZSBkcm9wZG93biBpdGVtcyAtIFN0cmF0ZWdpYyByZWQgdXNhZ2Ugd2l0aCBlbmhhbmNlZCBzcGFjaW5nICovXG4uaGVhZGVyLW1vYmlsZS1kcm9wZG93bi1pdGVtLS1hY3RpdmUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpICFpbXBvcnRhbnQ7XG4gIC8qIGZvbnQtd2VpZ2h0IGhhbmRsZWQgYnkgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuICAvKiBFeHRyYSBzcGFjaW5nIGZvciByZWQgZWxlbWVudHMgd2l0aCAyNHB4IG1pbmltdW0gaXNvbGF0aW9uICovXG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMikgKyB2YXIoLS1zcGFjZS0xKSkgY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMyk7XG4gIC8qIDMwJSBleHRyYSBwYWRkaW5nICsgNHB4IGV4dHJhIHZlcnRpY2FsIGZvciBpc29sYXRpb24gKi9cbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0xKSAwO1xuICAvKiBBZGRpdGlvbmFsIG1hcmdpbiBmb3IgMjRweCBtaW5pbXVtIGlzb2xhdGlvbiAqL1xufVxuXG4vKiA9PT09PSBSRVNQT05TSVZFIEVOSEFOQ0VNRU5UUyA9PT09PSAqL1xuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZSBzaXppbmcgLSA0MCUgcmVkdWN0aW9uIHBlciBzcGFjaW5nLWxheW91dC1zdGFuZGFyZC5tZCAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICAvKiBNb2JpbGU6IE5hdHVyYWwgaGVpZ2h0IGJhc2VkIG9uIGNvbnRlbnQgKi9cbiAgICAvKiBoZWlnaHQgcmVtb3ZlZCB0byBhbGxvdyBjb250ZW50LWJhc2VkIHNpemluZyAqL1xuICAgIHdpZHRoOiAxMDAlOyAvKiBGdWxsIHdpZHRoIG9uIG1vYmlsZSAqL1xuICAgIG1pbi13aWR0aDogMTAwJTsgLyogT3ZlcnJpZGUgZGVza3RvcCBtaW4td2lkdGggKi9cbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggKi9cbiAgICBtYXJnaW46IDA7IC8qIE5vIGNlbnRlcmluZyBtYXJnaW4gbmVlZGVkIG9uIG1vYmlsZSAqL1xuICB9XG5cbiAgLmhlYWRlci13cmFwcGVyIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvOyAvKiBOYXZpZ2F0aW9uIChsb2dvIHZpc2libGUpIHwgTW9iaWxlIHRvZ2dsZSAqL1xuICB9XG4gIFxuICAvKiBTaG93IG5hdmlnYXRpb24gY29udGFpbmVyIGJ1dCBoaWRlIG5hdiBpdGVtcyAqL1xuICAuaGVhZGVyLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgXG4gIC8qIEhpZGUgYWxsIG5hdiBpdGVtcyBleGNlcHQgbG9nbyBvbiBtb2JpbGUgKi9cbiAgLmhlYWRlci1uYXYtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7IC8qIEFsbG93IHdyYXBwaW5nIG9uIG1vYmlsZSBvbmx5ICovXG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggb24gbW9iaWxlICovXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogQWxsb3cgdGV4dCB3cmFwcGluZyBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLmhlYWRlci1uYXYtaXRlbSB7XG4gICAgZGlzcGxheTogbm9uZTsgLyogSGlkZSByZWd1bGFyIG5hdiBpdGVtcyAqL1xuICB9XG4gIFxuICAvKiBMb2dvIHJlbWFpbnMgdmlzaWJsZSBvbiBtb2JpbGUgKi9cbiAgLm5hdi1sb2dvLWl0ZW0ge1xuICAgIG1hcmdpbi1yaWdodDogMDsgLyogUmVtb3ZlIGV4dHJhIG1hcmdpbiBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLyogSGlkZSBjb250YWN0IGJ1dHRvbiBvbiBtb2JpbGUgKi9cbiAgLm5hdi1idXR0b24taXRlbSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLyogQWN0aW9ucyBjb250YWluZXIgb25seSBzaG93cyBtb2JpbGUgdG9nZ2xlIG9uIG1vYmlsZSAqL1xuICAuaGVhZGVyLWFjdGlvbnMge1xuICAgIGdhcDogMDsgLyogTm8gZ2FwIG5lZWRlZCB3aGVuIG9ubHkgbW9iaWxlIHRvZ2dsZSBpcyB2aXNpYmxlICovXG4gIH1cbn1cblxuLyogVGFibGV0ICg1NjhweCspIC0gbGF5b3V0LWNvbnRhaW5lciBoYW5kbGVzIHBhZGRpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA1NjhweCkge1xuICAvKiBQYWRkaW5nIGhhbmRsZWQgYnkgaW5oZXJpdGVkIGxheW91dC1jb250YWluZXIgcmVzcG9uc2l2ZSBzdHlsZXMgKi9cbiAgXG4gIC8qIFNob3cgY29udGFjdCBidXR0b24gaW4gbmF2IG9uIGxhcmdlciBtb2JpbGUgKi9cbiAgLm5hdi1idXR0b24taXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICBcbiAgLyogQWN0aW9ucyBzdGlsbCB2aXNpYmxlIG9uIG1vYmlsZSBmb3IgdG9nZ2xlICovXG4gIC5oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbi8qIFRhYmxldCBzaXppbmcgLSAyMCUgcmVkdWN0aW9uIHBlciBzcGFjaW5nLWxheW91dC1zdGFuZGFyZC5tZCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTI3OXB4KSB7XG4gIC5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICAvKiBUYWJsZXQ6IE5hdHVyYWwgaGVpZ2h0IGJhc2VkIG9uIGNvbnRlbnQgKi9cbiAgICAvKiBoZWlnaHQgcmVtb3ZlZCB0byBhbGxvdyBjb250ZW50LWJhc2VkIHNpemluZyAqL1xuICB9XG4gIFxuICAuaGVhZGVyLW5hdi1saXN0IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogUHJldmVudCB3cmFwcGluZyBvbiB0YWJsZXQgKi9cbiAgfVxufVxuXG4vKiBUYWJsZXQtRGVza3RvcCB0cmFuc2l0aW9uICgxMDI0cHgrKSAtIFNob3cgZnVsbCBuYXZpZ2F0aW9uICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICAvKiBNYWludGFpbiBmdWxsIHdpZHRoIHdpdGggcHJvcGVyIGNvbnRhaW5tZW50ICovXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLyogVXNlIGZ1bGwgd2lkdGggZm9yIHByb3BlciBjb250YWlubWVudCAqL1xuICAgIG1pbi13aWR0aDogMDsgLyogQWxsb3cgc2hyaW5raW5nIGlmIG5lZWRlZCAqL1xuICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsgLyogRW5zdXJlIGl0IGRvZXNuJ3QgZXhjZWVkIHZpZXdwb3J0ICovXG4gICAgbWFyZ2luOiAwIGF1dG87IC8qIEVuc3VyZSBjZW50ZXJpbmcgKi9cbiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAvKiBGbGV4IGxheW91dCBmb3IgYmV0dGVyIHdpZHRoIGhhbmRsaW5nICovXG4gIC5oZWFkZXItd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICAgIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBjb250YWluZXIgd2lkdGggKi9cbiAgICBtYXgtd2lkdGg6IDEyMDBweDsgLyogTWFpbnRhaW4gbWF4aW11bSB3aWR0aCBjb25zdHJhaW50ICovXG4gIH1cbiAgXG4gIC5oZWFkZXItbmF2LWxpc3Qge1xuICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiBQcmV2ZW50IHdyYXBwaW5nIG9uIHRhYmxldC1kZXNrdG9wIHRyYW5zaXRpb24gKi9cbiAgICB3aWR0aDogMTAwJTsgLyogVXNlIGZ1bGwgYXZhaWxhYmxlIHdpZHRoICovXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBQcmV2ZW50IG92ZXJmbG93ICovXG4gIH1cblxuICAvKiBIaWRlIG1vYmlsZSB0b2dnbGUgb24gdGFibGV0ICovXG4gIC5oZWFkZXItbW9iaWxlLXRvZ2dsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8qIEhpZGUgbW9iaWxlIG1lbnUgb24gdGFibGV0ICovXG4gIC5oZWFkZXItbW9iaWxlLW1lbnUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8qIFNob3cgZGVza3RvcCBuYXZpZ2F0aW9uICovXG4gIC5oZWFkZXItbmF2IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICBcbiAgLyogU2hvdyBhbGwgbmF2IGl0ZW1zIG9uIGRlc2t0b3AgKi9cbiAgLmhlYWRlci1uYXYtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICBcbiAgLyogU2hvdyBjb250YWN0IGJ1dHRvbiBvbiBkZXNrdG9wICovXG4gIC5uYXYtYnV0dG9uLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbiAgXG4gIC8qIEFjdGlvbnMgY29udGFpbmVyIGhpZGRlbiBvbiBkZXNrdG9wIChubyBtb2JpbGUgdG9nZ2xlKSAqL1xuICAuaGVhZGVyLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBOYXYgaXRlbXMgaW5oZXJpdCBiYXNlIHN0eWxlcyBvbiB0YWJsZXRzICovXG5cbiAgLyogU21hbGxlciBwYWRkaW5nIGZvciBuYXYgaXRlbXMgb24gdGFibGV0cyAqL1xuICAuaGVhZGVyLW5hdi1saW5rLFxuICAuaGVhZGVyLWRyb3Bkb3duLXRyaWdnZXIsXG4gIC5oZWFkZXItZHJvcGRvd24tbGluayB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07IC8qIFNsaWdodGx5IHNtYWxsZXIgdGV4dCBvbiB0YWJsZXRzICovXG4gIH1cbn1cblxuXG4vKiBEZXNrdG9wICgxMjgwcHgrKSAtIEZ1bGwgbmF2aWdhdGlvbiB3aXRoIGludGVsbGlnZW50IHdyYXBwaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5oZWFkZXItY29udGFpbmVyIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICAvKiBEZXNrdG9wOiBOYXR1cmFsIGhlaWdodCBiYXNlZCBvbiBjb250ZW50ICovXG4gICAgLyogaGVpZ2h0IHJlbW92ZWQgdG8gYWxsb3cgY29udGVudC1iYXNlZCBzaXppbmcgKi9cbiAgICAvKiBNYWludGFpbiBmdWxsIHdpZHRoIHdpdGggcHJvcGVyIGNvbnRhaW5tZW50ICovXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLyogVXNlIGZ1bGwgd2lkdGggZm9yIHByb3BlciBjb250YWlubWVudCAqL1xuICAgIG1pbi13aWR0aDogMDsgLyogQWxsb3cgc2hyaW5raW5nIGlmIG5lZWRlZCAqL1xuICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsgLyogRW5zdXJlIGl0IGRvZXNuJ3QgZXhjZWVkIHZpZXdwb3J0ICovXG4gICAgbWFyZ2luOiAwIGF1dG87IC8qIEVuc3VyZSBjZW50ZXJpbmcgKi9cbiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAvKiBGbGV4IGxheW91dCBmb3IgZGVza3RvcCAqL1xuICAuaGVhZGVyLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTsgLyogTWFpbnRhaW4gZ2FwIGZvciBwcm9wZXIgc3BhY2luZyAqL1xuICAgIHdpZHRoOiAxMDAlOyAvKiBVc2UgZnVsbCBjb250YWluZXIgd2lkdGggKi9cbiAgICBtYXgtd2lkdGg6IDEyMDBweDsgLyogTWFpbnRhaW4gbWF4aW11bSB3aWR0aCBjb25zdHJhaW50ICovXG4gIH1cblxuICAvKiBIaWRlIG1vYmlsZSBsb2dvLCBzaG93IGRlc2t0b3AgbG9nbyAqL1xuICAuaGVhZGVyLWxvZ28tbW9iaWxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmhlYWRlci1sb2dvLWRlc2t0b3Age1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMzJweDtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICB9XG5cbiAgLyogU2hvdyBkZXNrdG9wIG5hdmlnYXRpb24gY2VudGVyZWQgKi9cbiAgLmhlYWRlci1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4OiAxOyAvKiBUYWtlIGF2YWlsYWJsZSBzcGFjZSBiZXR3ZWVuIGxvZ28gYW5kIGFjdGlvbnMgKi9cbiAgICBtaW4td2lkdGg6IDA7IC8qIEFsbG93IHNocmlua2luZyBpZiBuZWVkZWQgKi9cbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIFByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgfVxuICBcbiAgLyogTmF2IGxpc3QgaW5oZXJpdHMgYmFzZSByZXNwb25zaXZlIHN0eWxlcyAqL1xuICAuaGVhZGVyLW5hdi1saXN0IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogRW5zdXJlIG5vIHdyYXBwaW5nIG9uIGRlc2t0b3AgKi9cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogQ2VudGVyIG5hdmlnYXRpb24gaXRlbXMgKi9cbiAgICB3aWR0aDogMTAwJTsgLyogVXNlIGZ1bGwgYXZhaWxhYmxlIHdpZHRoICovXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBQcmV2ZW50IG92ZXJmbG93ICovXG4gIH1cblxuICAvKiBSZXN0b3JlIG5vcm1hbCBmb250IHNpemUgYW5kIHBhZGRpbmcgZm9yIG5hdiBpdGVtcyBvbiBkZXNrdG9wICovXG4gIC5oZWFkZXItbmF2LWxpbmssXG4gIC5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcixcbiAgLmhlYWRlci1kcm9wZG93bi1saW5rIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7IC8qIFJlc3RvcmUgbm9ybWFsIGZvbnQgc2l6ZSAqL1xuICB9XG59XG5cblxuLyogVWx0cmEtd2lkZSBEZXNrdG9wICgxNjAwcHgrKSAtIE5vIHdyYXBwaW5nIG5lZWRlZCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDE2MDBweCkge1xuICAuaGVhZGVyLXdyYXBwZXIge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtOCk7IC8qIE1haW50YWluIGNvbnNpc3RlbnQgZ2FwIGZvciBsYXJnZSBzY3JlZW5zICgzMnB4KSAqL1xuICAgIG1heC13aWR0aDogMTQwMHB4OyAvKiBTbGlnaHRseSBsYXJnZXIgbWF4LXdpZHRoIGZvciB1bHRyYS13aWRlIHNjcmVlbnMgKi9cbiAgfVxuICBcbiAgLmhlYWRlci1uYXYtbGlzdCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTsgLyogTGFyZ2VyIGdhcHMgb24gdWx0cmEtd2lkZSBzY3JlZW5zICovXG4gICAgLyogZmxleC13cmFwIGFscmVhZHkgc2V0IHRvIG5vd3JhcCBpbiBiYXNlIGRlc2t0b3Agc3R5bGVzICovXG4gIH1cblxuICAuaGVhZGVyLW5hdi1saW5rLFxuICAuaGVhZGVyLWRyb3Bkb3duLXRyaWdnZXIsXG4gIC5oZWFkZXItZHJvcGRvd24tbGluayB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG4gICAgLyogVHlwb2dyYXBoeSBzY2FsZXMgaGFuZGxlZCBieSBnbG9iYWwgY2xhc3NlcyAqL1xuICB9XG5cbiAgLyogV2lkZXIgZHJvcGRvd24gZm9yIHNlcnZpY2VzICovXG4gIC5oZWFkZXItZHJvcGRvd24tbWVudS0td2lkZSB7XG4gICAgbWluLXdpZHRoOiAzMjBweDtcbiAgfVxufVxuXG4vKiBTcGVjaWZpYyBzdHlsaW5nIGZvciB3cmFwcGVkIG5hdmlnYXRpb24gc3RhdGVzICovXG4uaGVhZGVyLW5hdi1saXN0W2RhdGEtd3JhcHBlZD1cInRydWVcIl0ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgLyogS2VlcCBpdGVtcyBjZW50ZXJlZCB3aGVuIHdyYXBwZWQgKi9cbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IC8qIEFsaWduIHdyYXBwZWQgcm93cyB0byB0b3AgKi9cbn1cblxuLmhlYWRlci1uYXYtbGlzdFtkYXRhLXdyYXBwZWQ9XCJ0cnVlXCJdIC5oZWFkZXItbmF2LWl0ZW0ge1xuICAvKiBSZWR1Y2VkIG1hcmdpbiB0byBwcmV2ZW50IG92ZXJmbG93IHdoZW4gd3JhcHBlZCAqL1xuICBtYXJnaW4tYm90dG9tOiAwOyAvKiBSZW1vdmUgYm90dG9tIG1hcmdpbiAtIGdhcCBoYW5kbGVzIHNwYWNpbmcgKi9cbn1cblxuLyogQWN0aW9ucyBjb250YWluZXIgcG9zaXRpb25pbmcgd2hlbiBuYXYgaXMgd3JhcHBlZCAqL1xuLmhlYWRlci13cmFwcGVyOmhhcyguaGVhZGVyLW5hdi1saXN0W2RhdGEtd3JhcHBlZD1cInRydWVcIl0pIC5oZWFkZXItYWN0aW9ucyB7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7IC8qIEFsaWduIGFjdGlvbnMgdG8gdG9wIHdoZW4gbmF2IHdyYXBzICovXG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpOyAvKiBBZGQgdG9wIG1hcmdpbiBmb3IgYmV0dGVyIHZpc3VhbCBzZXBhcmF0aW9uICovXG59XG5cbi8qID09PT09IEFDQ0VTU0lCSUxJVFkgRU5IQU5DRU1FTlRTID09PT09ICovXG5cbi8qIE1vdGlvbiBwcmVmZXJlbmNlcyAtIEVuaGFuY2VkIGZvciBUREQgY29tcGxpYW5jZSAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmhlYWRlci1tb2JpbGUtbWVudSxcbiAgLmhlYWRlci1kcm9wZG93bi1tZW51LFxuICAuaGVhZGVyLWRyb3Bkb3duLWljb24sXG4gIC5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6OmFmdGVyLFxuICAuaGVhZGVyLWN0YS5idG4taGVyaXRhZ2UsXG4gIC5oZWFkZXItbG9nby1saW5rLFxuICAuaGVhZGVyLW5hdi1saW5rLFxuICAuaGVhZGVyLWRyb3Bkb3duLXRyaWdnZXIsXG4gIC5oZWFkZXItbW9iaWxlLXRvZ2dsZSxcbiAgLmhlYWRlci1tb2JpbGUtbmF2LWxpbmssXG4gIC5oZWFkZXItZHJvcGRvd24taXRlbSxcbiAgLmhlYWRlci1tb2JpbGUtZHJvcGRvd24taXRlbSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyogRGlzYWJsZSBob3ZlciB0cmFuc2Zvcm1zIGZvciBoZXJpdGFnZSBidXR0b24gKi9cbiAgLmhlYWRlci1jdGEuYnRuLWhlcml0YWdlOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLyogRGlzYWJsZSByb3RhdGlvbiBmb3IgZHJvcGRvd24gaWNvbnMgKi9cbiAgLmhlYWRlci1kcm9wZG93bi0tb3BlbiAuaGVhZGVyLWRyb3Bkb3duLWljb24sXG4gIC5oZWFkZXItbW9iaWxlLWRyb3Bkb3duW29wZW5dIC5oZWFkZXItbW9iaWxlLWRyb3Bkb3duLXRyaWdnZXI6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5oZWFkZXItY29udGFpbmVyIHtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG4gIH1cblxuICAuaGVhZGVyLW5hdi1saW5rOmZvY3VzLXZpc2libGUsXG4gIC5oZWFkZXItZHJvcGRvd24tdHJpZ2dlcjpmb2N1cy12aXNpYmxlLFxuICAuaGVhZGVyLW1vYmlsZS10b2dnbGU6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZS13aWR0aDogM3B4O1xuICB9XG59XG5cbi8qIFByaW50IHN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcblxuICAuaGVhZGVyLW1vYmlsZS10b2dnbGUsXG4gIC5oZWFkZXItbW9iaWxlLW1lbnUsXG4gIC5oZWFkZXItZHJvcGRvd24tbWVudSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmhlYWRlci1uYXYge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaGVhZGVyLW5hdi1saXN0IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmhlYWRlci1kcm9wZG93bi1pY29uIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBcmNoaXRlY3R1cmUgU3VtbWFyeTpcbiAqIFxuICogVGhpcyBDU1MgZmlsZSBpbXBsZW1lbnRzIExheWVyIDIgKENvbXBvbmVudCBFbmhhbmNlbWVudCkgb2YgdGhlIHRocmVlLWxheWVyIGFyY2hpdGVjdHVyZS5cbiAqIEl0IHByb3ZpZGVzIHN0cnVjdHVyYWwsIHNwYWNpbmcsIGFuZCBpbnRlcmFjdGlvbiBlbmhhbmNlbWVudHMgd2hpbGUgcmVseWluZyBvbjpcbiAqIFxuICogLSBHbG9iYWwgdHlwb2dyYXBoeSBjbGFzc2VzIChkZXNjcmlwdGlvbikgYXBwbGllZCBjb25zaXN0ZW50bHkgaW4gSGVhZGVyLnRzeFxuICogLSBUaGVtZSB2YXJpYWJsZXMgYW5kIGJhc2UgYnV0dG9uIHN0eWxlcyBmcm9tIGluZGV4LmNzc1xuICogLSBDb21wb25lbnQgc3R5bGUgcHJvcHMgZm9yIHBhZ2Utc3BlY2lmaWMgY3VzdG9taXphdGlvblxuICogXG4gKiBUaGUgZmlsZSBpcyBvcmdhbml6ZWQgaW50byBjbGVhciBzZWN0aW9uczpcbiAqIDEuIFN0cnVjdHVyYWwgRW5oYW5jZW1lbnRzIC0gTGF5b3V0IGFuZCBwb3NpdGlvbmluZyB3aXRoIGJhY2tkcm9wIGJsdXJcbiAqIDIuIE5hdmlnYXRpb24gU3RydWN0dXJlIC0gRGVza3RvcCBuYXYgb3JnYW5pemF0aW9uXG4gKiAzLiBEcm9wZG93biBFbmhhbmNlbWVudHMgLSBTdWJtZW51IGJlaGF2aW9yc1xuICogNC4gTW9iaWxlIE1lbnUgRW5oYW5jZW1lbnRzIC0gVG91Y2gtb3B0aW1pemVkIHBhdHRlcm5zXG4gKiA1LiBSZXNwb25zaXZlIEVuaGFuY2VtZW50cyAtIEJyZWFrcG9pbnQgYWRqdXN0bWVudHNcbiAqIDYuIEFjY2Vzc2liaWxpdHkgRW5oYW5jZW1lbnRzIC0gQTExeSBpbXByb3ZlbWVudHMgd2l0aCBtb3Rpb24gcHJlZmVyZW5jZXNcbiAqIFxuICogS2V5IEVuaGFuY2VtZW50cyBBZGRlZDpcbiAqIC0gQmFja2Ryb3AgYmx1ciBvcHRpbWl6YXRpb24gZm9yIGdsYXNzIGVmZmVjdFxuICogLSBFbmhhbmNlZCBoZXJpdGFnZSByZWQgc3BhY2luZyAoMjUtMzUlIGV4dHJhKSBmb3IgYnJhbmQgY29tcGxpYW5jZVxuICogLSBNb2JpbGUgaGVyaXRhZ2UgcmVkIGlzb2xhdGlvbiAoMjRweCBtaW5pbXVtIHNwYWNpbmcpXG4gKiAtIENvbXByZWhlbnNpdmUgbW90aW9uIHByZWZlcmVuY2Ugc3VwcG9ydFxuICogLSBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHdpdGggaGFyZHdhcmUgYWNjZWxlcmF0aW9uXG4gKiBcbiAqIEFsbCBmb250LXNpemUgZGVjbGFyYXRpb25zIGhhdmUgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIGdsb2JhbCBjbGFzc2VzLlxuICovXG4iLCIvKipcbiAqIEhlcm8gQ29tcG9uZW50IFN0eWxlcyAtIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudFxuICogXG4gKiBUSFJFRS1MQVlFUiBDU1MgQVJDSElURUNUVVJFOlxuICogTGF5ZXIgMTogQnJhbmQgRm91bmRhdGlvbiAoc3JjL2luZGV4LmNzcykgLSBUaGVtZSwgY29sb3JzLCB0eXBvZ3JhcGh5LCBQV0EgYW5pbWF0aW9ucywgbGF5b3V0IHN5c3RlbVxuICogTGF5ZXIgMjogQ29tcG9uZW50IEVuaGFuY2VtZW50IChUSElTIEZJTEUpIC0gTGF5b3V0LCBzcGFjaW5nLCB2aXN1YWwgcG9saXNoXG4gKiBMYXllciAzOiBQYWdlIEN1c3RvbWl6YXRpb24gKHZpYSBzdHlsZXMgcHJvcCkgLSBQYWdlLXNwZWNpZmljIG92ZXJyaWRlc1xuICogXG4gKiBDUklUSUNBTCBSVUxFUzpcbiAqIC0gTk8gZm9udC1zaXplIGRlY2xhcmF0aW9ucyAtIEFMTCB0eXBvZ3JhcGh5IHZpYSBnbG9iYWwgY2xhc3Nlc1xuICogLSBOTyBoYXJkY29kZWQgY29sb3JzIC0gVXNlIENTUyB2YXJpYWJsZXMgb25seVxuICogLSBOTyBiYXNlIHN0eWxlcyAtIE9ubHkgZW5oYW5jZW1lbnRzIHRvIGJyYW5kIGZvdW5kYXRpb25cbiAqIC0gTVVTVCBzdXBwb3J0IHN0eWxlIHByb3Agb3ZlcnJpZGVzXG4gKiAtIE1vYmlsZS1maXJzdCB3aXRoIG1pbi13aWR0aCBtZWRpYSBxdWVyaWVzXG4gKiAtIEFMTCBjbGFzc2VzIGRlZmluZWQgaGVyZSBNVVNUIGJlIHVzZWQgaW4gSGVyby50c3hcbiAqIC0gU0VDVElPTiBQQVRURVJOIENPTVBMSUFOQ0U6IEZvbGxvd3MgU2VjdGlvbiBjb21wb25lbnQgc3RydWN0dXJlIGV4YWN0bHlcbiAqIFxuICogU1RBTkRBUkRTIENPTVBMSUFOQ0U6XG4gKiAtIFNlY3Rpb24gQ29tcG9uZW50IFBhdHRlcm46IE1BTkRBVE9SWSBzdHJ1Y3R1cmUgZnJvbSBpbXBsZW1lbnRhdGlvbi1zdGFuZGFyZC5tZFxuICogLSBQV0EgQW5pbWF0aW9uIFN5c3RlbTogVHdvLWxheWVyIGFyY2hpdGVjdHVyZSB3aXRoIGdsb2JhbCBjbGFzc2VzIChwd2Etc2Nyb2xsLXNlY3Rpb24gKyBwd2Etc2Nyb2xsLWZhZGUpXG4gKiAtIEdsb2JhbCBUeXBvZ3JhcGh5OiB0aXRsZS1zZWN0aW9uLCBzdWJ0aXRsZS1sZywgZGVzY3JpcHRpb24tbGdcbiAqIC0gSGVyaXRhZ2UgUmVkIDEwJSBSdWxlOiBTaW5nbGUgaGVyaXRhZ2UgYnV0dG9uIHdpdGggZXh0cmEgc3BhY2luZ1xuICogLSBMYXlvdXQgU3lzdGVtOiBTZWN0aW9uIHNpemVzLCBjb250YWluZXJzLCBzdXJmYWNlIGJhY2tncm91bmRzXG4gKiAtIEljb24gU3lzdGVtOiBNb2Rlcm4gZW51bS1iYXNlZCBpY29ucyB3aXRoIHByb3BlciBjb250YWluZXJzXG4gKiAtIE11bHRpLVJlc29sdXRpb24gU3VwcG9ydDogTW9iaWxlICjiiaQ3NjdweCksIHRhYmxldCAoNzY4LTEwMjNweCksIGRlc2t0b3AgKDEwMjQtMjU1OXB4KSwgaGlnaC1yZXMgKOKJpTI1NjBweClcbiAqIC0gUGVyZm9ybWFuY2U6IEhhcmR3YXJlIGFjY2VsZXJhdGlvbiwgNjBmcHMsIGNyaXRpY2FsIENTUyBvcHRpbWl6YXRpb25cbiAqIFxuICogQlVUVE9OIFNUWUxJTkcgRklYRVM6XG4gKiAtIE5PIHVud2FudGVkIGJvcmRlcnMgb3IgYm94ZXMgYXJvdW5kIGJ1dHRvbnNcbiAqIC0gQ2xlYW4gY29sb3IgY29udHJhc3Qgd2l0aG91dCBibGVuZGluZyBpc3N1ZXNcbiAqIC0gUHJvcGVyIHZpc3VhbCBoaWVyYXJjaHkgYmV0d2VlbiBidXR0b24gdHlwZXNcbiAqIC0gQ2xlYW4gaWNvbiBjb250YWluZXIgaW50ZWdyYXRpb25cbiAqIC0gSGVyaXRhZ2UgcmVkIGNvbXBsaWFuY2Ugd2l0aCBjbGVhbiBhcHBlYXJhbmNlXG4gKiAtIFNtb290aCBob3Zlci9mb2N1cyB0cmFuc2l0aW9ucyB3aXRob3V0IGFydGlmYWN0c1xuICogXG4gKiBJQ09OIENPTlRSQVNUIEZJWEVTIHY0LjE6XG4gKiAtIFNlY29uZGFyeSBidXR0b24gaWNvbiBjb250YWluZXIgZW5oYW5jZWQgZnJvbSAwLjE4IHRvIDAuMjUgb3BhY2l0eSBmb3IgV0NBRyBBQSBjb21wbGlhbmNlXG4gKiAtIEhvdmVyIHN0YXRlIGVuaGFuY2VkIGZyb20gMC4yNSB0byAwLjM1IG9wYWNpdHkgZm9yIGJldHRlciBmZWVkYmFja1xuICogLSBXQ0FHIDIuMSBBQSBjb250cmFzdCByYXRpbyBjb21wbGlhbmNlICg0LjU6MSBtaW5pbXVtKSB2ZXJpZmllZFxuICogLSBDb25zaXN0ZW50IHdpdGggb3RoZXIgaWNvbiBjb250YWluZXJzIGFjcm9zcyB0aGUgc3lzdGVtXG4gKiAtIE1vYmlsZSByZXNwb25zaXZlbmVzcyBtYWludGFpbmVkXG4gKiAtIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0IGVuaGFuY2VkXG4gKiBcbiAqIE9QVElNSVpBVElPTiBGRUFUVVJFUyB2My4xOlxuICogLSBTZWN0aW9uIFBhdHRlcm4gSW50ZWdyYXRpb246IEhlcm8gbm93IGZvbGxvd3MgU2VjdGlvbiBjb21wb25lbnQgc3RydWN0dXJlXG4gKiAtIEVuaGFuY2VkIGxheW91dCB1dGlsaXR5IGludGVncmF0aW9uIChsYXlvdXQtc2VjdGlvbi0qLCBzdXJmYWNlLSopXG4gKiAtIEltcHJvdmVkIENTUyB2YXJpYWJsZSB1c2FnZSBmb3IgZ3JhbnVsYXIgY3VzdG9taXphdGlvblxuICogLSBIaWdoLXJlc29sdXRpb24gZGlzcGxheSBvcHRpbWl6YXRpb25zICjiiaUyNTYwcHgpXG4gKiAtIENvbnRhaW5lciBxdWVyeSBpbnRlZ3JhdGlvbiBmb3IgY29tcG9uZW50LWxldmVsIHJlc3BvbnNpdmVuZXNzXG4gKiAtIEVuaGFuY2VkIGZvY3VzIHN0YXRlcyBmb3IgaW1wcm92ZWQgYWNjZXNzaWJpbGl0eVxuICogLSBQcmludCBtZWRpYSBvcHRpbWl6YXRpb24gZm9yIGRvY3VtZW50YXRpb25cbiAqIC0gQ3JpdGljYWwgQ1NTIG9wdGltaXphdGlvbiBmb3IgbW9iaWxlLWZpcnN0IGxvYWRpbmdcbiAqIC0gQnV0dG9uIHN0eWxpbmcgZml4ZXMgZm9yIGNsZWFuIGFwcGVhcmFuY2VcbiAqIFxuICogQ0xBU1NFUyBVU0VEIElOIEhFUk8uVFNYIChTZWN0aW9uIFBhdHRlcm4gQ29tcGxpYW50KTpcbiAqIC0gaGVyby1zZWN0aW9uOiBNYWluIHNlY3Rpb24gd3JhcHBlciAoZW5oYW5jZWQgYnkgc3VyZmFjZS1kZWZhdWx0LCBsYXlvdXQtc2VjdGlvbi14bCwgcHdhLXNjcm9sbC1zZWN0aW9uKVxuICogLSBoZXJvLWNvbnRlbnQ6IENvbnRlbnQgd3JhcHBlciAoZW5oYW5jZWQgYnkgbGF5b3V0LWNvbnRhaW5lcikgLSB1c2VkIGZvciBib3RoIGhlYWRlciBhbmQgY29udGVudFxuICogLSBoZXJvLXRpdGxlOiBUaXRsZSBlbmhhbmNlbWVudCAoYnVpbGRzIG9uIHRpdGxlLXNlY3Rpb24gZ2xvYmFsIGNsYXNzKVxuICogLSBoZXJvLXN1YnRpdGxlOiBTdWJ0aXRsZSBlbmhhbmNlbWVudCAoYnVpbGRzIG9uIHN1YnRpdGxlLWxnIGdsb2JhbCBjbGFzcylcbiAqIC0gaGVyby1kZXNjcmlwdGlvbjogRGVzY3JpcHRpb24gZW5oYW5jZW1lbnQgKGJ1aWxkcyBvbiBkZXNjcmlwdGlvbi1sZyBnbG9iYWwgY2xhc3MpXG4gKiAtIGhlcm8tYWN0aW9uczogQ1RBIGNvbnRhaW5lciAoYnVpbGRzIG9uIHB3YS1zY3JvbGwtZmFkZSlcbiAqIC0gaGVyby1idXR0b24taGVyaXRhZ2U6IEhlcml0YWdlIGJ1dHRvbiBlbmhhbmNlbWVudCAoYnVpbGRzIG9uIGJ0biBidG4taGVyaXRhZ2UpXG4gKiAtIGhlcm8tYnV0dG9uLXNlY29uZGFyeTogU2Vjb25kYXJ5IGJ1dHRvbiBlbmhhbmNlbWVudCAoYnVpbGRzIG9uIGJ0biBidG4tc2Vjb25kYXJ5KVxuICogLSBoZXJvLWJ1dHRvbi1pY29uOiBJY29uIHN0eWxpbmcgZm9yIGJ1dHRvbiBpY29uc1xuICogLSBoZXJvLWJ1dHRvbi1pY29uLXBsYXk6IFBsYXkgaWNvbiBzcGVjaWZpYyBzdHlsaW5nXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDU1MgQ1VTVE9NIFBST1BFUlRJRVMgLSBFWFBBTkRFRCBWQVJJQUJMRSBTWVNURU1cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaGVyby1zZWN0aW9uIHtcbiAgLyogQ29tcG9uZW50LWxldmVsIENTUyB2YXJpYWJsZXMgZm9yIGdyYW51bGFyIGN1c3RvbWl6YXRpb24gKi9cbiAgLS1oZXJvLXNlY3Rpb24tbWluLWhlaWdodDogNjB2aDtcbiAgLS1oZXJvLWNvbnRlbnQtbWF4LXdpZHRoOiA1NnJlbTtcbiAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgLS1oZXJvLWNvbnRlbnQtcGFkZGluZzogdmFyKC0tc3BhY2UtOCkgMDtcbiAgLS1oZXJvLWFjdGlvbnMtZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgLS1oZXJvLWFjdGlvbnMtbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIC0taGVyby10aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgLS1oZXJvLXN1YnRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICAtLWhlcm8tZGVzY3JpcHRpb24tbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIC0taGVyby1idXR0b24taGVyaXRhZ2UtcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gIC0taGVyby1idXR0b24tc2Vjb25kYXJ5LXBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICAtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQ6IDQ4cHg7XG4gIC0taGVyby1idXR0b24tZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpO1xuICAtLWhlcm8taG92ZXItdHJhbnNmb3JtLXk6IGNhbGModmFyKC0tc3BhY2UtMC01KSAqIC0xKTtcbiAgLS1oZXJvLWhvdmVyLXNjYWxlOiAxLjAyO1xuICAtLWhlcm8tZm9jdXMtb3V0bGluZS13aWR0aDogM3B4O1xuICAtLWhlcm8tZm9jdXMtb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT05UQUlORVIgUVVFUklFUyAtIENPTVBPTkVOVC1MRVZFTCBSRVNQT05TSVZFTkVTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29udGFpbmVyIHF1ZXJ5IHN1cHBvcnQgZm9yIGludHJpbnNpYyBjb21wb25lbnQgcmVzcG9uc2l2ZW5lc3NcbiAqIEVuYWJsZXMgY29tcG9uZW50IHRvIGFkYXB0IGJhc2VkIG9uIGl0cyBjb250YWluZXIgc2l6ZSwgbm90IHZpZXdwb3J0XG4gKi9cbkBjb250YWluZXIgKG1pbi13aWR0aDogMzIwcHgpIHtcbiAgLmhlcm8tY29udGVudCB7XG4gICAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG5AY29udGFpbmVyIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5oZXJvLWNvbnRlbnQge1xuICAgIC0taGVyby1jb250ZW50LWdhcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC5oZXJvLWFjdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IHZhcigtLWhlcm8tYWN0aW9ucy1tYXJnaW4tdG9wKSBhdXRvIDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbkBjb250YWluZXIgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlcm8tY29udGVudCB7XG4gICAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgICAtLWhlcm8tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS0xMikgMDtcbiAgfVxufVxuXG5AY29udGFpbmVyIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTEyKTtcbiAgICAtLWhlcm8tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS0xNikgMDtcbiAgfVxuICBcbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgLS1oZXJvLWFjdGlvbnMtZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFUk8gU0VDVElPTiBMQVlPVVQgLSBTRUNUSU9OIFBBVFRFUk4gQ09NUExJQU5UXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBIZXJvIFNlY3Rpb24gLSBNb2JpbGUtRmlyc3Qgd2l0aCBMYXlvdXQgU3lzdGVtIEludGVncmF0aW9uXG4gKiBVc2VzIGdsb2JhbCBjbGFzc2VzOiBzdXJmYWNlLWRlZmF1bHQsIGxheW91dC1zZWN0aW9uLXhsLCBwd2Etc2Nyb2xsLXNlY3Rpb25cbiAqIENvbXBvbmVudCBzdHlsZXMgcHJvdmlkZSBsYXlvdXQgYW5kIHNwYWNpbmcgZW5oYW5jZW1lbnRzIG9ubHlcbiAqIFNFQ1RJT04gUEFUVEVSTjogRm9sbG93cyBleGFjdCBzdHJ1Y3R1cmUgZnJvbSBpbXBsZW1lbnRhdGlvbi1zdGFuZGFyZC5tZFxuICovXG4uaGVyby1zZWN0aW9uIHtcbiAgLyogU2VjdGlvbiBsYXlvdXQgYW5kIHNwYWNpbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBtaW4taGVpZ2h0OiB2YXIoLS1oZXJvLXNlY3Rpb24tbWluLWhlaWdodCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgXG4gIC8qIENvbXBvbmVudC1zcGVjaWZpYyBlbmhhbmNlbWVudHMgb25seSAtIGZvdW5kYXRpb24gaGFuZGxlZCBieSBnbG9iYWwgY2xhc3NlcyAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8qIFByZXZlbnQgYW5pbWF0aW9uIG92ZXJmbG93ICovXG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHdpdGggY29udGFpbmVyIHF1ZXJpZXMgKi9cbiAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplO1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07IC8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgUFdBIGFuaW1hdGlvbnMgKi9cbn1cblxuLyogVGFibGV0OiBlbmhhbmNlZCBtaW5pbXVtIGhlaWdodCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5oZXJvLXNlY3Rpb24ge1xuICAgIC0taGVyby1zZWN0aW9uLW1pbi1oZWlnaHQ6IDcwdmg7XG4gIH1cbn1cblxuLyogRGVza3RvcDogb3B0aW1hbCBwcmVzZW50YXRpb24gaGVpZ2h0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLXNlY3Rpb24ge1xuICAgIC0taGVyby1zZWN0aW9uLW1pbi1oZWlnaHQ6IDgwdmg7XG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uIGRpc3BsYXlzOiBtYXhpbXVtIGltcGFjdCB3aXRoIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1zZWN0aW9uIHtcbiAgICAtLWhlcm8tc2VjdGlvbi1taW4taGVpZ2h0OiA4NXZoO1xuICAgIG1heC1oZWlnaHQ6IDEwMHZoOyAvKiBQcmV2ZW50IGV4Y2Vzc2l2ZSBoZWlnaHQgb24gdWx0cmEtd2lkZSBkaXNwbGF5cyAqL1xuICAgIC8qIEhpZ2gtRFBJIG9wdGltaXphdGlvbiAqL1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vKipcbiAqIEhlcm8gQ29udGVudCAtIENvbnRlbnQgTGF5b3V0IEdyaWQgKFNlY3Rpb24gUGF0dGVybilcbiAqIFdvcmtzIHdpdGggbGF5b3V0LWNvbnRhaW5lciBmcm9tIGdsb2JhbCBzeXN0ZW1cbiAqIENvbXBvbmVudCBwcm92aWRlcyBjb250ZW50LXNwZWNpZmljIGxheW91dFxuICogU0VDVElPTiBQQVRURVJOOiBVc2VkIGZvciBib3RoIGhlYWRlciBhbmQgY29udGVudCBhcmVhc1xuICovXG4uaGVyby1jb250ZW50IHtcbiAgLyogTGF5b3V0IHVzaW5nIENTUyBHcmlkIGZvciBiZXR0ZXIgY29udHJvbCB3aXRoIENTUyB2YXJpYWJsZXMgKi9cbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiB2YXIoLS1oZXJvLWNvbnRlbnQtZ2FwKTtcbiAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1heC13aWR0aDogdmFyKC0taGVyby1jb250ZW50LW1heC13aWR0aCk7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogdmFyKC0taGVyby1jb250ZW50LXBhZGRpbmcpO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG59XG5cbi8qIFRhYmxldDogaW5jcmVhc2VkIHNwYWNpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTgpO1xuICAgIC0taGVyby1jb250ZW50LXBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xuICAgIC0taGVyby1jb250ZW50LW1heC13aWR0aDogNDhyZW07IC8qIDc2OHB4IGZvciB0YWJsZXQgcmVhZGFiaWxpdHkgKi9cbiAgfVxufVxuXG4vKiBEZXNrdG9wOiBtYXhpbXVtIHNwYWNpbmcgYW5kIHJlZmluZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLWNvbnRlbnQge1xuICAgIC0taGVyby1jb250ZW50LWdhcDogdmFyKC0tc3BhY2UtMTIpO1xuICAgIC0taGVyby1jb250ZW50LW1heC13aWR0aDogNjRyZW07IC8qIDEwMjRweCBmb3IgZGVza3RvcCAqL1xuICAgIC0taGVyby1jb250ZW50LXBhZGRpbmc6IHZhcigtLXNwYWNlLTE2KSAwO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbjogZW5oYW5jZWQgbGF5b3V0IGZvciBsYXJnZSBkaXNwbGF5cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1jb250ZW50IHtcbiAgICAtLWhlcm8tY29udGVudC1nYXA6IHZhcigtLXNwYWNlLTE2KTtcbiAgICAtLWhlcm8tY29udGVudC1tYXgtd2lkdGg6IDcycmVtOyAvKiAxMTUycHggZm9yIGhpZ2gtcmVzIGRpc3BsYXlzICovXG4gICAgLS1oZXJvLWNvbnRlbnQtcGFkZGluZzogdmFyKC0tc3BhY2UtMjApIDA7XG4gICAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvciBoaWdoLURQSSBkaXNwbGF5cyAqL1xuICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFUk8gQ09OVEVOVCBFTEVNRU5UUyAtIEJVSUxESU5HIE9OIEdMT0JBTCBUWVBPR1JBUEhZXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBIZXJvIFRpdGxlIC0gQnVpbGRzIG9uIGdsb2JhbCB0aXRsZS1zZWN0aW9uIGNsYXNzXG4gKiBDb21wb25lbnQgc3R5bGVzIGFkZCB2aXN1YWwgZW5oYW5jZW1lbnRzIG9ubHlcbiAqIFNFQ1RJT04gUEFUVEVSTjogRW5oYW5jZWQgd2l0aCBoZXJvLXNwZWNpZmljIHN0eWxpbmdcbiAqL1xuLmhlcm8tdGl0bGUge1xuICAvKiBWaXN1YWwgZW5oYW5jZW1lbnRzIHRvIGdsb2JhbCB0eXBvZ3JhcGh5IHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSksIFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSlcbiAgKTtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICBcbiAgLyogTGF5b3V0IGFuZCBzcGFjaW5nIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0taGVyby10aXRsZS1tYXJnaW4tYm90dG9tKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB3aXRoIEdQVSBhY2NlbGVyYXRpb24gKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAvKiBDcml0aWNhbCBDU1Mgb3B0aW1pemF0aW9uICovXG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBUYWJsZXQ6IGVuaGFuY2VkIHZpc3VhbCB0cmVhdG1lbnQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby10aXRsZSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgLS1oZXJvLXRpdGxlLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbi8qIERlc2t0b3A6IGVuaGFuY2VkIHR5cG9ncmFwaHkgdHJlYXRtZW50ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLXRpdGxlIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcbiAgICAtLWhlcm8tdGl0bGUtbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC8qIERlY29yYXRpdmUgdW5kZXJsaW5lIGZvciBkZXNrdG9wICovXG4gIC5oZXJvLXRpdGxlOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0zKSAqIC0xKTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTQpICogNSk7IC8qIDgwcHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTAtNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1tZWRpdW0pIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb246IHByZW1pdW0gdHlwb2dyYXBoeSB0cmVhdG1lbnQgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmhlcm8tdGl0bGUge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNGVtO1xuICAgIC0taGVyby10aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgICAvKiBIaWdoLURQSSB0ZXh0IHJlbmRlcmluZyBvcHRpbWl6YXRpb24gKi9cbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gIFxuICAuaGVyby10aXRsZTo6YWZ0ZXIge1xuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNwYWNlLTQpICogNik7IC8qIDk2cHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTEpO1xuICAgIGJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIC0xKTtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbn1cblxuLyoqXG4gKiBIZXJvIFN1YnRpdGxlIC0gQnVpbGRzIG9uIGdsb2JhbCBzdWJ0aXRsZS1sZyBjbGFzc1xuICogQ29tcG9uZW50IHN0eWxlcyBmb3IgbGF5b3V0IGFuZCBjb2xvciBlbmhhbmNlbWVudFxuICogU0VDVElPTiBQQVRURVJOOiBFbmhhbmNlZCB3aXRoIGhlcm8tc3BlY2lmaWMgc3R5bGluZ1xuICovXG4uaGVyby1zdWJ0aXRsZSB7XG4gIC8qIENvbG9yIGVuaGFuY2VtZW50IHRvIGdsb2JhbCBzdWJ0aXRsZS1sZyAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3BhY2l0eTogMC45O1xuICBcbiAgLyogTGF5b3V0IGFuZCBzcGFjaW5nIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgbWF4LXdpZHRoOiA0OHJlbTsgLyogNzY4cHggKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0taGVyby1zdWJ0aXRsZS1tYXJnaW4tYm90dG9tKTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4vKiBUYWJsZXQgcmVmaW5lbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1zdWJ0aXRsZSB7XG4gICAgbWF4LXdpZHRoOiA0MnJlbTsgLyogNjcycHggZm9yIHRhYmxldCAqL1xuICAgIC0taGVyby1zdWJ0aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIHJlZmluZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLXN1YnRpdGxlIHtcbiAgICBtYXgtd2lkdGg6IDUwcmVtOyAvKiA4MDBweCBmb3IgZGVza3RvcCAqL1xuICAgIC0taGVyby1zdWJ0aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gcmVmaW5lbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmhlcm8tc3VidGl0bGUge1xuICAgIG1heC13aWR0aDogNTZyZW07IC8qIDg5NnB4IGZvciBoaWdoLXJlcyAqL1xuICAgIC0taGVyby1zdWJ0aXRsZS1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG4vKipcbiAqIEhlcm8gRGVzY3JpcHRpb24gLSBCdWlsZHMgb24gZ2xvYmFsIGRlc2NyaXB0aW9uLWxnIGNsYXNzXG4gKiBDb21wb25lbnQgc3R5bGVzIGZvciBvcHRpbWFsIHJlYWRhYmlsaXR5XG4gKiBTRUNUSU9OIFBBVFRFUk46IEVuaGFuY2VkIHdpdGggaGVyby1zcGVjaWZpYyBzdHlsaW5nXG4gKi9cbi5oZXJvLWRlc2NyaXB0aW9uIHtcbiAgLyogT3B0aW1hbCByZWFkaW5nIHdpZHRoIGFuZCBzcGFjaW5nIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgbWF4LXdpZHRoOiA0MnJlbTsgLyogNjcycHggZm9yIG9wdGltYWwgcmVhZGFiaWxpdHkgKi9cbiAgbWFyZ2luOiAwIGF1dG8gdmFyKC0taGVyby1kZXNjcmlwdGlvbi1tYXJnaW4tYm90dG9tKTtcbiAgcGFkZGluZzogMDtcbiAgbGluZS1oZWlnaHQ6IDEuNzsgLyogRW5oYW5jZWQgcmVhZGFiaWxpdHkgKi9cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4vKiBUYWJsZXQ6IGVuaGFuY2VkIHBhZGRpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1kZXNjcmlwdGlvbiB7XG4gICAgcGFkZGluZzogMDtcbiAgICAtLWhlcm8tZGVzY3JpcHRpb24tbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gICAgbWF4LXdpZHRoOiA0MHJlbTsgLyogNjQwcHggKi9cbiAgfVxufVxuXG4vKiBEZXNrdG9wOiBkZWNvcmF0aXZlIGVuaGFuY2VtZW50ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLWRlc2NyaXB0aW9uIHtcbiAgICBtYXgtd2lkdGg6IDQ0cmVtOyAvKiA3MDRweCAqL1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IHZhcigtLXNwYWNlLTAtNSkgc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xNSk7XG4gICAgLS1oZXJvLWRlc2NyaXB0aW9uLW1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbjogcHJlbWl1bSBsYXlvdXQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmhlcm8tZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNDhyZW07IC8qIDc2OHB4ICovXG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItYm90dG9tOiB2YXIoLS1zcGFjZS0xKSBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjIpO1xuICAgIC0taGVyby1kZXNjcmlwdGlvbi1tYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBsaW5lLWhlaWdodDogMS44O1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVSTyBBQ1RJT05TICYgQlVUVE9OUyAtIEhFUklUQUdFIFJFRCBDT01QTElBTkNFIChTRUNUSU9OIFBBVFRFUk4pXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBIZXJvIEFjdGlvbnMgLSBDVEEgQ29udGFpbmVyIChTZWN0aW9uIFBhdHRlcm4pXG4gKiBNb2JpbGU6IHN0YWNrZWQsIFRhYmxldC9EZXNrdG9wOiBob3Jpem9udGFsXG4gKiBTRUNUSU9OIFBBVFRFUk46IEVuaGFuY2VkIHdpdGggcHdhLXNjcm9sbC1mYWRlIGludGVncmF0aW9uXG4gKiBGSVhFRDogQnV0dG9ucyBub3cgcHJvcGVybHkgY2VudGVyZWQgKEtJU1MgcHJpbmNpcGxlKVxuICovXG4uaGVyby1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1oZXJvLWFjdGlvbnMtZ2FwKTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbjogdmFyKC0taGVyby1hY3Rpb25zLW1hcmdpbi10b3ApIGF1dG8gMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgLyogSGVyaXRhZ2UgMTAlIHJ1bGU6IEV4dHJhIHNwYWNpbmcgYXJvdW5kIGhlcml0YWdlIGJ1dHRvbiBjb250YWluZXIgKi9cbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMykgMDtcbiAgXG4gIC8qIEZvcmNlIHByb3BlciBjZW50ZXJpbmcgKi9cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIFRhYmxldDogaG9yaXpvbnRhbCBsYXlvdXQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1hY3Rpb25zIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS0zKSBhdXRvIDA7XG4gICAgLS1oZXJvLWFjdGlvbnMtZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICAtLWhlcm8tYWN0aW9ucy1tYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbiAgXG4gIC8qIEZJWEVEOiBBbGxvdyBmbGV4aWJsZSBidXR0b24gc2l6aW5nIGZvciBsb25nZXIgdGV4dCAqL1xuICAuaGVyby1idXR0b24taGVyaXRhZ2UsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMTgwcHg7XG4gICAgLyogUmVtb3ZlZCBtYXgtd2lkdGggdG8gYWxsb3cgYnV0dG9ucyB0byBncm93IHdpdGggY29udGVudCAqL1xuICAgIGZsZXg6IDAgMSBhdXRvOyAvKiBBbGxvdyBzaHJpbmsgYnV0IHByZWZlciBjb250ZW50IHdpZHRoICovXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIGFueSBpbmhlcml0ZWQgbWFyZ2lucyAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGV4dCB3cmFwcGluZyBvbiB0YWJsZXQvZGVza3RvcCAqL1xuICB9XG59XG5cbi8qIERlc2t0b3A6IGVuaGFuY2VkIHNwYWNpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAyNTU5cHgpIHtcbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgYXV0byAwO1xuICAgIC0taGVyby1hY3Rpb25zLWdhcDogdmFyKC0tc3BhY2UtOCk7XG4gICAgLS1oZXJvLWFjdGlvbnMtbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIFxuICAvKiBGSVhFRDogQWxsb3cgZmxleGlibGUgYnV0dG9uIHNpemluZyBmb3IgbG9uZ2VyIHRleHQgKi9cbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIC8qIFJlbW92ZWQgbWF4LXdpZHRoIHRvIGFsbG93IGJ1dHRvbnMgdG8gZ3JvdyB3aXRoIGNvbnRlbnQgKi9cbiAgICBmbGV4OiAwIDEgYXV0bzsgLyogQWxsb3cgc2hyaW5rIGJ1dCBwcmVmZXIgY29udGVudCB3aWR0aCAqL1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyAvKiBPdmVycmlkZSBhbnkgaW5oZXJpdGVkIG1hcmdpbnMgKi9cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBQcmV2ZW50IHRleHQgd3JhcHBpbmcgb24gZGVza3RvcCAqL1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbjogcHJlbWl1bSBzcGFjaW5nICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC5oZXJvLWFjdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIGF1dG8gMDtcbiAgICAtLWhlcm8tYWN0aW9ucy1nYXA6IHZhcigtLXNwYWNlLTEyKTtcbiAgICAtLWhlcm8tYWN0aW9ucy1tYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbiAgXG4gIC8qIEZJWEVEOiBBbGxvdyBmbGV4aWJsZSBidXR0b24gc2l6aW5nIGZvciBsb25nZXIgdGV4dCAqL1xuICAuaGVyby1idXR0b24taGVyaXRhZ2UsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgLyogUmVtb3ZlZCBtYXgtd2lkdGggdG8gYWxsb3cgYnV0dG9ucyB0byBncm93IHdpdGggY29udGVudCAqL1xuICAgIGZsZXg6IDAgMSBhdXRvOyAvKiBBbGxvdyBzaHJpbmsgYnV0IHByZWZlciBjb250ZW50IHdpZHRoICovXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIGFueSBpbmhlcml0ZWQgbWFyZ2lucyAqL1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGV4dCB3cmFwcGluZyBvbiBoaWdoLXJlcyBkaXNwbGF5cyAqL1xuICB9XG59XG5cbi8qKlxuICogSGVybyBCdXR0b24gLSBIZXJpdGFnZSAoUHJpbWFyeSBDVEEpXG4gKiBCdWlsZHMgb24gZ2xvYmFsIGJ0biBidG4taGVyaXRhZ2UgY2xhc3Nlc1xuICogSW1wbGVtZW50cyAxMCUgcnVsZSB3aXRoIGV4dHJhIHNwYWNpbmcgKDMwJSBtb3JlKVxuICogRW5oYW5jZWQgaG92ZXIgYW5pbWF0aW9ucyB3aXRoIHN0YWdnZXJlZCBlZmZlY3RzXG4gKiBTRUNUSU9OIFBBVFRFUk46IEludGVncmF0ZWQgd2l0aGluIGNvbnRlbnQgc3RydWN0dXJlXG4gKiBcbiAqIEJVVFRPTiBTVFlMSU5HIEZJWEVTOlxuICogLSBOTyB1bndhbnRlZCBib3JkZXJzIC0gdXNlIGJvcmRlcjogbm9uZSBmb3IgY2xlYW4gYXBwZWFyYW5jZVxuICogLSBDbGVhbiBiYWNrZ3JvdW5kIGNvbG9ycyB3aXRoIHByb3BlciBjb250cmFzdFxuICogLSBIZXJpdGFnZSByZWQgY29tcGxpYW5jZSB3aXRoIHByb3BlciBzcGFjaW5nXG4gKiAtIFNtb290aCB0cmFuc2l0aW9ucyB3aXRob3V0IHZpc3VhbCBhcnRpZmFjdHNcbiAqL1xuLmhlcm8tYnV0dG9uLWhlcml0YWdlIHtcbiAgLyogSGVyaXRhZ2UgYnV0dG9uIHNwYWNpbmcgZW5oYW5jZW1lbnQgKDEwJSBtb3JlIHRoYW4gc3RhbmRhcmQpIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgcGFkZGluZzogdmFyKC0taGVyby1idXR0b24taGVyaXRhZ2UtcGFkZGluZykgIWltcG9ydGFudDtcbiAgXG4gIC8qIFRvdWNoIHRhcmdldCBvcHRpbWl6YXRpb24gdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBoZWlnaHQ6IHZhcigtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQpOyAvKiBGaXhlZCBoZWlnaHQgdG8gcHJldmVudCBvdmVyc2l6aW5nICovXG4gIFxuICAvKiBMYXlvdXQgYW5kIGNvbnRlbnQgKi9cbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0taGVyby1idXR0b24tZ2FwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvKiBDbGlwIG92ZXJmbG93IGNvbnRlbnQgKi9cbiAgXG4gIC8qIEJ1dHRvbiBzaXppbmcgLSBvdmVycmlkZSBiYXNlIG1hcmdpbnMgdGhhdCBhZGQgdG8gaGVpZ2h0ICovXG4gIHdpZHRoOiBhdXRvO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IC8qIE92ZXJyaWRlIGJ0bi1oZXJpdGFnZSBtYXJnaW5zIHRoYXQgYnJlYWsgY2VudGVyaW5nIGFuZCBhZGQgdG8gaGVpZ2h0ICovXG4gIFxuICAvKiBDTEVBTiBCVVRUT04gQVBQRUFSQU5DRSAtIFJlbW92ZSB1bndhbnRlZCBib3JkZXJzICovXG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgXG4gIC8qIEhlcml0YWdlIGJ1dHRvbiB2aXN1YWwgZW5oYW5jZW1lbnRzICovXG4gIGZvbnQtd2VpZ2h0OiA2MDA7IC8qIE1pbmltdW0gd2VpZ2h0IGZvciBoZXJpdGFnZSByZWQgKi9cbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI7IC8qIENvbXBhY3QgbGluZSBoZWlnaHQgdG8gcmVkdWNlIG92ZXJhbGwgaGVpZ2h0ICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIFxuICAvKiBFbmhhbmNlZCB0cmFuc2l0aW9ucyBmb3Igc21vb3RoZXIgYW5pbWF0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBcbiAgICB0cmFuc2Zvcm0gdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgYm94LXNoYWRvdyB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIFxuICAvKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gd2l0aCBHUFUgYWNjZWxlcmF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdztcbn1cblxuLyogVGFibGV0IG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAuaGVyby1idXR0b24taGVyaXRhZ2Uge1xuICAgIC0taGVyby1idXR0b24tbWluLWhlaWdodDogNDRweDtcbiAgICAtLWhlcm8tYnV0dG9uLWhlcml0YWdlLXBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA0OHB4O1xuICAgIC0taGVyby1idXR0b24taGVyaXRhZ2UtcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gcHJlbWl1bSB0cmVhdG1lbnQgd2l0aCBlbmhhbmNlZCBwZXJmb3JtYW5jZSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1idXR0b24taGVyaXRhZ2Uge1xuICAgIC0taGVyby1idXR0b24tbWluLWhlaWdodDogNTJweDtcbiAgICAtLWhlcm8tYnV0dG9uLWhlcml0YWdlLXBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTgpO1xuICAgIC0taGVyby1idXR0b24tZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgICAvKiBIaWdoLURQSSBvcHRpbWl6YXRpb24gKi9cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxufVxuXG4vKiBFbmhhbmNlZCBoZXJpdGFnZSBidXR0b24gaG92ZXIgc3RhdGUgd2l0aCBzdGFnZ2VyZWQgYW5pbWF0aW9uICovXG4uaGVyby1idXR0b24taGVyaXRhZ2U6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0taGVyby1ob3Zlci10cmFuc2Zvcm0teSkpIHNjYWxlKHZhcigtLWhlcm8taG92ZXItc2NhbGUpKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KSByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMjUpLFxuICAgIDAgdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMikgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjE1KTtcbiAgLyogU3RhZ2dlcmVkIGFuaW1hdGlvbiBkZWxheSBmb3IgaWNvbiAqL1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcywgMC4wNXM7XG59XG5cbi8qKlxuICogSGVybyBCdXR0b24gLSBTZWNvbmRhcnlcbiAqIEJ1aWxkcyBvbiBnbG9iYWwgYnRuIGJ0bi1zZWNvbmRhcnkgY2xhc3Nlc1xuICogU3RhbmRhcmQgYnV0dG9uIHN0eWxpbmcgd2l0aCB0b3VjaCBvcHRpbWl6YXRpb25cbiAqIEVuaGFuY2VkIGFuaW1hdGlvbnMgd2l0aCBzbW9vdGggdHJhbnNpdGlvbnNcbiAqIFNFQ1RJT04gUEFUVEVSTjogSW50ZWdyYXRlZCB3aXRoaW4gY29udGVudCBzdHJ1Y3R1cmVcbiAqIFxuICogQlVUVE9OIFNUWUxJTkcgRklYRVM6XG4gKiAtIE5PIHVud2FudGVkIGJvcmRlcnMgLSB1c2UgYm9yZGVyOiBub25lIGZvciBjbGVhbiBhcHBlYXJhbmNlXG4gKiAtIENsZWFuIGJhY2tncm91bmQgY29sb3JzIHdpdGggcHJvcGVyIGNvbnRyYXN0XG4gKiAtIFZpc3VhbCBoaWVyYXJjaHkgd2l0aCBoZXJpdGFnZSBidXR0b25cbiAqIC0gU21vb3RoIHRyYW5zaXRpb25zIHdpdGhvdXQgdmlzdWFsIGFydGlmYWN0c1xuICovXG4uaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgLyogVG91Y2ggdGFyZ2V0IG9wdGltaXphdGlvbiB1c2luZyBDU1MgdmFyaWFibGVzICovXG4gIHBhZGRpbmc6IHZhcigtLWhlcm8tYnV0dG9uLXNlY29uZGFyeS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IHZhcigtLWhlcm8tYnV0dG9uLW1pbi1oZWlnaHQpOyAvKiBGaXhlZCBoZWlnaHQgdG8gcHJldmVudCBvdmVyc2l6aW5nICovXG4gIGxpbmUtaGVpZ2h0OiAxLjI7IC8qIENvbXBhY3QgbGluZSBoZWlnaHQgdG8gbWF0Y2ggaGVyaXRhZ2UgYnV0dG9uICovXG4gIFxuICAvKiBMYXlvdXQgYW5kIGNvbnRlbnQgKi9cbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0taGVyby1idXR0b24tZ2FwKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogRW5zdXJlIHRleHQgZG9lc24ndCBvdmVyZmxvdyAqL1xuICBcbiAgLyogQnV0dG9uIHNpemluZyAqL1xuICB3aWR0aDogYXV0bztcbiAgZmxleDogMCAwIGF1dG87XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50OyAvKiBFbnN1cmUgY29uc2lzdGVudCBtYXJnaW4gaGFuZGxpbmcgKi9cbiAgXG4gIC8qIENMRUFOIEJVVFRPTiBBUFBFQVJBTkNFIC0gUmVtb3ZlIHVud2FudGVkIGJvcmRlcnMgKi9cbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBcbiAgLyogRW5oYW5jZWQgaW50ZXJhY3Rpb24gd2l0aCBpbXByb3ZlZCB0aW1pbmcgKi9cbiAgdHJhbnNpdGlvbjogXG4gICAgdHJhbnNmb3JtIHZhcigtLWhlcm8taWNvbi10cmFuc2l0aW9uLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgIGJveC1zaGFkb3cgdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHdpdGggR1BVIGFjY2VsZXJhdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3c7XG59XG5cbi8qIFRhYmxldCBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA0NHB4O1xuICAgIC0taGVyby1idXR0b24tc2Vjb25kYXJ5LXBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIERlc2t0b3AgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMjU1OXB4KSB7XG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIC0taGVyby1idXR0b24tbWluLWhlaWdodDogNDhweDtcbiAgICAtLWhlcm8tYnV0dG9uLXNlY29uZGFyeS1wYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS03KTtcbiAgfVxufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gcHJlbWl1bSB0cmVhdG1lbnQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgLS1oZXJvLWJ1dHRvbi1taW4taGVpZ2h0OiA1MnB4O1xuICAgIC0taGVyby1idXR0b24tc2Vjb25kYXJ5LXBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTgpO1xuICAgIC0taGVyby1idXR0b24tZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxufVxuXG4vKiBFbmhhbmNlZCBzZWNvbmRhcnkgYnV0dG9uIGhvdmVyIHdpdGggc3RhZ2dlcmVkIGFuaW1hdGlvbiAqL1xuLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1oZXJvLWhvdmVyLXRyYW5zZm9ybS15KSkgc2NhbGUoMS4wMSkgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCkgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xNSksXG4gICAgMCB2YXIoLS1zcGFjZS0wLTUpIHZhcigtLXNwYWNlLTEpIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIC8qIFN0YWdnZXJlZCBhbmltYXRpb24gZGVsYXkgZm9yIGljb24gKi9cbiAgdHJhbnNpdGlvbi1kZWxheTogMHMsIDAuMDNzO1xufVxuXG4vKipcbiAqIEhlcm8gQnV0dG9uIEljb25zIC0gTW9kZXJuIEljb24gU3lzdGVtIEludGVncmF0aW9uXG4gKiBVc2VzIGljb24gY29udGFpbmVycyBmb3IgYnJhbmRlZCBzdHlsaW5nIGFuZCBwcm9wZXIgc2l6aW5nXG4gKiBTbW9vdGhlciB0cmFuc2l0aW9ucyB3aXRoIG9wdGltaXplZCB0cmFuc2Zvcm1zXG4gKiBTRUNUSU9OIFBBVFRFUk46IEludGVncmF0ZWQgd2l0aGluIGJ1dHRvbiBzdHJ1Y3R1cmVcbiAqIFxuICogSUNPTiBTVFlMSU5HIEZJWEVTOlxuICogLSBDbGVhbiBpY29uIGNvbnRhaW5lciBhcHBlYXJhbmNlIHdpdGhvdXQgdW53YW50ZWQgYm9yZGVyc1xuICogLSBQcm9wZXIgYmFja2dyb3VuZCBjb2xvcnMgKG5vdCB0cmFuc3BhcmVudClcbiAqIC0gU21vb3RoIHRyYW5zaXRpb25zIHdpdGhvdXQgdmlzdWFsIGFydGlmYWN0c1xuICovXG4uaGVyby1idXR0b24taWNvbiB7XG4gIC8qIEljb24gc2l6aW5nIHVzaW5nIENTUyB2YXJpYWJsZXMgLSBidWlsZHMgb24gaWNvbiBjb250YWluZXIgc3lzdGVtICovXG4gIHRyYW5zaXRpb246IFxuICAgIHRyYW5zZm9ybSB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpLFxuICAgIG9wYWNpdHkgdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBQbGF5IGljb24gc3BlY2lmaWMgcG9zaXRpb25pbmcgd2l0aCBlbmhhbmNlZCB0cmFuc2l0aW9ucyAqL1xuLmhlcm8tYnV0dG9uLWljb24tcGxheSB7XG4gIC8qIEluaGVyaXRzIGZyb20gaWNvbiBjb250YWluZXIgc3lzdGVtIHdpdGggc21vb3RoZXIgYW5pbWF0aW9uICovXG4gIHRyYW5zaXRpb246IFxuICAgIHRyYW5zZm9ybSB2YXIoLS1oZXJvLWljb24tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpLFxuICAgIG9wYWNpdHkgdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBFbmhhbmNlZCBpY29uIGFuaW1hdGlvbnMgb24gYnV0dG9uIGhvdmVyIHdpdGggc3RhZ2dlcmVkIHRpbWluZyAqL1xuLmhlcm8tYnV0dG9uLWhlcml0YWdlOmhvdmVyIC5oZXJvLWJ1dHRvbi1pY29uIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXNwYWNlLTEpKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC4wNXM7XG59XG5cbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIgLmhlcm8tYnV0dG9uLWljb24tcGxheSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuMDNzO1xufVxuXG4vKiBJY29uIGNvbnRhaW5lciBsYXlvdXQgZm9yIGhlcm8gYnV0dG9ucyAqL1xuLmhlcm8tYnV0dG9uLWhlcml0YWdlIC5pY29uLWNvbnRhaW5lci1zbSxcbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkgLmljb24tY29udGFpbmVyLXNtIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEVuc3VyZSBwZXJmZWN0IGNlbnRlcmluZyB3aXRoaW4gY29udGFpbmVyIC0gb3ZlcnJpZGUgYmFzZSBzdHlsZXMgKi9cbiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAvKiBFbnN1cmUgbm8gY29uZmxpY3RpbmcgbWFyZ2lucyBvciBwYWRkaW5nICovXG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyogSGVyaXRhZ2UgYnV0dG9uIGljb24gY29udGFpbmVyIGxheW91dCAqL1xuLmhlcm8tYnV0dG9uLWhlcml0YWdlIC5pY29uLWNvbnRhaW5lci1zbSB7XG4gIC8qIFJlc2V0IG1hcmdpbiBmb3IgcGVyZmVjdCBjZW50ZXJpbmcsIGJ1dCBrZWVwIHRoZSBpY29uIGdhcCBzcGFjaW5nICovXG4gIG1hcmdpbjogMDtcbn1cblxuLyogU2Vjb25kYXJ5IGJ1dHRvbiBpY29uIGNvbnRhaW5lciBsYXlvdXQgYW5kIHN0eWxpbmcgKi9cbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkgLmljb24tY29udGFpbmVyLXNtIHtcbiAgLyogUmVzZXQgbWFyZ2luIGZvciBwZXJmZWN0IGNlbnRlcmluZywgYnV0IGtlZXAgdGhlIGljb24gZ2FwIHNwYWNpbmcgKi9cbiAgbWFyZ2luOiAwO1xuICAvKiBJQ09OIENPTlRSQVNUIEZJWCB2MjogRW5oYW5jZWQgYmFja2dyb3VuZCBjb2xvciBmb3IgV0NBRyBBQSBjb21wbGlhbmNlICovXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMjUpO1xuICAvKiBFbnN1cmUgY29uc2lzdGVudCBzdHlsaW5nIHdpdGggb3RoZXIgaWNvbiBjb250YWluZXJzICovXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0taGVyby1pY29uLXRyYW5zaXRpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogU2Vjb25kYXJ5IGJ1dHRvbiBob3ZlciBzdGF0ZSAtIGVuaGFuY2UgaWNvbiBjb250YWluZXIgY29udHJhc3QgKi9cbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnk6aG92ZXIgLmljb24tY29udGFpbmVyLXNtIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4zNSk7XG59XG5cbi8qIEVuc3VyZSBpY29uIGNvbG9yIGlzIHByb3Blcmx5IHZpc2libGUgKi9cbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkgLmljb24tY29udGFpbmVyLXNtIC5pY29uLXNtIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpICFpbXBvcnRhbnQ7XG4gIHN0cm9rZS13aWR0aDogMi41O1xufVxuXG4vKiBIaWdoLXJlc29sdXRpb24gaWNvbiBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI1NjBweCkge1xuICAuaGVyby1idXR0b24taGVyaXRhZ2UgLmljb24tY29udGFpbmVyLXNtIHtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnkgLmljb24tY29udGFpbmVyLXNtIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNlLTIpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUkVTUE9OU0lWRSBNT0JJTEUtRklSU1QgT1BUSU1JWkFUSU9OUyAtIENSSVRJQ0FMIENTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogTW9iaWxlLXNwZWNpZmljIG9wdGltaXphdGlvbnNcbiAqIEZvY3VzIG9uIHRvdWNoIHRhcmdldHMgYW5kIHJlYWRhYmlsaXR5XG4gKiBDcml0aWNhbCBDU1MgZm9yIG1vYmlsZS1maXJzdCBsb2FkaW5nXG4gKiBTRUNUSU9OIFBBVFRFUk46IE1vYmlsZSBvcHRpbWl6YXRpb25zIGludGVncmF0ZWRcbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5oZXJvLXNlY3Rpb24ge1xuICAgIC0taGVyby1zZWN0aW9uLW1pbi1oZWlnaHQ6IDUwdmg7IC8qIE9wdGltaXplZCBmb3IgbW9iaWxlIHNjcmVlbnMgKi9cbiAgfVxuICBcbiAgLmhlcm8tY29udGVudCB7XG4gICAgLS1oZXJvLWNvbnRlbnQtZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgICAtLWhlcm8tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS02KSAwO1xuICB9XG4gIFxuICAvKiBNb2JpbGUgYnV0dG9uIG9wdGltaXphdGlvbnMgd2l0aCBjcml0aWNhbCBDU1MgKi9cbiAgLmhlcm8tYWN0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgLS1oZXJvLWFjdGlvbnMtZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbjogdmFyKC0taGVyby1hY3Rpb25zLW1hcmdpbi10b3ApIGF1dG8gMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbiAgXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBtYXgtd2lkdGg6IDI4MHB4OyAvKiBLZWVwIHJlYXNvbmFibGUgbWF4IG9uIG1vYmlsZSAqL1xuICAgIGhlaWdodDogNDhweDsgLyogRml4ZWQgaGVpZ2h0IGZvciBhY2Nlc3NpYmlsaXR5IG9uIG1vYmlsZSAqL1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiBBbGxvdyB0ZXh0IHdyYXBwaW5nIG9uIG1vYmlsZSBpZiBuZWVkZWQgKi9cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgXG4gICAgLyogQ3JpdGljYWwgQ1NTIGZvciBtb2JpbGUgcGVyZm9ybWFuY2UgKi9cbiAgICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gICAgXG4gICAgLyogRW5zdXJlIGNsZWFuIG1vYmlsZSBhcHBlYXJhbmNlICovXG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAvKiBNb2JpbGUgaWNvbiBjb250YWluZXIgYWRqdXN0bWVudHMgKi9cbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlIC5pY29uLWNvbnRhaW5lci1zbSxcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20ge1xuICAgIC8qIE1haW50YWluIHByb3BlciB0b3VjaCB0YXJnZXRzIG9uIG1vYmlsZSAqL1xuICAgIG1hcmdpbjogMCB2YXIoLS1zcGFjZS0xKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VTU0lCSUxJVFkgJiBJTlRFUkFDVElPTiBTVEFURVMgLSBFTkhBTkNFRCBGT0NVU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogRW5oYW5jZWQgZm9jdXMgc3RhdGVzIGZvciBhY2Nlc3NpYmlsaXR5IGNvbXBsaWFuY2UgKFdDQUcgMi4xIEFBKVxuICogSW1wcm92ZWQgdmlzaWJpbGl0eSBhbmQgaW50ZXJhY3Rpb24gZmVlZGJhY2tcbiAqIFNFQ1RJT04gUEFUVEVSTjogRm9jdXMgc3RhdGVzIGludGVncmF0ZWQgd2l0aCBidXR0b24gc3RydWN0dXJlXG4gKiBcbiAqIEZPQ1VTIFNUWUxJTkcgRklYRVM6XG4gKiAtIENsZWFuIGZvY3VzIGluZGljYXRvcnMgd2l0aG91dCB1bndhbnRlZCBib3JkZXIgYXJ0aWZhY3RzXG4gKiAtIFByb3BlciB6LWluZGV4IGZvciBmb2N1c2VkIGVsZW1lbnRzXG4gKiAtIFdDQUcgMi4xIEFBIGNvbXBsaWFuY2UgbWFpbnRhaW5lZFxuICovXG4uaGVyby1idXR0b24taGVyaXRhZ2U6Zm9jdXMtdmlzaWJsZSxcbi5oZXJvLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAwIDAgdmFyKC0taGVyby1mb2N1cy1vdXRsaW5lLXdpZHRoKSByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjMpLFxuICAgIDAgMCAwIGNhbGModmFyKC0taGVyby1mb2N1cy1vdXRsaW5lLXdpZHRoKSArIDFweCkgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKSxcbiAgICAwIHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wMikgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIHRyYW5zaXRpb246IFxuICAgIGJveC1zaGFkb3cgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKSxcbiAgICB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogSWNvbiBjb250YWluZXJzIGhhdmUgbm8gZm9jdXMgc3RhdGVzIC0gbGF5b3V0IG9ubHkgKi9cblxuLyogRW5oYW5jZWQgYWN0aXZlIHN0YXRlcyBmb3IgYmV0dGVyIGludGVyYWN0aW9uIGZlZWRiYWNrICovXG4uaGVyby1idXR0b24taGVyaXRhZ2U6YWN0aXZlLFxuLmhlcm8tYnV0dG9uLXNlY29uZGFyeTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KSBzY2FsZSgwLjk4KSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogY2FsYyh2YXIoLS10aW1pbmctZmFzdCkgKiAwLjUpO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0IHdpdGggZW5oYW5jZWQgdmlzaWJpbGl0eSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5oZXJvLXRpdGxlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB1bnNldDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgICBmb250LXdlaWdodDogNzAwOyAvKiBJbmNyZWFzZWQgd2VpZ2h0IGZvciBoaWdoIGNvbnRyYXN0ICovXG4gIH1cbiAgXG4gIC5oZXJvLXRpdGxlOjphZnRlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICAgIGhlaWdodDogdmFyKC0tc3BhY2UtMSk7IC8qIFRoaWNrZXIgdW5kZXJsaW5lICovXG4gIH1cblxuICAvKiBIaWdoIGNvbnRyYXN0IGljb24gY29udGFpbmVyIHN0eWxpbmcgKi9cbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeSAuaWNvbi1jb250YWluZXItc20ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSAvIDAuMik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgZm9jdXMgc3RhdGVzIGZvciBoaWdoIGNvbnRyYXN0ICovXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZTpmb2N1cy12aXNpYmxlLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDRweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCB3aXRoIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmhlcm8tdGl0bGUsXG4gIC5oZXJvLWJ1dHRvbi1pY29uLFxuICAuaGVyby1idXR0b24taGVyaXRhZ2UsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnksXG4gIC5pY29uLWNvbnRhaW5lci1zbSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkgIWltcG9ydGFudDtcbiAgICB3aWxsLWNoYW5nZTogYXV0byAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAuaGVyby10aXRsZSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdW5zZXQ7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIH1cbiAgXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZTpob3ZlcixcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpob3ZlcixcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlOmZvY3VzLXZpc2libGUsXG4gIC5oZXJvLWJ1dHRvbi1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5oZXJvLWJ1dHRvbi1oZXJpdGFnZTpob3ZlciAuaGVyby1idXR0b24taWNvbixcbiAgLmhlcm8tYnV0dG9uLXNlY29uZGFyeTpob3ZlciAuaGVyby1idXR0b24taWNvbi1wbGF5IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUUlVTVCBJTkRJQ0FUT1JTIC0gQlJBTkQtQ09NUExJQU5UIFNPQ0lBTCBQUk9PRlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogVHJ1c3QgSW5kaWNhdG9ycyBDb250YWluZXJcbiAqIERpc3BsYXlzIHNvY2lhbCBwcm9vZiBlbGVtZW50cyAodXB0aW1lLCB1c2VyIGNvdW50LCBjb21wbGlhbmNlKVxuICogTm8gaGVyaXRhZ2UgcmVkIC0gdXNlcyBtdXRlZCBjb2xvcnMgZm9yIHN1cHBvcnRpbmcgaW5mb3JtYXRpb25cbiAqIE1vYmlsZS1maXJzdCByZXNwb25zaXZlIGxheW91dCB3aXRoIHByb3BlciBzcGFjaW5nXG4gKi9cbi5oZXJvLXRydXN0LWluZGljYXRvcnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAwO1xuICBcbiAgLyogTW9iaWxlLWZpcnN0IHNwYWNpbmcgKi9cbiAgcGFkZGluZzogMDtcbn1cblxuLyogRGVza3RvcCAtIGhvcml6b250YWwgbGF5b3V0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9ycyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG59XG5cbi8qIExhcmdlIGRlc2t0b3AgLSBtb3JlIHNwYWNpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9ycyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG59XG5cbi8qKlxuICogSW5kaXZpZHVhbCBUcnVzdCBJbmRpY2F0b3JcbiAqIEVhY2ggaW5kaWNhdG9yIGhhcyBhbiBpY29uIGFuZCB0ZXh0XG4gKiBVc2VzIG11dGVkIGNvbG9ycyAtIE5PIGhlcml0YWdlIHJlZCBwZXIgYnJhbmQgZ3VpZGVsaW5lc1xuICovXG4uaGVyby10cnVzdC1pbmRpY2F0b3Ige1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgXG4gIC8qIE1vYmlsZSBvcHRpbWl6YXRpb24gKi9cbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBsaW5lLWhlaWdodDogMS41O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBcbiAgLyogU3VidGxlIGFuaW1hdGlvbiBvbiBob3ZlciAqL1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5oZXJvLXRydXN0LWluZGljYXRvcjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLyogVGFibGV0IGFuZCB1cCAtIHNsaWdodGx5IGxhcmdlciB0ZXh0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9yIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgfVxufVxuXG4vKipcbiAqIFRydXN0IEluZGljYXRvciBJY29uXG4gKiBTbWFsbCBjb2xvcmVkIGRvdC9jaGVjay9zdGFyIGljb25cbiAqIFVzZXMgYnJhbmQtYXBwcm92ZWQgY29sb3JzIChub3QgaGVyaXRhZ2UgcmVkKVxuICovXG4uaGVyby10cnVzdC1pbmRpY2F0b3ItaWNvbiB7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBcbiAgLyogRGVmYXVsdCB0byBtdXRlZCBmb3JlZ3JvdW5kIGlmIG5vIGNvbG9yIHNwZWNpZmllZCAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBcbiAgLyogU3VidGxlIHB1bHNlIGFuaW1hdGlvbiBmb3IgZW1waGFzaXMgKi9cbiAgYW5pbWF0aW9uOiB0cnVzdC1pbmRpY2F0b3ItcHVsc2UgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIDEwMG1zKTtcbn1cblxuLyogUHVsc2UgYW5pbWF0aW9uIGZvciB0cnVzdCBpbmRpY2F0b3JzICovXG5Aa2V5ZnJhbWVzIHRydXN0LWluZGljYXRvci1wdWxzZSB7XG4gIDAlLCAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1c3QgSW5kaWNhdG9yIFRleHRcbiAqIFVzZXMgdGV4dC1zbSBjbGFzcyBmcm9tIGdsb2JhbCB0eXBvZ3JhcGh5XG4gKiBJbmhlcml0cyBjb2xvciBmcm9tIHBhcmVudCBjb250YWluZXJcbiAqL1xuLmhlcm8tdHJ1c3QtaW5kaWNhdG9yLXRleHQge1xuICAvKiBUeXBvZ3JhcGh5IGhhbmRsZWQgYnkgZ2xvYmFsIHRleHQtc20gY2xhc3MgKi9cbiAgLyogQ29sb3IgaW5oZXJpdGVkIGZyb20gcGFyZW50ICovXG4gIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmhlcm8tdHJ1c3QtaW5kaWNhdG9yIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIFxuICAuaGVyby10cnVzdC1pbmRpY2F0b3ItaWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5oZXJvLXRydXN0LWluZGljYXRvci1pY29uIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbiAgXG4gIC5oZXJvLXRydXN0LWluZGljYXRvciB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBSSU5UIE1FRElBIE9QVElNSVpBVElPTiAtIEVOSEFOQ0VEIERPQ1VNRU5UQVRJT04gU1VQUE9SVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUHJpbnQgc3R5bGVzIG9wdGltaXplZCBmb3IgZG9jdW1lbnRhdGlvblxuICogQ2xlYW4gcHJlc2VudGF0aW9uIHdpdGggZXNzZW50aWFsIGluZm9ybWF0aW9uIG9ubHlcbiAqIFNFQ1RJT04gUEFUVEVSTjogUHJpbnQgb3B0aW1pemF0aW9uIGludGVncmF0ZWRcbiAqL1xuQG1lZGlhIHByaW50IHtcbiAgLmhlcm8tc2VjdGlvbiB7XG4gICAgbWluLWhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KSB2YXIoLS1zcGFjZS00KTtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gICAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLmhlcm8tY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgMDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuaGVyby1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBub25lOyAvKiBIaWRlIGludGVyYWN0aXZlIGVsZW1lbnRzIGluIHByaW50ICovXG4gIH1cbiAgXG4gIC5oZXJvLXRpdGxlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgfVxuICBcbiAgLmhlcm8tdGl0bGU6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuaGVyby1zdWJ0aXRsZSB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSkgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIFxuICAuaGVyby1kZXNjcmlwdGlvbiB7XG4gICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuICAvKiBIaWRlIGFsbCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBhbmQgaWNvbnMgaW4gcHJpbnQgKi9cbiAgLmljb24tY29udGFpbmVyLXNtLFxuICAuaGVyby1idXR0b24taWNvbixcbiAgLmhlcm8tYnV0dG9uLWljb24tcGxheSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAvKiBQcmludC1zcGVjaWZpYyBjb250ZW50IHN0eWxpbmcgKi9cbiAgLmhlcm8tY29udGVudDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwi4oCUXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtNCkgMDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBFUkZPUk1BTkNFIE9QVElNSVpBVElPTlMgLSBISUdILVJFU09MVVRJT04gRElTUExBWVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhpZ2gtRFBJIGRpc3BsYXkgb3B0aW1pemF0aW9ucyBmb3IgZW5oYW5jZWQgdmlzdWFsIHF1YWxpdHlcbiAqIFJldGluYSBhbmQgNEsgZGlzcGxheSBzdXBwb3J0IHdpdGggcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnNcbiAqIFNFQ1RJT04gUEFUVEVSTjogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBpbnRlZ3JhdGVkXG4gKi9cbkBtZWRpYSBcbiAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksXG4gIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSxcbiAgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCkge1xuICBcbiAgLmhlcm8tdGl0bGUge1xuICAgIC8qIEVuaGFuY2VkIHRleHQgcmVuZGVyaW5nIGZvciBoaWdoLURQSSBkaXNwbGF5cyAqL1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxuICBcbiAgLmhlcm8tYnV0dG9uLWhlcml0YWdlLFxuICAuaGVyby1idXR0b24tc2Vjb25kYXJ5IHtcbiAgICAvKiBDcmlzcCBib3JkZXJzIGFuZCBzaGFkb3dzIGZvciBoaWdoLURQSSAqL1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIGJvcmRlci1yYWRpdXM6IGNhbGModmFyKC0tcmFkaXVzLW1kKSArIDAuNXB4KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbiAgXG4gIC8qIEljb24gY29udGFpbmVycyBoYXZlIG5vIGhpZ2gtRFBJIHN0eWxpbmcgLSBsYXlvdXQgb25seSAqL1xufVxuXG4vKipcbiAqIENyaXRpY2FsIENTUyBsb2FkaW5nIG9wdGltaXphdGlvblxuICogQWJvdmUtdGhlLWZvbGQgY29udGVudCBwcmlvcml0aXphdGlvblxuICogU0VDVElPTiBQQVRURVJOOiBDcml0aWNhbCBsb2FkaW5nIG9wdGltaXphdGlvbiBpbnRlZ3JhdGVkXG4gKi9cbi5oZXJvLXNlY3Rpb24uY3JpdGljYWwtbG9hZCB7XG4gIC8qIENyaXRpY2FsIHBhdGggb3B0aW1pemF0aW9uIGZvciBpbml0aWFsIHBhaW50ICovXG4gIGNvbnRhaW46IHN0cmljdDtcbiAgY29udGVudC12aXNpYmlsaXR5OiBhdXRvO1xuICBcbiAgLyogUHJpb3JpdGl6ZSBoZXJvIGNvbnRlbnQgZm9yIExDUCBvcHRpbWl6YXRpb24gKi9cbiAgLmhlcm8tY29udGVudCB7XG4gICAgY29udGFpbi1pbnRyaW5zaWMtc2l6ZTogMCA0MDBweDtcbiAgfVxuICBcbiAgLmhlcm8tdGl0bGUge1xuICAgIC8qIEVuc3VyZSB0aXRsZSBpcyByZW5kZXJlZCBpbW1lZGlhdGVseSAqL1xuICAgIGNvbnRhaW46IG5vbmU7XG4gICAgY29udGVudC12aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbi8qIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcgaGVscGVyIChkZXZlbG9wbWVudCBvbmx5KSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDApIHtcbiAgLmhlcm8tc2VjdGlvbjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIkhlcm8gY29tcG9uZW50IGxvYWRlZCAtIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcgYWN0aXZlIC0gU2VjdGlvbiBQYXR0ZXJuIENvbXBsaWFudCAtIEJ1dHRvbiBTdHlsaW5nIEZpeGVkIC0gSWNvbiBDb250cmFzdCBFbmhhbmNlZCB2NC4xXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTEwMDBweDtcbiAgICBsZWZ0OiAtMTAwMHB4O1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbn0iLCIvKipcbiAqIEljb24gU3lzdGVtIFN0eWxlcyAtIENvbXBsZXRlIEljb24gU3lzdGVtIEltcGxlbWVudGF0aW9uXG4gKiBcbiAqIENvbWJpbmVkIENTUyBmb3IgSWNvbiBjb21wb25lbnQgZm9sbG93aW5nIGljb24tc3lzdGVtLXN0YW5kYXJkLm1kXG4gKiBJbmNsdWRlcyBib3RoIGljb24gc2l6aW5nL2NvbG9ycyBhbmQgY29udGFpbmVyIHN5c3RlbSBmb3IgY29tcGxldGUgaWNvbiBwcmVzZW50YXRpb25cbiAqIHdpdGggaGVyaXRhZ2UgcmVkIGNvbXBsaWFuY2UsIG1vYmlsZSBvcHRpbWl6YXRpb24sIGFuZCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEljb24gU2l6aW5nIFN5c3RlbSAoZm9sbG93aW5nIGljb24tc3lzdGVtLXN0YW5kYXJkLm1kKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmljb24teHhzIHtcbiAgd2lkdGg6IDAuNzVyZW07IC8qIDEycHggLSBtaWNybyBpY29ucyAoZGlzY291cmFnZWQgZm9yIGJ1dHRvbnMpICovXG4gIGhlaWdodDogMC43NXJlbTtcbiAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnQgY29tcHJlc3Npb24gKi9cbiAgLyogRW5zdXJlIGJvdW5kZWQgc2l6aW5nIHdpdGhpbiBjb250YWluZXJzICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmljb24teHMge1xuICB3aWR0aDogMXJlbTsgICAgLyogMTZweCAtIGlubGluZSB0ZXh0IGljb25zICovXG4gIGhlaWdodDogMXJlbTtcbiAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnQgY29tcHJlc3Npb24gKi9cbiAgLyogRW5zdXJlIGJvdW5kZWQgc2l6aW5nIHdpdGhpbiBjb250YWluZXJzICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmljb24tc20ge1xuICB3aWR0aDogMS4yNXJlbTsgLyogMjBweCAtIHNtYWxsIFVJIGVsZW1lbnRzICovXG4gIGhlaWdodDogMS4yNXJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIEVuc3VyZSBib3VuZGVkIHNpemluZyB3aXRoaW4gY29udGFpbmVycyAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG5cbi5pY29uLWJhc2Uge1xuICB3aWR0aDogMS41cmVtOyAgLyogMjRweCAtIHN0YW5kYXJkIHNpemUgKGRlZmF1bHQpICovXG4gIGhlaWdodDogMS41cmVtO1xuICBmbGV4LXNocmluazogMDtcbiAgLyogRW5zdXJlIGJvdW5kZWQgc2l6aW5nIHdpdGhpbiBjb250YWluZXJzICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmljb24tbWQge1xuICB3aWR0aDogMnJlbTsgICAgLyogMzJweCAtIG1lZGl1bSBlbXBoYXNpcyAqL1xuICBoZWlnaHQ6IDJyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4uaWNvbi1sZyB7XG4gIHdpZHRoOiAyLjVyZW07ICAvKiA0MHB4IC0gZmVhdHVyZSBjYXJkcyAqLyBcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4uaWNvbi14bCB7XG4gIHdpZHRoOiAzcmVtOyAgICAvKiA0OHB4IC0gaGVybyBlbGVtZW50cyAqL1xuICBoZWlnaHQ6IDNyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBFbnN1cmUgYm91bmRlZCBzaXppbmcgd2l0aGluIGNvbnRhaW5lcnMgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSWNvbiBDb2xvciBTdHJhdGVneSAoZm9sbG93aW5nIDEwJSBSZWQgUnVsZSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIERlZmF1bHQgcHJvZmVzc2lvbmFsIGljb24gY29sb3IgKi9cbi5pY29uLWRlZmF1bHQge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgc3Ryb2tlLXdpZHRoOiAyO1xufVxuXG4vKiBQcmltYXJ5IGJyYW5kIGNvbG9yIGZvciBzdGFuZGFyZCBpY29ucyAqL1xuLmljb24tcHJpbWFyeSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS02MDApKTtcbiAgc3Ryb2tlLXdpZHRoOiAyO1xufVxuXG4vKiBIZXJpdGFnZSByZWQgLSBtYXhpbXVtIDEtMiBpY29ucyBwZXIgdmlld3BvcnQgKi9cbi5pY29uLWhlcml0YWdlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgc3Ryb2tlLXdpZHRoOiAyLjU7IC8qIFNsaWdodGx5IGJvbGRlciBmb3IgaW1wYWN0ICovXG59XG5cbi8qIFN1cHBvcnRpbmcgc2VtYW50aWMgY29sb3JzICovXG4uaWNvbi1zdWNjZXNzIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cblxuLmljb24td2FybmluZyB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xuICBzdHJva2Utd2lkdGg6IDI7XG59XG5cbi8qIFdoaXRlIGZvciBjb2xvcmVkIGJhY2tncm91bmRzICovXG4uaWNvbi13aGl0ZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgc3Ryb2tlLXdpZHRoOiAyO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSWNvbiBDb250YWluZXIgU3lzdGVtIC0gQnJhbmRlZCBDb250YWluZXIgQ2xhc3Nlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogPT09IElDT04gQ09OVEFJTkVSIFNJWkVTID09PSAqL1xuXG4uaWNvbi1jb250YWluZXIteHMge1xuICB3aWR0aDogMnJlbTsgICAgLyogMzJweCAtIGNvbXBhY3QgaW5saW5lIGVsZW1lbnRzICovXG4gIGhlaWdodDogMnJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOyAvKiA2cHggKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIENSSVRJQ0FMOiBQcmV2ZW50IGljb24gb3ZlcmZsb3cgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKiBDb250YWluIGxheW91dCBhbmQgcGFpbnQgZm9yIGJldHRlciBwZXJmb3JtYW5jZSAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi5pY29uLWNvbnRhaW5lci1zbSB7XG4gIHdpZHRoOiAyLjVyZW07ICAvKiA0MHB4IC0gc21hbGwgVUkgY29tcG9uZW50cyAqL1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgLyogOHB4ICovXG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBDUklUSUNBTDogUHJldmVudCBpY29uIG92ZXJmbG93ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogQ29udGFpbiBsYXlvdXQgYW5kIHBhaW50IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKi9cbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xufVxuXG4uaWNvbi1jb250YWluZXItYmFzZSB7XG4gIHdpZHRoOiAzcmVtOyAgICAvKiA0OHB4IC0gc3RhbmRhcmQgc2l6ZSAoZGVmYXVsdCkgKi9cbiAgaGVpZ2h0OiAzcmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtOyAvKiA4cHggKi9cbiAgZmxleC1zaHJpbms6IDA7XG4gIC8qIENSSVRJQ0FMOiBQcmV2ZW50IGljb24gb3ZlcmZsb3cgKi9cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKiBDb250YWluIGxheW91dCBhbmQgcGFpbnQgZm9yIGJldHRlciBwZXJmb3JtYW5jZSAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi5pY29uLWNvbnRhaW5lci1tZCB7XG4gIHdpZHRoOiAzLjVyZW07ICAvKiA1NnB4IC0gbWVkaXVtIGVtcGhhc2lzICovXG4gIGhlaWdodDogMy41cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTsgLyogMTJweCAqL1xuICBmbGV4LXNocmluazogMDtcbiAgLyogQ1JJVElDQUw6IFByZXZlbnQgaWNvbiBvdmVyZmxvdyAqL1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIENvbnRhaW4gbGF5b3V0IGFuZCBwYWludCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbn1cblxuLmljb24tY29udGFpbmVyLWxnIHtcbiAgd2lkdGg6IDRyZW07ICAgIC8qIDY0cHggLSBmZWF0dXJlIGNhcmRzIGFuZCBpbXBvcnRhbnQgZWxlbWVudHMgKi9cbiAgaGVpZ2h0OiA0cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTsgLyogMTJweCAqL1xuICBmbGV4LXNocmluazogMDtcbiAgLyogQ1JJVElDQUw6IFByZXZlbnQgaWNvbiBvdmVyZmxvdyAqL1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIENvbnRhaW4gbGF5b3V0IGFuZCBwYWludCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlICovXG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbn1cblxuLmljb24tY29udGFpbmVyLXhsIHtcbiAgd2lkdGg6IDVyZW07ICAgIC8qIDgwcHggLSBoZXJvIGVsZW1lbnRzIGFuZCBtYWpvciBzZWN0aW9ucyAqL1xuICBoZWlnaHQ6IDVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAxcmVtOyAvKiAxNnB4ICovXG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBDUklUSUNBTDogUHJldmVudCBpY29uIG92ZXJmbG93ICovXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogQ29udGFpbiBsYXlvdXQgYW5kIHBhaW50IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgKi9cbiAgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50O1xufVxuXG4vKiA9PT0gSUNPTiBDT05UQUlORVIgQ09MT1JTID09PSAqL1xuLyogQ29udGFpbmVyIGNvbG9yIGNsYXNzZXMgcmVtb3ZlZCAtIGNvbnRhaW5lcnMgYXJlIG5vdyBsYXlvdXQtb25seSAqL1xuXG4uaWNvbi1jb250YWluZXItcHJpbWFyeSxcbi5pY29uLWNvbnRhaW5lci1oZXJpdGFnZSxcbi5pY29uLWNvbnRhaW5lci1tdXRlZCxcbi5pY29uLWNvbnRhaW5lci1zdWNjZXNzLFxuLmljb24tY29udGFpbmVyLXdhcm5pbmcsXG4uaWNvbi1jb250YWluZXItb3V0bGluZSB7XG4gIC8qIE5vIHZpc3VhbCBzdHlsaW5nIC0gbGF5b3V0IG9ubHkgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbnRhaW5lciBRdWVyeSBTdXBwb3J0IGZvciBJbnRyaW5zaWMgUmVzcG9uc2l2ZW5lc3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENvbnRhaW5lciBxdWVyaWVzIGZvciBhZGFwdGl2ZSBpY29uIHNpemluZyBiYXNlZCBvbiBhdmFpbGFibGUgc3BhY2UgKi9cbkBjb250YWluZXIgKG1heC13aWR0aDogMjRweCkge1xuICAuaWNvbi1jb250YWluZXIteHMgPiBzdmcsXG4gIC5pY29uLWNvbnRhaW5lci14cyA+IGltZyxcbiAgLmljb24tY29udGFpbmVyLXhzID4gc3BhbiB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAwLjI1cmVtKTsgLyogUmVkdWNlIHBhZGRpbmcgaW4gdmVyeSBzbWFsbCBzcGFjZXMgKi9cbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAwLjI1cmVtKTtcbiAgfVxufVxuXG5AY29udGFpbmVyIChtYXgtd2lkdGg6IDMycHgpIHtcbiAgLmljb24tY29udGFpbmVyLXNtID4gc3ZnLFxuICAuaWNvbi1jb250YWluZXItc20gPiBpbWcsXG4gIC5pY29uLWNvbnRhaW5lci1zbSA+IHNwYW4ge1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMC4yNXJlbSk7IC8qIFJlZHVjZSBwYWRkaW5nIGluIGNvbnN0cmFpbmVkIHNwYWNlcyAqL1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDAuMjVyZW0pO1xuICB9XG59XG5cbkBjb250YWluZXIgKG1pbi13aWR0aDogODBweCkge1xuICAuaWNvbi1jb250YWluZXIteGwgPiBzdmcsXG4gIC5pY29uLWNvbnRhaW5lci14bCA+IGltZyxcbiAgLmljb24tY29udGFpbmVyLXhsID4gc3BhbiB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxLjVyZW0pOyAvKiBNb3JlIGdlbmVyb3VzIHBhZGRpbmcgaW4gbGFyZ2Ugc3BhY2VzICovXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMS41cmVtKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTW9iaWxlIE9wdGltaXphdGlvbnMgKGZvbGxvd2luZyBtb2JpbGUtZmlyc3QgYXBwcm9hY2gpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLyogRW5oYW5jZWQgdmlzaWJpbGl0eSBhbmQgdG91Y2gtZnJpZW5kbHkgc2l6aW5nICovXG4gIC5pY29uLWJhc2UsXG4gIC5pY29uLXNtLFxuICAuaWNvbi1sZyB7XG4gICAgc3Ryb2tlLXdpZHRoOiAyLjU7IC8qIEJvbGRlciBzdHJva2UgZm9yIHNtYWxsIHNjcmVlbnMgKi9cbiAgfVxuICBcbiAgLyogSGVyaXRhZ2UgaWNvbnMgZ2V0IGV4dHJhIG1vYmlsZSBlbXBoYXNpcyAqL1xuICAuaWNvbi1oZXJpdGFnZSB7XG4gICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4xKSk7XG4gIH1cbiAgXG4gIC8qIFRvdWNoLWZyaWVuZGx5IGludGVyYWN0aXZlIGFyZWFzICovXG4gIC5pY29uLXRvdWNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLXdpZHRoOiA0OHB4O1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICBcbiAgLyogRW5oYW5jZWQgdG91Y2gtZnJpZW5kbHkgc2l6aW5nIGZvciBjb250YWluZXJzICovXG4gIC5pY29uLWNvbnRhaW5lci14cyxcbiAgLmljb24tY29udGFpbmVyLXNtLFxuICAuaWNvbi1jb250YWluZXItYmFzZSB7XG4gICAgbWluLXdpZHRoOiA0OHB4OyAvKiBNaW5pbXVtIHRvdWNoIHRhcmdldCAqL1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIH1cbiAgXG4gIC8qIEludGVyYWN0aXZlIGljb25zIG9uIG1vYmlsZSAtIGVuaGFuY2VkIHRvdWNoIHRhcmdldHMgKi9cbiAgLmljb24taW50ZXJhY3RpdmUge1xuICAgIG1pbi13aWR0aDogNDhweDtcbiAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgIC8qIExhcmdlciB0YXAgYXJlYSB3aXRob3V0IHZpc3VhbCBjaGFuZ2UgKi9cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgXG4gIC5pY29uLWludGVyYWN0aXZlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC04cHg7XG4gICAgcmlnaHQ6IC04cHg7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIGxlZnQ6IC04cHg7XG4gICAgLyogSW52aXNpYmxlIGV4cGFuZGVkIHRvdWNoIGFyZWEgKi9cbiAgfVxuICBcbiAgLyogQ29udGFpbmVyIG1vYmlsZSBzdHlsZXMgcmVtb3ZlZCAtIGxheW91dCBvbmx5ICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIb3ZlciBFZmZlY3RzIGZvciBDb250YWluZXJzIC0gUkVNT1ZFRFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIENvbnRhaW5lciBob3ZlciBlZmZlY3RzIHJlbW92ZWQgLSBjb250YWluZXJzIGFyZSBub3cgbGF5b3V0LW9ubHkgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhpZ2ggQ29udHJhc3QgU3VwcG9ydCAoV0NBRyAyLjEgQUEgQ29tcGxpYW5jZSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAuaWNvbi1kZWZhdWx0LFxuICAuaWNvbi1wcmltYXJ5IHtcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gIH1cbiAgXG4gIC5pY29uLWhlcml0YWdlIHtcbiAgICBjb2xvcjogI2NjMDAwMDtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gIH1cbiAgXG4gIC5pY29uLXN1Y2Nlc3Mge1xuICAgIGNvbG9yOiAjMDA2NjAwO1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgfVxuICBcbiAgLmljb24td2FybmluZyB7XG4gICAgY29sb3I6ICNjYzY2MDA7XG4gICAgc3Ryb2tlLXdpZHRoOiAzO1xuICB9XG4gIFxuICAvKiBDb250YWluZXIgaGlnaCBjb250cmFzdCBhZGp1c3RtZW50cyByZW1vdmVkIC0gbGF5b3V0IG9ubHkgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJlZHVjZWQgTW90aW9uIFN1cHBvcnQgKEFjY2Vzc2liaWxpdHkpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuaWNvbi1wdWxzZSxcbiAgLmljb24tc3BpbixcbiAgLmljb24taW50ZXJhY3RpdmUge1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLyogQ29udGFpbmVyIGhvdmVyIHN0YXRlcyByZW1vdmVkIC0gbGF5b3V0IG9ubHkgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3Igc21vb3RoIHJlbmRlcmluZyAqL1xuLmljb24teHMsXG4uaWNvbi1zbSxcbi5pY29uLWJhc2UsXG4uaWNvbi1tZCxcbi5pY29uLWxnLFxuLmljb24teGwge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IC8qIEZvcmNlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiAqL1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IC8qIFByZXZlbnQgZmxpY2tlcmluZyAqL1xufVxuXG4vKiBDb250YWluZXIgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyByZW1vdmVkIC0gbGF5b3V0IG9ubHkgKi9cblxuLyogRWZmaWNpZW50IGltYWdlIHJlbmRlcmluZyBmb3Igc3RyaW5nLWJhc2VkIGljb25zICovXG4uaWNvbi14cyBpbWcsXG4uaWNvbi1zbSBpbWcsXG4uaWNvbi1iYXNlIGltZyxcbi5pY29uLW1kIGltZyxcbi5pY29uLWxnIGltZyxcbi5pY29uLXhsIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGltYWdlLXJlbmRlcmluZzogYXV0bztcbiAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcbiAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSWNvbiBDb250YWluZXIgQ2VudGVyaW5nIEVuaGFuY2VtZW50IC0gQk9VTkRFRCBTWVNURU1cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFxuICogQ1JJVElDQUwgRklYOiBJY29ucyBhcmUgbm93IHByb3Blcmx5IGJvdW5kZWQgd2l0aGluIGNvbnRhaW5lcnNcbiAqIFxuICogUHJldmlvdXMgc3lzdGVtIHVzZWQgYWJzb2x1dGUgcG9zaXRpb25pbmcgd2hpY2ggY291bGQgY2F1c2Ugb3ZlcmZsb3cuXG4gKiBOZXcgc3lzdGVtIHVzZXMgZmxleCBjZW50ZXJpbmcgd2l0aCBwcm9wZXIgY29udGFpbm1lbnQgYW5kIHNpemUgY29uc3RyYWludHMuXG4gKi9cblxuLyogRW5zdXJlIGljb25zIGFyZSBwcm9wZXJseSBzaXplZCBhbmQgY29udGFpbmVkIHdpdGhpbiBjb250YWluZXJzICovXG4uaWNvbi1jb250YWluZXIteHMgPiBzdmcsXG4uaWNvbi1jb250YWluZXIteHMgPiBpbWcsXG4uaWNvbi1jb250YWluZXIteHMgPiBzcGFuIHtcbiAgLyogU2l6ZSBjb25zdHJhaW50OiBpY29uIG11c3QgZml0IHdpdGhpbiBjb250YWluZXIgd2l0aCBwYWRkaW5nICovXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMC41cmVtKTsgLyogTGVhdmUgNHB4IHBhZGRpbmcgb24gZWFjaCBzaWRlICovXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDAuNXJlbSk7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIC8qIFJlbW92ZSBhbnkgcG9zaXRpb25pbmcgdGhhdCBjb3VsZCBjYXVzZSBvdmVyZmxvdyAqL1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIC8qIE1haW50YWluIGFzcGVjdCByYXRpbyAqL1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmljb24tY29udGFpbmVyLXNtID4gc3ZnLFxuLmljb24tY29udGFpbmVyLXNtID4gaW1nLFxuLmljb24tY29udGFpbmVyLXNtID4gc3BhbiB7XG4gIC8qIFNpemUgY29uc3RyYWludDogaWNvbiBtdXN0IGZpdCB3aXRoaW4gY29udGFpbmVyIHdpdGggcGFkZGluZyAqL1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDAuNXJlbSk7IC8qIExlYXZlIDRweCBwYWRkaW5nIG9uIGVhY2ggc2lkZSAqL1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAwLjVyZW0pO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uaWNvbi1jb250YWluZXItYmFzZSA+IHN2Zyxcbi5pY29uLWNvbnRhaW5lci1iYXNlID4gaW1nLFxuLmljb24tY29udGFpbmVyLWJhc2UgPiBzcGFuIHtcbiAgLyogU2l6ZSBjb25zdHJhaW50OiBpY29uIG11c3QgZml0IHdpdGhpbiBjb250YWluZXIgd2l0aCBwYWRkaW5nICovXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMC43NXJlbSk7IC8qIExlYXZlIDZweCBwYWRkaW5nIG9uIGVhY2ggc2lkZSAqL1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAwLjc1cmVtKTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmljb24tY29udGFpbmVyLW1kID4gc3ZnLFxuLmljb24tY29udGFpbmVyLW1kID4gaW1nLFxuLmljb24tY29udGFpbmVyLW1kID4gc3BhbiB7XG4gIC8qIFNpemUgY29uc3RyYWludDogaWNvbiBtdXN0IGZpdCB3aXRoaW4gY29udGFpbmVyIHdpdGggcGFkZGluZyAqL1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDAuNzVyZW0pOyAvKiBMZWF2ZSA2cHggcGFkZGluZyBvbiBlYWNoIHNpZGUgKi9cbiAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMC43NXJlbSk7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pY29uLWNvbnRhaW5lci1sZyA+IHN2Zyxcbi5pY29uLWNvbnRhaW5lci1sZyA+IGltZyxcbi5pY29uLWNvbnRhaW5lci1sZyA+IHNwYW4ge1xuICAvKiBTaXplIGNvbnN0cmFpbnQ6IGljb24gbXVzdCBmaXQgd2l0aGluIGNvbnRhaW5lciB3aXRoIHBhZGRpbmcgKi9cbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTsgLyogTGVhdmUgOHB4IHBhZGRpbmcgb24gZWFjaCBzaWRlICovXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0pO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uaWNvbi1jb250YWluZXIteGwgPiBzdmcsXG4uaWNvbi1jb250YWluZXIteGwgPiBpbWcsXG4uaWNvbi1jb250YWluZXIteGwgPiBzcGFuIHtcbiAgLyogU2l6ZSBjb25zdHJhaW50OiBpY29uIG11c3QgZml0IHdpdGhpbiBjb250YWluZXIgd2l0aCBwYWRkaW5nICovXG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gMXJlbSk7IC8qIExlYXZlIDhweCBwYWRkaW5nIG9uIGVhY2ggc2lkZSAqL1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtKTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbXBvbmVudCBJbnRlZ3JhdGlvbiBTdXBwb3J0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTdXBwb3J0IGZvciBwYXJlbnQgY29tcG9uZW50IHN0eWxpbmcgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtaWNvbiB7XG4gIC8qIFByZXNlcnZlIFN0cmVhbWluZ0Nhcm91c2VsIHNwZWNpZmljIHN0eWxpbmcgKi9cbn1cblxuLmZlYXR1cmUtaWNvbiB7XG4gIC8qIFByZXNlcnZlIEZlYXR1cmVzIGNvbXBvbmVudCBzcGVjaWZpYyBzdHlsaW5nICovXG59XG5cbi51c2UtY2FzZS1pY29uIHtcbiAgLyogUHJlc2VydmUgVXNlQ2FzZUNhcmQgY29tcG9uZW50IHNwZWNpZmljIHN0eWxpbmcgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFuaW1hdGlvbiBDbGFzc2VzIChmb3IgcGFyZW50IGNvbXBvbmVudCBpbnRlZ3JhdGlvbilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5pY29uLXB1bHNlIHtcbiAgYW5pbWF0aW9uOiBwdWxzZSAycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpIGluZmluaXRlO1xufVxuXG4uaWNvbi1zcGluIHtcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTsgIFxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSW50ZXJhY3RpdmUgU3RhdGVzIC0gRm9sbG93aW5nIHN0eWxpbmctc3RhbmRhcmQubWRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEludGVyYWN0aXZlIGljb25zIGdldCBob3ZlciBhbmQgZm9jdXMgc3RhdGVzICovXG4uaWNvbi1pbnRlcmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBIb3ZlciBzdGF0ZSAtIHN1YnRsZSBsaWZ0IGZvbGxvd2luZyBib3JkZXJsZXNzIGRlc2lnbiAqL1xuLmljb24taW50ZXJhY3RpdmU6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wNSk7XG59XG5cbi8qIEFjdGl2ZS9wcmVzc2VkIHN0YXRlICovXG4uaWNvbi1pbnRlcmFjdGl2ZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45OCk7XG59XG5cbi8qIEZvY3VzIHN0YXRlIC0gc2hhZG93LWJhc2VkIGFjY2Vzc2liaWxpdHkgaW5kaWNhdG9yICovXG4uaWNvbi1pbnRlcmFjdGl2ZTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgei1pbmRleDogMTtcbn1cblxuLyogQnV0dG9uIHJlc2V0IGZvciBpbnRlcmFjdGl2ZSBpY29uIGJ1dHRvbnMgKi9cbmJ1dHRvbi5pY29uLWludGVyYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgZm9udDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8qIExpbmsgc3R5bGluZyBmb3IgaW50ZXJhY3RpdmUgaWNvbiBsaW5rcyAqL1xuYS5pY29uLWludGVyYWN0aXZlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLCAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc3BpbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDcml0aWNhbCBDU1MgSW5saW5pbmcgU3VwcG9ydFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVGhlc2UgY3JpdGljYWwgc3R5bGVzIHNob3VsZCBiZSBpbmxpbmVkIGZvciBhYm92ZS1mb2xkIGljb25zICovXG4vKlxuLmljb24tYmFzZXt3aWR0aDoxLjVyZW07aGVpZ2h0OjEuNXJlbTtmbGV4LXNocmluazowfVxuLmljb24tcHJpbWFyeXtjb2xvcjpyZ2IodmFyKC0tY29sb3ItcHJpbWFyeS02MDApKTtzdHJva2Utd2lkdGg6Mn1cbi5pY29uLWhlcml0YWdle2NvbG9yOnJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtzdHJva2Utd2lkdGg6Mi41fVxuLmljb24tY29udGFpbmVyLWJhc2V7d2lkdGg6M3JlbTtoZWlnaHQ6M3JlbTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czowLjVyZW07ZmxleC1zaHJpbms6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7Y29udGFpbjpsYXlvdXQgc3R5bGUgcGFpbnR9XG4uaWNvbi1jb250YWluZXItYmFzZT5zdmd7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDAuNzVyZW0pO21heC1oZWlnaHQ6Y2FsYygxMDAlIC0gMC43NXJlbSk7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bztwb3NpdGlvbjpzdGF0aWM7bWFyZ2luOjA7cGFkZGluZzowO29iamVjdC1maXQ6Y29udGFpbjtmbGV4LXNocmluazowfVxuKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJPVU5ERUQgSUNPTiBTWVNURU0gLSBJTVBMRU1FTlRBVElPTiBDT01QTEVURVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIFNPTFVUSU9OIFNVTU1BUlk6XG4gKiBcbiAqIFRoZSBpY29uIGNvbnRhaW5tZW50IGlzc3VlIGhhcyBiZWVuIHJlc29sdmVkIHRocm91Z2ggYSBjb21wcmVoZW5zaXZlIGFwcHJvYWNoOlxuICogXG4gKiAxLiBPVkVSRkxPVyBQUkVWRU5USU9OOiBBbGwgaWNvbiBjb250YWluZXJzIG5vdyBoYXZlIGBvdmVyZmxvdzogaGlkZGVuYCB0byBcbiAqICAgIGFic29sdXRlbHkgcHJldmVudCBhbnkgdmlzdWFsIG92ZXJmbG93IGJleW9uZCBjb250YWluZXIgYm91bmRhcmllcy5cbiAqIFxuICogMi4gUFJPUEVSIENPTlRBSU5NRU5UOiBBZGRlZCBgY29udGFpbjogbGF5b3V0IHN0eWxlIHBhaW50YCBmb3IgYmV0dGVyIFxuICogICAgcGVyZm9ybWFuY2UgYW5kIHN0cmljdCBib3VuZGFyeSBlbmZvcmNlbWVudC5cbiAqIFxuICogMy4gU0laRSBDT05TVFJBSU5UUzogSWNvbnMgYXJlIGNvbnN0cmFpbmVkIHVzaW5nIG1heC13aWR0aC9tYXgtaGVpZ2h0IHdpdGggXG4gKiAgICBjYWxjdWxhdGVkIHBhZGRpbmcgdG8gZW5zdXJlIHRoZXkgbmV2ZXIgZXhjZWVkIGNvbnRhaW5lciBib3VuZHMuXG4gKiBcbiAqIDQuIEZMRVggQ0VOVEVSSU5HOiBSZXBsYWNlZCBhYnNvbHV0ZSBwb3NpdGlvbmluZyB3aXRoIGZsZXggY2VudGVyaW5nIHRvIFxuICogICAgbWFpbnRhaW4gcHJvcGVyIGFsaWdubWVudCB3aXRob3V0IG92ZXJmbG93IHJpc2tzLlxuICogXG4gKiA1LiBSRVNQT05TSVZFIFBBRERJTkc6IERpZmZlcmVudCBjb250YWluZXIgc2l6ZXMgaGF2ZSBhcHByb3ByaWF0ZSBwYWRkaW5nIFxuICogICAgcmF0aW9zIHRvIG1haW50YWluIHZpc3VhbCBiYWxhbmNlIHdoaWxlIGVuc3VyaW5nIGNvbnRhaW5tZW50LlxuICogXG4gKiBUaGlzIHN5c3RlbSBlbnN1cmVzIHRoYXQgaWNvbnMgYXJlIEFMV0FZUyBib3VuZGVkIHdpdGhpbiB0aGVpciBjb250YWluZXJzLFxuICogcmVnYXJkbGVzcyBvZiBzdHJva2Ugd2lkdGgsIGljb24gY29tcGxleGl0eSwgb3Igc2l6ZSBtaXNtYXRjaGVzLlxuICovIiwiLyoqXG4gKiBMaXN0Q2FyZCBDb21wb25lbnQgQ1NTXG4gKiBcbiAqIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiAxLiBCcmFuZCBGb3VuZGF0aW9uIChDU1MgdmFyaWFibGVzIGZyb20gaW5kZXguY3NzKVxuICogMi4gQ29tcG9uZW50IEVuaGFuY2VtZW50ICh0aGlzIGZpbGUgLSBsaXN0LWNhcmQgc3BlY2lmaWMgc3R5bGVzKVxuICogMy4gUGFnZSBDdXN0b21pemF0aW9uICh2aWEgc3R5bGVzIHByb3Agb3ZlcnJpZGVzKVxuICogXG4gKiBNb2JpbGUtRmlyc3QgRGVzaWduIHdpdGggUHJvZmVzc2lvbmFsIFZpc3VhbCBIaWVyYXJjaHlcbiAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDYXJkIEhlYWRlciAod2hlbiB0aXRsZS9zdWJ0aXRsZS9kZXNjcmlwdGlvbiBwcm92aWRlZClcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5saXN0LWNhcmQtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmxpc3QtY2FyZC1oZWFkZXIgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDYXJkIENvbnRhaW5lciAoUm9vdCBEaXYgRWxlbWVudCAtIElTIHRoZSBjYXJkKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxpc3QtY2FyZCB7XG4gIC8qIENhcmQgaXMgbm93IGEgc2luZ2xlIGRpdiB0aGF0IGNvbnRhaW5zIGV2ZXJ5dGhpbmcgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogTGF5b3V0IGZvciBpY29uIGFuZCBjb250ZW50ICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBcbiAgLyogVG91Y2ggb3B0aW1pemF0aW9uICovXG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5saXN0LWNhcmQ6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbn1cblxuLmxpc3QtY2FyZDphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1hY3RpdmUpO1xufVxuXG4vKiBDbGVhbiB1cCB3aWxsLWNoYW5nZSAqL1xuLmxpc3QtY2FyZDpub3QoOmhvdmVyKSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBIZXJpdGFnZSBoaWdobGlnaHRlZCBjYXJkICovXG4ubGlzdC1jYXJkLmxpc3QtaXRlbS1oaWdobGlnaHRlZCB7XG4gIC8qIFVzZSBzaGFkb3cgYWNjZW50IGluc3RlYWQgb2YgYm9yZGVyICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgLyogMzAlIGV4dHJhIHNwYWNpbmcgZm9yIGhlcml0YWdlIGVsZW1lbnRzICovXG4gIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UtMikgKiAxLjMpO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTIpICogMS4zKTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMik7XG59XG5cbi5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBJdGVtIEljb25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5saXN0LWl0ZW0taWNvbiB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICAvKiBJY29uIGNvbnRhaW5lcnMgaGFuZGxlIHRoZWlyIG93biBzaXppbmcgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEVuc3VyZSBpY29ucyBoYXZlIHByb3BlciBjb250cmFzdCAqL1xuLmNvbXBhcmlzb24tbGlzdC1jYXJkIC5saXN0LWl0ZW0taWNvbiB7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLmNvbXBhcmlzb24tbGlzdC1jYXJkOmhvdmVyIC5saXN0LWl0ZW0taWNvbiB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEl0ZW0gQ29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxpc3QtaXRlbS1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwOyAvKiBQcmV2ZW50IHRleHQgb3ZlcmZsb3cgKi9cbn1cblxuLmxpc3QtaXRlbS1jb250ZW50ID4gKiArICoge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLyogVGV4dCB0cnVuY2F0aW9uIGZvciBsb25nIGNvbnRlbnQgKi9cbi5saXN0LWl0ZW0tY29udGVudCAudGl0bGUtY2FyZCxcbi5saXN0LWl0ZW0tY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG59XG5cbi5saXN0LWl0ZW0tY29udGVudCAudGl0bGUtY2FyZCB7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbn1cblxuLmxpc3QtaXRlbS1jb250ZW50IC5kZXNjcmlwdGlvbiB7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMztcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTW9iaWxlIFJlc3BvbnNpdmVuZXNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmxpc3QtY2FyZC1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIC8qIFJlZHVjZSBob3ZlciBlZmZlY3Qgb24gbW9iaWxlICovXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQpO1xuICB9XG4gIFxuICAubGlzdC1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xuICB9XG4gIFxuICAvKiBMaXN0IGl0ZW1zIHJlbW92ZWQgLSBjYXJkcyBhcmUgbm93IHN0YW5kYWxvbmUgZGl2cyAqL1xuICBcbiAgLyogbGlzdC1pdGVtIHN0eWxlcyBtZXJnZWQgaW50byBsaXN0LWNhcmQgYWJvdmUgKi9cbiAgXG4gIC8qIFN0YWNrIGNvbnRlbnQgb24gdmVyeSBzbWFsbCBzY3JlZW5zICovXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzNzVweCkge1xuICAgIC5saXN0LWNhcmQge1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgXG4gICAgLmxpc3QtaXRlbS1pY29uIHtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuICBcbiAgLyogSGVyaXRhZ2UgY2FyZCBzcGFjaW5nIG9uIG1vYmlsZSAqL1xuICAubGlzdC1jYXJkLmxpc3QtaXRlbS1oaWdobGlnaHRlZCB7XG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKSAwO1xuICAgIGJveC1zaGFkb3c6IFxuICAgICAgaW5zZXQgM3B4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgICB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGV0IEVuaGFuY2VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLmxpc3QtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSk7XG4gIH1cbiAgXG4gIC8qIExpc3QgaXRlbXMgcmVtb3ZlZCAtIGNhcmRzIGFyZSBub3cgc3RhbmRhbG9uZSBkaXZzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIERlc2t0b3AgRW5oYW5jZW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLmxpc3QtY2FyZC1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuICBcbiAgLmxpc3QtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbiAgXG4gIC8qIExpc3QgaXRlbXMgcmVtb3ZlZCAtIGNhcmRzIGFyZSBub3cgc3RhbmRhbG9uZSBkaXZzICovXG4gIFxuICAvKiBIZXJpdGFnZSBjYXJkIGVuaGFuY2VkIHNwYWNpbmcgb24gZGVza3RvcCAqL1xuICAubGlzdC1jYXJkLmxpc3QtaXRlbS1oaWdobGlnaHRlZCB7XG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKSAwO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvY3VzIFN0YXRlcyAoQWNjZXNzaWJpbGl0eSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5saXN0LWNhcmQ6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLWZvY3VzKSAvIDAuNSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSGlnaCBDb250cmFzdCBNb2RlIFN1cHBvcnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAubGlzdC1jYXJkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG4gIFxuICAubGlzdC1jYXJkLmxpc3QtaXRlbS1oaWdobGlnaHRlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBib3gtc2hhZG93OiBcbiAgICAgIGluc2V0IDZweCAwIDAgY3VycmVudENvbG9yLFxuICAgICAgdmFyKC0tc2hhZG93LWNhcmQpO1xuICB9XG4gIFxuICAubGlzdC1jYXJkOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDNweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSZWR1Y2VkIE1vdGlvbiBTdXBwb3J0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAubGlzdC1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG4gIFxuICAubGlzdC1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC5saXN0LWNhcmQ6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUHJpbnQgU3R5bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgcHJpbnQge1xuICAubGlzdC1jYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIG91dGxpbmU6IDFweCBzb2xpZCAjMDAwO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICBcbiAgLyogbGlzdC1pdGVtIHN0eWxlcyBtZXJnZWQgaW50byBsaXN0LWNhcmQgKi9cbiAgXG4gIC5saXN0LWNhcmQubGlzdC1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbXBhcmlzb24gTGF5b3V0IFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNvbXBhcmlzb24tY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IC8qIEVuc3VyZSBjb25zaXN0ZW50IGhlaWdodHMgKi9cbiAgbWFyZ2luLXRvcDogMDsgLyogRW5zdXJlIG5vIHRvcCBtYXJnaW4gKi9cbiAgcGFkZGluZy10b3A6IDA7IC8qIEVuc3VyZSBubyB0b3AgcGFkZGluZyAqL1xufVxuXG4uY29tcGFyaXNvbi1jb2x1bW4gPiAudGl0bGUtY2FyZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgLyogVXNlIHNoYWRvdyBpbnN0ZWFkIG9mIGJvcmRlciAqL1xuICBib3gtc2hhZG93OiAwIDFweCAwIDAgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIGZsZXgtc2hyaW5rOiAwOyAvKiBQcmV2ZW50IHRpdGxlIGZyb20gc2hyaW5raW5nICovXG4gIGZvbnQtc2l6ZTogY2xhbXAoMS4yNXJlbSwgMnZ3ICsgMC41cmVtLCAxLjVyZW0pO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMS4zO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgLyogRW5zdXJlIGNvbnNpc3RlbnQgaGVpZ2h0IGZvciBhbGlnbm1lbnQgKi9cbiAgbWluLWhlaWdodDogMS41cmVtO1xuICBwYWRkaW5nLXRvcDogMDtcbn1cblxuLyogUHJpbWFyeSBjb2x1bW4gaGlnaGxpZ2h0aW5nICovXG4uY29tcGFyaXNvbi1jb2x1bW4tcHJpbWFyeSA+IC50aXRsZS1jYXJkIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgYm94LXNoYWRvdzogMCAxcHggMCAwIHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMyk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbXBhcmlzb24gQ2FyZHMgLSBCYXNlIFN0cnVjdHVyZSAoQUxMIHZhcmlhbnRzIHNoYXJlIHRoaXMpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uY29tcGFyaXNvbi1saXN0LWNhcmQubGlzdC1jYXJkIHtcbiAgLyogQmFzZSBzdHJ1Y3R1cmUgdGhhdCBBTEwgY29tcGFyaXNvbiB2YXJpYW50cyBzaGFyZSAqL1xuICBjdXJzb3I6IGRlZmF1bHQ7IC8qIE5vdCBpbnRlcmFjdGl2ZSBpbiBjb21wYXJpc29uICovXG4gIFxuICAvKiBFbnN1cmUgY29uc2lzdGVudCBkaW1lbnNpb25zIHJlZ2FyZGxlc3Mgb2YgdmFyaWFudCAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IDA7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgXG4gIC8qIEhvdmVyIGJlaGF2aW9yIC0gTk8gdHJhbnNmb3JtIGZvciBhbGlnbm1lbnQgc3RhYmlsaXR5ICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uY29tcGFyaXNvbi1saXN0LWNhcmQubGlzdC1jYXJkOmhvdmVyIHtcbiAgLyogSWRlbnRpY2FsIGhvdmVyIGZvciBBTEwgdmFyaWFudHMgLSBubyB0cmFuc2Zvcm0hICovXG4gIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENvbXBhcmlzb24gQ2FyZCBWYXJpYW50cyAtIE9OTFkgQ09MT1JTIENIQU5HRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBQcmltYXJ5IHZhcmlhbnQgLSBIZXJpdGFnZSBhY2NlbnQgc3R5bGluZyAoQ09MT1JTIE9OTFkpICovXG4uY29tcGFyaXNvbi1saXN0LWNhcmQuY29tcGFyaXNvbi1saXN0LWNhcmQtcHJpbWFyeSB7XG4gIC8qIE9OTFkgY29sb3IgY2hhbmdlcyAtIE5PIHN0cnVjdHVyYWwgY2hhbmdlcyAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjAyKTtcbiAgXG4gIC8qIEhlcml0YWdlIGFjY2VudCB1c2luZyBib3gtc2hhZG93IC0gZG9lc24ndCBhZmZlY3QgZGltZW5zaW9ucyAqL1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICB2YXIoLS1zaGFkb3ctY2FyZCk7XG59XG5cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5jb21wYXJpc29uLWxpc3QtY2FyZC1wcmltYXJ5OmhvdmVyIHtcbiAgLyogT05MWSBjb2xvciBjaGFuZ2VzIG9uIGhvdmVyICovXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDQpO1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHdpdGggaG92ZXIgc2hhZG93ICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIHZhcigtLXNoYWRvdy1jYXJkLWhvdmVyKTtcbiAgXG4gIC8qIE5PIHRyYW5zZm9ybSBjaGFuZ2UgKi9cbiAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIEVuc3VyZSBjb25zaXN0ZW50IHRleHQgYWxpZ25tZW50ICovXG4uY29tcGFyaXNvbi1saXN0LWNhcmQubGlzdC1jYXJkIC5saXN0LWl0ZW0tY29udGVudCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5jb21wYXJpc29uLWxpc3QtY2FyZC5saXN0LWNhcmQgLmxpc3QtaXRlbS1jb250ZW50IC50aXRsZS1jYXJkIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMS40O1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmNvbXBhcmlzb24tbGlzdC1jYXJkLmxpc3QtY2FyZCAubGlzdC1pdGVtLWNvbnRlbnQgLmRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG59XG5cbi8qIFN0YWNrIGxheW91dCB1dGlsaXRpZXMgKi9cbi5sYXlvdXQtc3RhY2stc20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBHcmlkIGxheW91dCBoYW5kbGVkIGJ5IGdsb2JhbCBzdHlsZXMgaW4gaW5kZXguY3NzICovXG5cbi8qIE92ZXJyaWRlIGZvciBjb21wYXJpc29uIGNvbnRleHQgdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQgKi9cbi5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMiB7XG4gIGFsaWduLWl0ZW1zOiBzdGFydDsgLyogQWxpZ24gZ3JpZCBpdGVtcyB0byB0b3AgKi9cbn1cblxuLyogTW9iaWxlIHJlc3BvbnNpdmVuZXNzIGZvciBjb21wYXJpc29uICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmxheW91dC1ncmlkLTIsXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tY29sdW1uID4gLnRpdGxlLWNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gIH1cbiAgXG4gIC5sYXlvdXQtc3RhY2stc20ge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC8qIEFkanVzdCBjYXJkIHBhZGRpbmcgb24gbW9iaWxlIC0gQ09OU0lTVEVOVCBmb3IgYWxsIHZhcmlhbnRzICovXG4gIC5jb21wYXJpc29uLWxpc3QtY2FyZC5saXN0LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAvKiBFbnN1cmUgcHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zIG9uIG1vYmlsZSAqL1xuICAuY29tcGFyaXNvbi1jb2x1bW4gKyAuY29tcGFyaXNvbi1jb2x1bW4ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTgpO1xuICB9XG4gIFxuICAvKiBIZXJpdGFnZSBhY2NlbnQgb24gbW9iaWxlIC0gT05MWSBjb2xvcnMgY2hhbmdlLCBjb25zaXN0ZW50IGRpbWVuc2lvbnMgKi9cbiAgLmNvbXBhcmlzb24tbGlzdC1jYXJkLmNvbXBhcmlzb24tbGlzdC1jYXJkLXByaW1hcnkge1xuICAgIC8qIEhlcml0YWdlIGFjY2VudCB1c2luZyBib3gtc2hhZG93IC0gY29uc2lzdGVudCBkaW1lbnNpb25zICovXG4gICAgYm94LXNoYWRvdzogXG4gICAgICBpbnNldCAzcHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICAgIHZhcigtLXNoYWRvdy1jYXJkKTtcbiAgfVxufVxuXG4vKiBUYWJsZXQgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAubGF5b3V0LWdyaWQtMiB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIGVuaGFuY2VtZW50ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5sYXlvdXQtZ3JpZC0yIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuICBcbiAgLmNvbXBhcmlzb24tY29sdW1uID4gLnRpdGxlLWNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxufSIsIi8qKlxuICogTWV0cmljc0NhcmQgQ29tcG9uZW50IENTUyAtIEJSQU5ERUQgQ1NTIEFSQ0hJVEVDVFVSRVxuICogQ1JJVElDQUw6IENvbXBvbmVudC1zcGVjaWZpYyBzdHlsaW5nIG9ubHkgLSBicmFuZCBmb3VuZGF0aW9uIGluIGluZGV4LmNzc1xuICogXG4gKiBGTEFUIERFU0lHTiAzLjAgUFJJTkNJUExFUzpcbiAqIOKchSBDbGVhbiBsYXlvdXRzLCBtaW5pbWFsIHNoYWRvd3MgKGZ1bmN0aW9uYWwgb25seSlcbiAqIOKchSBQcm9mZXNzaW9uYWwgY29sb3IgcGFsZXR0ZSB1c2luZyBicmFuZCB2YXJpYWJsZXNcbiAqIOKchSBHcmlkIHNwYWNpbmcgKDhweCBtdWx0aXBsZXMpLCA0OHB4IHRvdWNoIHRhcmdldHNcbiAqIOKchSBUeXBvZ3JhcGh5IGhpZXJhcmNoeSB1c2luZyBicmFuZCBmb250IHN5c3RlbVxuICog4p2MIE5vIGdyYWRpZW50cywgZGVjb3JhdGl2ZSBzaGFkb3dzLCAzRCBlZmZlY3RzXG4gKiBcbiAqIFJFU1BPTlNJVkUgREVTSUdOIC0gTU9CSUxFIEZJUlNUOlxuICog4pyFIE1vYmlsZS1maXJzdCBDU1MgKDBweCspIHdpdGggcHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnRcbiAqIOKchSBUb3VjaCB0YXJnZXQgY29tcGxpYW5jZSAoNDhweCBtaW5pbXVtKVxuICog4pyFIFJlc3BvbnNpdmUgdHlwb2dyYXBoeSBzY2FsaW5nXG4gKiDinIUgQWxsIHJlcXVpcmVkIGJyZWFrcG9pbnRzICg2NDBweCwgNzY4cHgsIDEwMjRweCspXG4gKi9cblxuLyogTWV0cmljc0NhcmQgY29tcG9uZW50IG9ubHkgdXNlcyBzaW5nbGUtaXRlbSBhcmNoaXRlY3R1cmUgKi9cbi8qIENvbXBvbmVudCBmb2xsb3dzIDEwMCUgQ1NTIGltcGxlbWVudGF0aW9uIHJ1bGUgLSBhbGwgY2xhc3NlcyBtdXN0IGJlIHVzZWQgKi9cblxuLyogRmxhdCBEZXNpZ24gMy4wIE1ldHJpYyBJdGVtcyAtIENsZWFuIFByb2Zlc3Npb25hbCBDYXJkcyB3aXRoIE1vYmlsZS1GaXJzdCBEZXNpZ24gKi9cbi8qKlxuICogUHJvZmVzc2lvbmFsIExheW91dCAtIE1vYmlsZSBGaXJzdFxuICogVG91Y2ggVGFyZ2V0IENvbXBsaWFuY2UgLSBFbnN1cmUgNDhweCBtaW5pbXVtXG4gKiAyNHB4IG1vYmlsZSAtIFByb2Zlc3Npb25hbCB0b3VjaCB0YXJnZXRcbiAqIE1pbmltdW0gaGVpZ2h0IGZvciB0b3VjaCB0YXJnZXRzXG4gKiBNaW5pbXVtIHdpZHRoIGZvciB0b3VjaCB0YXJnZXRzXG4gKiBCcmFuZCBGb3VuZGF0aW9uIENvbG9yc1xuICogVmlzdWFsIGRpc3RpbmN0aW9uIHdpdGhvdXQgYm9yZGVycyAtIEJvcmRlcmxlc3MgRGVzaWduXG4gKiBGbGF0IERlc2lnbiAzLjAgLSBNaW5pbWFsIHJhZGl1cyBvbmx5XG4gKiBVc2UgY29uc2lzdGVudCBib3JkZXIgcmFkaXVzIGZyb20gYnJhbmQgc3lzdGVtXG4gKiBQcm9mZXNzaW9uYWwgTWljcm8tSW50ZXJhY3Rpb25zIHdpdGggQnJhbmQgVGltaW5nXG4gKiBJbXByb3ZlZCBGb2N1cyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHlcbiAqL1xuLm1ldHJpYy1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA3LjUpO1xuICBtaW4td2lkdGg6IGNhbGModmFyKC0tc3BhY2UtNCkgKiA4LjEyNSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItY2FyZC1mb3JlZ3JvdW5kKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXN0YW5kYXJkKSxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBvdXRsaW5lOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFByb2Zlc3Npb25hbCBIb3ZlciBTdGF0ZXMgLSBGbGF0IERlc2lnbiAzLjAgd2l0aCBBY3RpdmUgU2NhbGUgKi9cbi5tZXRyaWMtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7XG4gIC8qIFN1YnRsZSBwcm9mZXNzaW9uYWwgbGlmdCAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5tZXRyaWMtaXRlbTphY3RpdmUge1xuICAvKiBQcm9mZXNzaW9uYWwgY2xpY2sgZmVlZGJhY2sgKi9cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpIHNjYWxlKDAuOTgpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG5cbi8qIElNUFJPVkVEOiBGb2N1cyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5tZXRyaWMtaXRlbTpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1yaW5nKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IodmFyKC0tY29sb3ItcmluZykgLyAwLjIpO1xufVxuXG4vKiBJTVBST1ZFRDogS2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yICovXG4uZm9jdXMtcHJvZmVzc2lvbmFsOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXJpbmcpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYih2YXIoLS1jb2xvci1yaW5nKSAvIDAuMik7XG59XG5cbi8qIE1ldHJpYyB2YWx1ZSAtIGluaGVyaXRzIGZyb20gZ2xvYmFsIHRpdGxlLWNhcmQgY2xhc3MgKi9cbi5tZXRyaWMtdmFsdWUge1xuICAvKiBBZGRpdGlvbmFsIHNwYWNpbmcgb25seSAtIHR5cG9ncmFwaHkgaGFuZGxlZCBieSB0aXRsZS1jYXJkICovXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBIZXJpdGFnZSBSZWQgSW1wbGVtZW50YXRpb24gLSAxMCUgUnVsZSBDb21wbGlhbmNlICovXG4vKiBPbmx5IGFwcGx5IGhlcml0YWdlIHJlZCB0byBPTkUgbWV0cmljIChmZWF0dXJlZC9wcmltYXJ5IG1ldHJpYykgKi9cbi50ZXh0LWhlcml0YWdlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IG1heCgxcmVtLCAxNnB4KTtcbn1cblxuLyogSGVyaXRhZ2UgZWxlbWVudHMgZ2V0IDI1LTM1JSBleHRyYSBzcGFjaW5nICovXG4ubWV0cmljLWl0ZW0taGVyaXRhZ2Uge1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpIDA7XG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpO1xufVxuXG4vKiBNZXRyaWMgbGFiZWwgLSBpbmhlcml0cyBmcm9tIGdsb2JhbCBzdWJ0aXRsZS1sZyBjbGFzcyAqL1xuLm1ldHJpYy1sYWJlbCB7XG4gIC8qIEFkZGl0aW9uYWwgc3BhY2luZyBvbmx5IC0gdHlwb2dyYXBoeSBoYW5kbGVkIGJ5IHN1YnRpdGxlLWxnICovXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBNZXRyaWMgZGVzY3JpcHRpb24gLSBpbmhlcml0cyBmcm9tIGdsb2JhbCBkZXNjcmlwdGlvbiBjbGFzcyAqL1xuLm1ldHJpYy1kZXNjcmlwdGlvbiB7XG4gIC8qIFRyYW5zaXRpb24gb25seSAtIHR5cG9ncmFwaHkgaGFuZGxlZCBieSBkZXNjcmlwdGlvbiBjbGFzcyAqL1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBFbmhhbmNlZCBQcm9mZXNzaW9uYWwgU3RhdGVzICovXG4ubWV0cmljLWVuaGFuY2VkIC5tZXRyaWMtaXRlbTpob3ZlciB7XG4gIC8qIEFkZGl0aW9uYWwgZW5oYW5jZW1lbnQgZm9yIHNwZWNpYWwgY2FzZXMgKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA2KTtcbn1cblxuLm1ldHJpYy1lbmhhbmNlZCAubWV0cmljLXZhbHVlIHtcbiAgLyogRW5oYW5jZWQgdmFsdWUgcHJvbWluZW5jZSB3aGVuIG5lZWRlZCAqL1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLyogUFdBIEFuaW1hdGlvbiBJbnRlZ3JhdGlvbiAtIFVzZXMgYnJhbmQgZm91bmRhdGlvbiBQV0Egc3lzdGVtICovXG4vKiBTdGFnZ2VyIGRlbGF5cyBoYW5kbGVkIGJ5IC0tc3RhZ2dlci1pbmRleCBDU1MgY3VzdG9tIHByb3BlcnRpZXMgKi9cblxuLyogTU9CSUxFLUZJUlNUIFJFU1BPTlNJVkUgREVTSUdOIC0gQWxsIFJlcXVpcmVkIEJyZWFrcG9pbnRzICovXG5cbi8qIFNtYWxsIHNjcmVlbnMgKDY0MHB4KykgLSBTbWFsbCB0YWJsZXQvbGFyZ2UgbW9iaWxlICovXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLm1ldHJpYy1pdGVtIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTQpICogNi44NzUpO1xuICB9XG59XG5cbi8qIE1lZGl1bSBzY3JlZW5zICg3NjhweCspIC0gVGFibGV0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm1ldHJpYy1pdGVtIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTQpICogNy41KTtcbiAgfVxufVxuXG4vKiBMYXJnZSBzY3JlZW5zICgxMDI0cHgrKSAtIERlc2t0b3AgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1ldHJpYy1pdGVtIHtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLXNwYWNlLTQpICogOC43NSk7XG4gIH1cbn1cblxuLyogRGFyayBNb2RlIFN1cHBvcnQgLSBFbmhhbmNlZCB3aXRoIGV4cGxpY2l0IHJ1bGVzICovXG4uZGFyayAubWV0cmljLWl0ZW0ge1xuICBjb2xvci1zY2hlbWU6IGRhcms7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGFyayAubWV0cmljLWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMTIpO1xufVxuXG4uZGFyayAubWV0cmljLXZhbHVlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5kYXJrIC5tZXRyaWMtbGFiZWwge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLmRhcmsgLm1ldHJpYy1kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG4vKiBTeXN0ZW0gcHJlZmVyZW5jZSBmb3IgJ3N5c3RlbScgdGhlbWUgc2V0dGluZyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICA6cm9vdDpub3QoLmxpZ2h0KSAubWV0cmljLWl0ZW0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgOnJvb3Q6bm90KC5saWdodCkgLm1ldHJpYy1pdGVtOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDgpO1xuICB9XG5cbiAgOnJvb3Q6bm90KC5saWdodCkgLm1ldHJpYy12YWx1ZSB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIH1cblxuICA6cm9vdDpub3QoLmxpZ2h0KSAubWV0cmljLWxhYmVsIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgfVxuXG4gIDpyb290Om5vdCgubGlnaHQpIC5tZXRyaWMtZGVzY3JpcHRpb24ge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgTW90aW9uIFN1cHBvcnQgLSBBY2Nlc3NpYmlsaXR5ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAubWV0cmljLWl0ZW0ge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAubWV0cmljLWl0ZW06aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5tZXRyaWMtaXRlbTphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuXG4vKiBQcmludCBTdHlsZXMgLSBQcm9mZXNzaW9uYWwgRG9jdW1lbnRhdGlvbiAqL1xuQG1lZGlhIHByaW50IHtcbiAgLm1ldHJpYy1pdGVtIHtcbiAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG5cbiAgLm1ldHJpYy1pdGVtOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn0iLCIvKiBQYXJ0bmVycyBEaXJlY3RvcnkgUGFnZSBTdHlsZXMgKi9cblxuLyogVG91Y2ggVGFyZ2V0IE9wdGltaXphdGlvbiAqL1xuLnRvdWNoLXRhcmdldCB7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIG1pbi13aWR0aDogNDhweDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiBQYXJ0bmVycyBHcmlkIExheW91dCAqL1xuLnBhcnRuZXJzLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IDJyZW07XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnBhcnRuZXJzLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAucGFydG5lcnMtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxufVxuXG4vKiBQYXJ0bmVyIENhcmQgU3R5bGVzICovXG4ucGFydG5lci1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4ucGFydG5lci1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDEwcHggMjVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCA0cHggNnB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cblxuLnBhcnRuZXItY2FyZCAucGFydG5lci1uYW1lIHtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5wYXJ0bmVyLWNhcmQgLnBhcnRuZXItY2F0ZWdvcnkge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS02MDApO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4ucGFydG5lci1jYXJkIC5wYXJ0bmVyLWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4ucGFydG5lci1jYXJkIC5wYXJ0bmVyLXNlcnZpY2VzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLnBhcnRuZXItY2FyZCAucGFydG5lci1jb250YWN0IHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7XG4gIHBhZGRpbmctdG9wOiAxcmVtO1xuICBtYXJnaW4tdG9wOiBhdXRvO1xufVxuXG4ucGFydG5lci1jYXJkIC5jb250YWN0LWN0YSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWJsdWUtNTApIDAlLCB2YXIoLS1jb2xvci1zbGF0ZS01MCkgMTAwJSk7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucGFydG5lci1jYXJkIC5jb250YWN0LWN0YTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWJsdWUtMTAwKSAwJSwgdmFyKC0tY29sb3Itc2xhdGUtMTAwKSAxMDAlKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcbn1cblxuLyogSGVyaXRhZ2UgUmVkIEJ1dHRvbiAoQ1RBIFNlY3Rpb24pICovXG4uYnRuLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZDogdmFyKC0taGVyaXRhZ2UtcmVkKTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMnJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5idG4taGVyaXRhZ2U6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KSAxMDAlKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5idG4taGVyaXRhZ2U6aG92ZXI6YmVmb3JlIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmJ0bi1oZXJpdGFnZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWhlcml0YWdlLXJlZC1kYXJrKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAyNXB4IC0zcHggcmdiYSgyMjAsIDM4LCAzOCwgMC4zKTtcbn1cblxuLyogUGFydG5lcnNoaXAgQ1RBIFNlY3Rpb24gRXh0cmEgV2hpdGVzcGFjZSAqL1xuLnBhcnRuZXJzaGlwLWN0YSB7XG4gIHBhZGRpbmctdG9wOiA2cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogNnJlbTtcbiAgbWFyZ2luLXRvcDogM3JlbTtcbiAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbn1cblxuLyogSGVybyBTZWN0aW9uIFN0eWxlcyAqL1xuLyogSGVybyBzZWN0aW9uIG5vdyB1c2VzIHN0YW5kYXJkIHN1cmZhY2UgY2xhc3NlcyBmcm9tIGdsb2JhbCBzdHlsZXMgKERSWSBwcmluY2lwbGUpICovXG4vKiBObyBjdXN0b20gYmFja2dyb3VuZHMgbmVlZGVkIC0gZm9sbG93cyBLSVNTIHByaW5jaXBsZSAqL1xuXG4vKiBTZWFyY2ggYW5kIEZpbHRlciBJbnB1dHMgKi9cbi5wYXJ0bmVycy1kaXJlY3RvcnkgaW5wdXQsXG4ucGFydG5lcnMtZGlyZWN0b3J5IHNlbGVjdCB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGFydG5lcnMtZGlyZWN0b3J5IGlucHV0OmZvY3VzLFxuLnBhcnRuZXJzLWRpcmVjdG9yeSBzZWxlY3Q6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtNTAwKTtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xufVxuXG4ucGFydG5lcnMtZGlyZWN0b3J5IGlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXRlcnRpYXJ5KTtcbn1cblxuLyogUmF0aW5nIFN0YXJzICovXG4ucGFydG5lci1yYXRpbmcgLmljb24tc3RhciB7XG4gIGNvbG9yOiAjZmJiZjI0O1xuICBmaWxsOiAjZmJiZjI0O1xufVxuXG4vKiBNb2JpbGUgT3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5wYXJ0bmVycy1ncmlkIHtcbiAgICBnYXA6IDEuNXJlbTtcbiAgfVxuICBcbiAgLnBhcnRuZXItY2FyZCB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIFxuICAvKiBIZXJvIHNlY3Rpb24gdXNlcyBzdGFuZGFyZCBsYXlvdXQtc2VjdGlvbiBwYWRkaW5nIGZyb20gZ2xvYmFsIHN0eWxlcyAqL1xuICBcbiAgLnBhcnRuZXJzaGlwLWN0YSB7XG4gICAgcGFkZGluZy10b3A6IDRyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDRyZW07XG4gICAgbWFyZ2luLXRvcDogMnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICB9XG4gIFxuICAvKiBFbnN1cmUgb25seSAxIGhlcml0YWdlIHJlZCBlbGVtZW50IG9uIG1vYmlsZSAqL1xuICAuYnRuLWhlcml0YWdlOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTYwMCk7XG4gIH1cbiAgXG4gIC5idG4taGVyaXRhZ2U6bm90KDpmaXJzdC1vZi10eXBlKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc2xhdGUtNzAwKTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIEhlcml0YWdlIFJlZCBDb21wbGlhbmNlICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLyogTWF4aW11bSAyIGhlcml0YWdlIHJlZCBlbGVtZW50cyBvbiBkZXNrdG9wICovXG4gIC5oZXJpdGFnZS1yZWQ6bnRoLW9mLXR5cGUobiszKSxcbiAgLmJ0bi1oZXJpdGFnZTpudGgtb2YtdHlwZShuKzMpIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zbGF0ZS02MDApO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICBcbiAgLmhlcml0YWdlLXJlZDpudGgtb2YtdHlwZShuKzMpOmhvdmVyLFxuICAuYnRuLWhlcml0YWdlOm50aC1vZi10eXBlKG4rMyk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNsYXRlLTcwMCk7XG4gIH1cbn1cblxuLyogUFdBIEFuaW1hdGlvbiBFbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xuICAucHdhLXNjcm9sbC1mYWRlIHtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNnM7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgfVxuICBcbiAgLnBhcnRuZXItY2FyZCB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogMC4xcyk7XG4gIH1cbn1cblxuLyogSGlnaCBDb250cmFzdCBNb2RlIFN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAucGFydG5lci1jYXJkIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIH1cbiAgXG4gIC5wYXJ0bmVyLWNhcmQgLnBhcnRuZXItbmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuICBcbiAgLmJ0bi1oZXJpdGFnZSB7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0taGVyaXRhZ2UtcmVkLWRhcmspO1xuICB9XG59XG5cbi8qIFByaW50IFN0eWxlcyAqL1xuQG1lZGlhIHByaW50IHtcbiAgLyogSGVybyBzZWN0aW9uIHByaW50IHN0eWxlcyBoYW5kbGVkIGJ5IGdsb2JhbCBoZXJvLmNzcyAqL1xuICBcbiAgLnBhcnRuZXItY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICBcbiAgLnBhcnRuZXJzaGlwLWN0YSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufSIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTZWN0aW9uIENvbXBvbmVudCBTdHlsZXMgLSBMYXlvdXQgVXRpbGl0eSBFbmhhbmNlbWVudHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIElNUE9SVEFOVDogU2VjdGlvbiBDb21wb25lbnQgQ1NTIEltcGxlbWVudGF0aW9uIE5vdGVzXG4gKiAtIFRoaXMgZmlsZSBFTkhBTkNFUyBleGlzdGluZyBsYXlvdXQgdXRpbGl0aWVzIGZyb20gc3JjL2luZGV4LmNzc1xuICogLSBVc2VzIGxheW91dC1zZWN0aW9uLSosIHN1cmZhY2UtKiwgbGF5b3V0LWNvbnRhaW5lciBjbGFzc2VzIGFzIGZvdW5kYXRpb25cbiAqIC0gQWRkcyBtaW5pbWFsIGNvbXBvbmVudC1zcGVjaWZpYyBzdHlsaW5nIGZvciBjb250ZW50IHN0cnVjdHVyZVxuICogLSBBbGwgc3BhY2luZyBhbmQgc2l6aW5nIGNvbWVzIGZyb20gbGF5b3V0IHV0aWxpdGllc1xuICogLSBDb21wb25lbnQgY2xhc3NlczogLnNlY3Rpb24tKiwgLnNlY3Rpb24taGVhZGVyLCAuc2VjdGlvbi1jb250ZW50LCAuc2VjdGlvbi1ib2R5XG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEuIFNFQ1RJT04gQ09OVEFJTkVSIEVOSEFOQ0VNRU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQmFzZSBzZWN0aW9uIGNvbnRhaW5lciAtIHdvcmtzIHdpdGggYWxsIGxheW91dCB1dGlsaXRpZXMgKi9cbi5zZWN0aW9uLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogRW5zdXJlIGNsZWFuIGJvdW5kYXJpZXMgZm9yIGFuaW1hdGlvbnMgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xufVxuXG4vKiBTdXJmYWNlIGVuaGFuY2VtZW50cyBmb3IgYmV0dGVyIHZpc3VhbCBoaWVyYXJjaHkgKi9cbi5zZWN0aW9uLWNvbnRhaW5lci5zdXJmYWNlLWRlZmF1bHQge1xuICAvKiBBbHJlYWR5IGRlZmluZWQgaW4gbGF5b3V0IHV0aWxpdGllcyAtIG5vIGFkZGl0aW9uYWwgc3R5bGVzIG5lZWRlZCAqL1xufVxuXG4uc2VjdGlvbi1jb250YWluZXIuc3VyZmFjZS1tdXRlZCB7XG4gIC8qIFN1cmZhY2Ugc3R5bGVzIGhhbmRsZWQgYnkgZ2xvYmFsIHRoZW1lIC0gbm8gY29tcG9uZW50IG92ZXJyaWRlcyAqL1xufVxuXG4uc2VjdGlvbi1jb250YWluZXIuc3VyZmFjZS1kYXJrIHtcbiAgLyogU3VyZmFjZSBzdHlsZXMgaGFuZGxlZCBieSBnbG9iYWwgdGhlbWUgLSBubyBjb21wb25lbnQgb3ZlcnJpZGVzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAyLiBTRUNUSU9OIEhFQURFUiBTVFJVQ1RVUkVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhlYWRlciBjb250YWluZXIgZm9yIHRpdGxlLCBzdWJ0aXRsZSwgZGVzY3JpcHRpb24gKi9cbi5zZWN0aW9uLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIG1heC13aWR0aDogODAwcHg7IC8qIE9wdGltYWwgcmVhZGluZyB3aWR0aCBmb3IgaGVhZGVycyAqL1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vKiBTZWN0aW9uIHRpdGxlIGVuaGFuY2VtZW50cyAtIGJ1aWxkcyBvbiB0aXRsZS1zZWN0aW9uICovXG4uc2VjdGlvbi10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFNlY3Rpb24gc3VidGl0bGUgZW5oYW5jZW1lbnRzIC0gYnVpbGRzIG9uIHN1YnRpdGxlLWxnICovXG4uc2VjdGlvbi1zdWJ0aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFNlY3Rpb24gZGVzY3JpcHRpb24gZW5oYW5jZW1lbnRzIC0gYnVpbGRzIG9uIGRlc2NyaXB0aW9uLWxnICovXG4uc2VjdGlvbi1kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8qIExhc3QgZWxlbWVudCBpbiBoZWFkZXIgLSBubyBib3R0b20gbWFyZ2luICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWF4LXdpZHRoOiA2MDBweDsgLyogT3B0aW1hbCByZWFkaW5nIHdpZHRoIGZvciBkZXNjcmlwdGlvbnMgKi9cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDMuIFNFQ1RJT04gQ09OVEVOVCBTVFJVQ1RVUkVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENvbnRlbnQgY29udGFpbmVyIC0gcHJvdmlkZXMgc3RydWN0dXJlIGZvciBjaGlsZCBjb21wb25lbnRzICovXG4uc2VjdGlvbi1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLyogQm9keSB3cmFwcGVyIGZvciBjb25zaXN0ZW50IGNoaWxkIHNwYWNpbmcgKi9cbi5zZWN0aW9uLWJvZHkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBFbnN1cmUgcHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBtdWx0aXBsZSBjaGlsZCBlbGVtZW50cyAqL1xuLnNlY3Rpb24tYm9keSA+ICogKyAqIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIEdyaWQgbGF5b3V0cyBoYW5kbGUgdGhlaXIgb3duIHNwYWNpbmcgKi9cbi5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMiA+ICosXG4uc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTMgPiAqLFxuLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC00ID4gKiB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qIEdyaWQgbGF5b3V0cyB3aXRoaW4gc2VjdGlvbnMgKi9cbi5zZWN0aW9uLWJvZHkgLmxheW91dC1ncmlkLTIsXG4uc2VjdGlvbi1ib2R5IC5sYXlvdXQtZ3JpZC0zLFxuLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtNCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTgpOyAvKiBFeHRyYSBzcGFjZSBiZWZvcmUgZ3JpZHMgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDQuIFJFU1BPTlNJVkUgRU5IQU5DRU1FTlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBNb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgLyogQmV0dGVyIG1vYmlsZSByZWFkaW5nIGV4cGVyaWVuY2UgKi9cbiAgfVxuICBcbiAgLnNlY3Rpb24tdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuc2VjdGlvbi1zdWJ0aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7IC8qIEZ1bGwgd2lkdGggb24gbW9iaWxlICovXG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG4gIFxuICAvKiBUaWdodGVyIHNwYWNpbmcgZm9yIG1vYmlsZSAqL1xuICAuc2VjdGlvbi1ib2R5ID4gKiArICoge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAvKiBHcmlkIGxheW91dHMgaGFuZGxlIHRoZWlyIG93biBzcGFjaW5nICovXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMiA+ICosXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtMyA+ICosXG4gIC5zZWN0aW9uLWJvZHkubGF5b3V0LWdyaWQtNCA+ICoge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgXG4gIC5zZWN0aW9uLWJvZHkgLmxheW91dC1ncmlkLTIsXG4gIC5zZWN0aW9uLWJvZHkgLmxheW91dC1ncmlkLTMsXG4gIC5zZWN0aW9uLWJvZHkgLmxheW91dC1ncmlkLTQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIFRhYmxldCBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyAvKiBDZW50ZXIgb24gdGFibGV0ICovXG4gIH1cbiAgXG4gIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBtYXgtd2lkdGg6IDcwMHB4OyAvKiBTbGlnaHRseSB3aWRlciBvbiB0YWJsZXQgKi9cbiAgfVxufVxuXG4vKiBEZXNrdG9wIGVuaGFuY2VtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuc2VjdGlvbi1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEwKTsgLyogTW9yZSBicmVhdGhpbmcgcm9vbSBvbiBkZXNrdG9wICovXG4gIH1cbiAgXG4gIC8qIEVuaGFuY2VkIHNwYWNpbmcgZm9yIGxhcmdlciBzY3JlZW5zICovXG4gIC5zZWN0aW9uLWJvZHkgPiAqICsgKiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7XG4gIH1cbiAgXG4gIC8qIEdyaWQgbGF5b3V0cyBoYW5kbGUgdGhlaXIgb3duIHNwYWNpbmcgKi9cbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0yID4gKixcbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC0zID4gKixcbiAgLnNlY3Rpb24tYm9keS5sYXlvdXQtZ3JpZC00ID4gKiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtMixcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtMyxcbiAgLnNlY3Rpb24tYm9keSAubGF5b3V0LWdyaWQtNCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTIpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA1LiBQV0EgQU5JTUFUSU9OIEVOSEFOQ0VNRU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRW5zdXJlIHNlY3Rpb24gYW5pbWF0aW9ucyB3b3JrIHNtb290aGx5IHdpdGggbGF5b3V0IHV0aWxpdGllcyAqL1xuLnNlY3Rpb24tY29udGFpbmVyLnB3YS1zY3JvbGwtc2VjdGlvbiB7XG4gIC8qIEFuaW1hdGlvbiBiYXNlIHN0eWxlcyBhcmUgaGFuZGxlZCBieSBQV0Egc3lzdGVtICovXG4gIC8qIFRoaXMgY2xhc3MgZW5zdXJlcyBwcm9wZXIgaW50ZWdyYXRpb24gKi9cbn1cblxuLyogSGVhZGVyIGVsZW1lbnRzIGFuaW1hdGlvbiByZWFkaW5lc3MgKi9cbi5zZWN0aW9uLWhlYWRlciAucHdhLXNjcm9sbC1mYWRlIHtcbiAgLyogRW5zdXJlIGhlYWRlciBlbGVtZW50cyBhbmltYXRlIHByb3Blcmx5ICovXG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zY3JvbGwtZGlzdGFuY2UsIDMwcHgpKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXB3YS1kdXJhdGlvbi1ub3JtYWwpIHZhcigtLXB3YS1lYXNpbmctc21vb3RoKTtcbn1cblxuLyogQ29udGVudCBhbmltYXRpb24gcmVhZGluZXNzICovXG4uc2VjdGlvbi1jb250ZW50IC5wd2Etc2Nyb2xsLWZhZGUge1xuICAvKiBFbnN1cmUgY29udGVudCBhbmltYXRlcyBhZnRlciBoZWFkZXIgKi9cbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXNjcm9sbC1kaXN0YW5jZSwgMzBweCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcHdhLWR1cmF0aW9uLW5vcm1hbCkgdmFyKC0tcHdhLWVhc2luZy1zbW9vdGgpO1xufVxuXG4vKiBBbmltYXRpb24gYWN0aXZlIHN0YXRlcyAqL1xuLnNlY3Rpb24tY29udGFpbmVyLnB3YS1zY3JvbGwtc2VjdGlvbi5wd2EtYW5pbWF0ZSAucHdhLXNjcm9sbC1mYWRlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNi4gQUNDRVNTSUJJTElUWSBFTkhBTkNFTUVOVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIG1hbmFnZW1lbnQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gKi9cbi5zZWN0aW9uLWNvbnRhaW5lcjpmb2N1cy13aXRoaW4ge1xuICBvdXRsaW5lOiBub25lOyAvKiBMZXQgaW5kaXZpZHVhbCBlbGVtZW50cyBoYW5kbGUgZm9jdXMgKi9cbn1cblxuLyogRm9jdXMgc3R5bGVzIGhhbmRsZWQgYnkgZ2xvYmFsIHRoZW1lIC0gbm8gY29tcG9uZW50IG92ZXJyaWRlcyAqL1xuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCBoYW5kbGVkIGJ5IGdsb2JhbCB0aGVtZSAqL1xuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuc2VjdGlvbi1oZWFkZXIgLnB3YS1zY3JvbGwtZmFkZSxcbiAgLnNlY3Rpb24tY29udGVudCAucHdhLXNjcm9sbC1mYWRlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA3LiBQUklOVCBTVFlMRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSBwcmludCB7XG4gIC5zZWN0aW9uLWNvbnRhaW5lciB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cbiAgXG4gIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gICAgYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICB9XG4gIFxuICAvKiBFbnN1cmUgcmVhZGFibGUgc3BhY2luZyBpbiBwcmludCAqL1xuICAuc2VjdGlvbi1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cbiAgXG4gIC5zZWN0aW9uLWJvZHkgPiAqICsgKiB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgfVxuICBcbiAgLyogR3JpZCBsYXlvdXRzIGhhbmRsZSB0aGVpciBvd24gc3BhY2luZyAqL1xuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTIgPiAqLFxuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTMgPiAqLFxuICAuc2VjdGlvbi1ib2R5LmxheW91dC1ncmlkLTQgPiAqIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG59IiwiLyoqXG4gKiBTZXJ2aWNlU2hvd2Nhc2UgQ29tcG9uZW50IFN0eWxlc1xuICogVGhyZWUtTGF5ZXIgQXJjaGl0ZWN0dXJlIEltcGxlbWVudGF0aW9uXG4gKiBcbiAqIExheWVyIDE6IEJyYW5kIEZvdW5kYXRpb24gLSBJbmhlcml0cyBmcm9tIGdsb2JhbCBzdHlsZXNcbiAqIExheWVyIDI6IENvbXBvbmVudCBFbmhhbmNlbWVudCAtIENvbXBvbmVudC1zcGVjaWZpYyBzdHlsaW5nICBcbiAqIExheWVyIDM6IFBhZ2UgQ3VzdG9taXphdGlvbiAtIFRoZW1lIGFuZCBjb250ZXh0IHZhcmlhbnRzXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExheWVyIDE6IEJyYW5kIEZvdW5kYXRpb25cbiAgIEluaGVyaXRzIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGJhc2Ugc3R5bGVzIGZyb20gaW5kZXguY3NzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBDb21wb25lbnQgdXNlcyBicmFuZCBmb3VuZGF0aW9uIHZhcmlhYmxlczpcbiAgIC0gQ29sb3JzOiB2YXIoLS1jb2xvci0qKVxuICAgLSBUeXBvZ3JhcGh5OiBHbG9iYWwgY2xhc3NlcyAodGl0bGUtc2VjdGlvbiwgdGl0bGUtY2FyZCwgZGVzY3JpcHRpb24pXG4gICAtIFNwYWNpbmc6IHZhcigtLXNwYWNpbmctKilcbiAgIC0gQW5pbWF0aW9uczogUFdBIHNjcm9sbCBzeXN0ZW1cbiovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMYXllciAyOiBDb21wb25lbnQgRW5oYW5jZW1lbnRcbiAgIFNlcnZpY2VTaG93Y2FzZS1zcGVjaWZpYyBzdHJ1Y3R1cmUgYW5kIHN0eWxpbmdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEJsb2NrOiBNYWluIGNvbnRhaW5lciAqL1xuLnNlcnZpY2Utc2hvd2Nhc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZS1jb250YWluZXIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKSAwO1xufVxuXG4vKiBFbGVtZW50OiBIZWFkZXIgc2VjdGlvbiAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2hlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14bCk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19oZWFkZXIgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctbWQpO1xufVxuXG4vKiBFbGVtZW50OiBTZXJ2aWNlcyBncmlkICovXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1sZyk7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBFbGVtZW50OiBTZXJ2aWNlIGNhcmQgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMyk7XG59XG5cbi8qIEVsZW1lbnQ6IEljb24gY29udGFpbmVyICovXG4uc2VydmljZS1zaG93Y2FzZV9faWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogNjRweDtcbiAgaGVpZ2h0OiA2NHB4O1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSAvIDAuMSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICB3aWR0aDogNDhweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBmaWxsOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQ6aG92ZXIgLnNlcnZpY2Utc2hvd2Nhc2VfX2ljb24ge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjEpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZDpob3ZlciAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIGZpbGw6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi8qIEVsZW1lbnQ6IENhcmQgY29udGVudCAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fdGl0bGUge1xuICAvKiBVc2VzIGdsb2JhbCAudGl0bGUtY2FyZCBjbGFzcyAqL1xuICBtYXJnaW46IDA7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19kZXNjcmlwdGlvbiB7XG4gIC8qIFVzZXMgZ2xvYmFsIC5kZXNjcmlwdGlvbiBjbGFzcyAqL1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEVsZW1lbnQ6IEJhZGdlICovXG4uc2VydmljZS1zaG93Y2FzZV9fYmFkZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgcGFkZGluZzogMnB4IDhweDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLyogRWxlbWVudDogTGluayBpbmRpY2F0b3IgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19saW5rLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC04cHgpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2xpbmstaWNvbiBzdmcge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmaWxsOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZDpob3ZlciAuc2VydmljZS1zaG93Y2FzZV9fbGluay1pY29uIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTW9kaWZpZXI6IEdyaWQgVmFyaWF0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogTW9kaWZpZXI6IENvbXBhY3QgZ3JpZCAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2dyaWQtLWNvbXBhY3Qge1xuICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0tY29tcGFjdCAuc2VydmljZS1zaG93Y2FzZV9fY2FyZCB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0tY29tcGFjdCAuc2VydmljZS1zaG93Y2FzZV9faWNvbiB7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0tY29tcGFjdCAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuXG4vKiBNb2RpZmllcjogV2lkZSBncmlkICovXG4uc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0td2lkZSB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNb2RpZmllcjogQ2FyZCBUaGVtZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1vZGlmaWVyOiBEYXJrIGNhcmQgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkLS1kYXJrIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSAvIDAuNSk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkLS1kYXJrOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbn1cblxuLyogTW9kaWZpZXI6IEhpZ2hsaWdodGVkIGNhcmQgKi9cbi5zZXJ2aWNlLXNob3djYXNlX19jYXJkLS1oaWdobGlnaHQge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4zKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA1KTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQtLWhpZ2hsaWdodCAuc2VydmljZS1zaG93Y2FzZV9faWNvbiB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4xKTtcbn1cblxuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQtLWhpZ2hsaWdodCAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICBmaWxsOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQV0EgQW5pbWF0aW9uIEludGVncmF0aW9uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTZWN0aW9uLWxldmVsIGFuaW1hdGlvbiAqL1xuLnNlcnZpY2Utc2hvd2Nhc2UucHdhLXNjcm9sbC1zZWN0aW9uIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXB3YS1zZWN0aW9uLWRpc3RhbmNlKSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tcHdhLXNlY3Rpb24tZHVyYXRpb24pIHZhcigtLWVhc2Utc21vb3RoKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXB3YS1zZWN0aW9uLWR1cmF0aW9uKSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5zZXJ2aWNlLXNob3djYXNlLnB3YS1zY3JvbGwtc2VjdGlvbi5hbmltYXRlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBDYXJkIHN0YWdnZXIgYW5pbWF0aW9ucyAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQucHdhLXNjcm9sbC1mYWRlIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXB3YS1zY3JvbGwtZGlzdGFuY2UpKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1wd2Etc2Nyb2xsLWR1cmF0aW9uKSB2YXIoLS1lYXNlLXNtb290aCksXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1wd2Etc2Nyb2xsLWR1cmF0aW9uKSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiB2YXIoLS1wd2Etc3RhZ2dlci1kZWxheSkpO1xufVxuXG4uc2VydmljZS1zaG93Y2FzZV9fY2FyZC5wd2Etc2Nyb2xsLWZhZGUuYW5pbWF0ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJlc3BvbnNpdmUgRGVzaWduXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUYWJsZXQ6IDc2OHB4IC0gMTAyM3B4ICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5zZXJ2aWNlLXNob3djYXNlX19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0td2lkZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZykgdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cbn1cblxuLyogTW9iaWxlOiA8IDc2OHB4ICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9fZ3JpZC0td2lkZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpIHZhcigtLXNwYWNpbmctc20pO1xuICB9XG5cbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1sZyk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9fY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9faWNvbiB7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICB9XG5cbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2ljb24gc3ZnIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cblxuICAvKiBUb3VjaCBvcHRpbWl6YXRpb24gKi9cbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQge1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9fY2FyZDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gIH1cblxuICAvKiBIaWRlIGhvdmVyIGVmZmVjdHMgb24gbW9iaWxlICovXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIH1cblxuICAuc2VydmljZS1zaG93Y2FzZV9fY2FyZDpob3ZlciAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8qIEFsd2F5cyBzaG93IGxpbmsgaWNvbiBvbiBtb2JpbGUgZm9yIGJldHRlciBVWCAqL1xuICAuc2VydmljZS1zaG93Y2FzZV9fbGluay1pY29uIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMYXllciAzOiBQYWdlIEN1c3RvbWl6YXRpb25cbiAgIFRoZW1lIGFuZCBjb250ZXh0LXNwZWNpZmljIG92ZXJyaWRlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVGhlbWU6IEFJIE1pZGRsZXdhcmUgcGFnZSAqL1xuLnRoZW1lLWFpLW1pZGRsZXdhcmUgLnNlcnZpY2Utc2hvd2Nhc2Uge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpIDAlLFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjA1KSAxMDAlKTtcbn1cblxuLnRoZW1lLWFpLW1pZGRsZXdhcmUgLnNlcnZpY2Utc2hvd2Nhc2VfX2ljb24gc3ZnIHtcbiAgZmlsbDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xufVxuXG4vKiBUaGVtZTogSGVyaXRhZ2UgZW1waGFzaXMgKi9cbi50aGVtZS1oZXJpdGFnZSAuc2VydmljZS1zaG93Y2FzZV9fY2FyZDpudGgtY2hpbGQoMSkge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4zKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA1KTtcbn1cblxuLnRoZW1lLWhlcml0YWdlIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOm50aC1jaGlsZCgxKSAuc2VydmljZS1zaG93Y2FzZV9faWNvbiBzdmcge1xuICBmaWxsOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG59XG5cbi8qIFRoZW1lOiBEYXJrIG1vZGUgKi9cbi50aGVtZS1kYXJrIC5zZXJ2aWNlLXNob3djYXNlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbn1cblxuLnRoZW1lLWRhcmsgLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkgLyAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpIC8gMC4zKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFjY2Vzc2liaWxpdHlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEZvY3VzIHN0YXRlcyAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQ6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDNweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItZm9jdXMpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkLFxuICAuc2VydmljZS1zaG93Y2FzZV9faWNvbixcbiAgLnNlcnZpY2Utc2hvd2Nhc2VfX2ljb24gc3ZnLFxuICAuc2VydmljZS1zaG93Y2FzZV9fbGluay1pY29uLFxuICAuc2VydmljZS1zaG93Y2FzZS5wd2Etc2Nyb2xsLXNlY3Rpb24sXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkLnB3YS1zY3JvbGwtZmFkZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgfVxuXG4gIC5zZXJ2aWNlLXNob3djYXNlX19jYXJkOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgYW5pbWF0aW9ucyAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQge1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBib3gtc2hhZG93O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbn1cblxuLyogUmVtb3ZlIHdpbGwtY2hhbmdlIGFmdGVyIGFuaW1hdGlvbiAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2NhcmQuYW5pbWF0ZSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBPcHRpbWl6ZSBpY29uIHJlbmRlcmluZyAqL1xuLnNlcnZpY2Utc2hvd2Nhc2VfX2ljb24gc3ZnIHtcbiAgc2hhcGUtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG59IiwiLyoqXG4gKiBTaG93Y2FzZSBDb21wb25lbnQgU3R5bGVzIC0gQ29tcG9uZW50IEVuaGFuY2VtZW50IExheWVyXG4gKiBcbiAqIElNUE9SVEFOVDogVGhpcyBmaWxlIGNvbnRhaW5zIGNvbXBvbmVudC1zcGVjaWZpYyBlbmhhbmNlbWVudHMgb25seS5cbiAqIEdsb2JhbCB0eXBvZ3JhcGh5LCBjb2xvcnMsIGFuZCBzcGFjaW5nIGFyZSBkZWZpbmVkIGluIHNyYy9pbmRleC5jc3NcbiAqIFxuICogVGhyZWUtTGF5ZXIgQ1NTIEFyY2hpdGVjdHVyZTpcbiAqIDEuIEJyYW5kIEZvdW5kYXRpb24gKGluZGV4LmNzcykgLSBHbG9iYWwgdmFyaWFibGVzIGFuZCB0eXBvZ3JhcGh5XG4gKiAyLiBDb21wb25lbnQgRW5oYW5jZW1lbnQgKHRoaXMgZmlsZSkgLSBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGVzXG4gKiAzLiBQYWdlIEN1c3RvbWl6YXRpb24gKHZpYSBzdHlsZXMgcHJvcCkgLSBQYWdlLWxldmVsIG92ZXJyaWRlc1xuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU0hPV0NBU0UgSVRFTSAtIE1BSU4gQ09OVEFJTkVSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBTaG93Y2FzZSBJdGVtIENvbnRhaW5lclxuICogLSBCYXNlIGNvbnRhaW5lciBmb3Igc2hvd2Nhc2UgaXRlbXNcbiAqIC0gUmV0dXJucyBkaXYsIG5vdCBzZWN0aW9uIChTZWN0aW9uIFBhdHRlcm4gY29tcGxpYW5jZSlcbiAqIC0gU3VwcG9ydHMgZ3JpZCBhbmQgaG9yaXpvbnRhbCBsYXlvdXRzXG4gKi9cbi5zaG93Y2FzZS1pdGVtIHtcbiAgLyogQ29tcG9uZW50IHN0cnVjdHVyZSAqL1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiAqL1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi8qIEdyaWQgbGF5b3V0IHZhcmlhbnQgKi9cbi5zaG93Y2FzZS1pdGVtLWdyaWQge1xuICAvKiBHcmlkLXNwZWNpZmljIGFkanVzdG1lbnRzIGlmIG5lZWRlZCAqL1xufVxuXG4vKiBIb3Jpem9udGFsIGxheW91dCB2YXJpYW50ICovXG4uc2hvd2Nhc2UtaXRlbS1ob3Jpem9udGFsIC5zaG93Y2FzZS1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc2hvd2Nhc2UtaXRlbS1ob3Jpem9udGFsIC5zaG93Y2FzZS1jYXJkIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTSE9XQ0FTRSBDQVJEIC0gQ09OVEVOVCBDT05UQUlORVJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFNob3djYXNlIENhcmRcbiAqIC0gTWFpbiBjb250ZW50IGNvbnRhaW5lciB3aXRoIGJyYW5kLWNvbXBsaWFudCBzdHlsaW5nXG4gKiAtIFVzZXMgQ1NTIHZhcmlhYmxlcyBmb3IgYWxsIHZhbHVlc1xuICovXG4uc2hvd2Nhc2UtY2FyZCB7XG4gIC8qIFNwYWNpbmcgdXNpbmcgQ1NTIHZhcmlhYmxlcyAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgbWFyZ2luOiAwO1xuICBcbiAgLyogQm9yZGVyIGFuZCByYWRpdXMgdXNpbmcgdmFyaWFibGVzICovXG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgXG4gIC8qIEJhY2tncm91bmQgYW5kIGNvbG9ycyAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbiAgXG4gIC8qIFNtb290aCB0cmFuc2l0aW9ucyAqL1xuICB0cmFuc2l0aW9uOiBcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCksXG4gICAgYm94LXNoYWRvdyB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpLFxuICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBcbiAgLyogTGF5b3V0ICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgXG4gIC8qIFN1YnRsZSBzaGFkb3cgZm9yIGRlcHRoICovXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4vKiBTbWFsbCBzaXplIHZhcmlhbnQgLSBjb21wYWN0IGZvciBncmlkIGxheW91dHMgKi9cbi5zaG93Y2FzZS1jYXJkLXNtIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG59XG5cbi8qIFNtYWxsIGNhcmQgdGl0bGUgYW5kIHRleHQgYWRqdXN0bWVudHMgKi9cbi5zaG93Y2FzZS1jYXJkLXNtIC5zaG93Y2FzZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbn1cblxuLnNob3djYXNlLWNhcmQtc20gLnNob3djYXNlLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qIFNtYWxsIGNhcmQgaGVhZGVyIHNwYWNpbmcgKi9cbi5zaG93Y2FzZS1jYXJkLXNtIC5zaG93Y2FzZS1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogU21hbGwgY2FyZCBpY29uIHNpemluZyAqL1xuLnNob3djYXNlLWNhcmQtc20gLnNob3djYXNlLWljb24gc3ZnIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbn1cblxuLyogTGFyZ2Ugc2l6ZSB2YXJpYW50IC0gZXhwYW5zaXZlIGZvciBmZWF0dXJlZCBjb250ZW50ICovXG4uc2hvd2Nhc2UtY2FyZC1sZyB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbn1cblxuLyogTGFyZ2UgY2FyZCB0aXRsZSBhbmQgdGV4dCBhZGp1c3RtZW50cyAqL1xuLnNob3djYXNlLWNhcmQtbGcgLnNob3djYXNlLXRpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbn1cblxuLnNob3djYXNlLWNhcmQtbGcgLnNob3djYXNlLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vKiBMYXJnZSBjYXJkIGhlYWRlciBzcGFjaW5nICovXG4uc2hvd2Nhc2UtY2FyZC1sZyAuc2hvd2Nhc2UtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtOCk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIExhcmdlIGNhcmQgaWNvbiBzaXppbmcgKi9cbi5zaG93Y2FzZS1jYXJkLWxnIC5zaG93Y2FzZS1pY29uIHN2ZyB7XG4gIHdpZHRoOiAzLjVyZW07XG4gIGhlaWdodDogMy41cmVtO1xufVxuXG4vKiBIb3ZlciBzdGF0ZSAqL1xuLnNob3djYXNlLWNhcmQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZC1ob3ZlcikpO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLyogQWN0aXZlIHN0YXRlICovXG4uc2hvd2Nhc2UtY2FyZDphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xufVxuXG4vKiBNb2JpbGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgfVxuICBcbiAgLyogU2l6ZSB2YXJpYW50IGFkanVzdG1lbnRzIGZvciBtb2JpbGUgKi9cbiAgLnNob3djYXNlLWNhcmQtc20ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAuc2hvd2Nhc2UtY2FyZC1sZyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNyk7XG4gIH1cbiAgXG4gIC8qIEhlcml0YWdlIGNhcmQgcGFkZGluZyBhZGp1c3RtZW50IGZvciBtb2JpbGUgKi9cbiAgLnNob3djYXNlLWl0ZW0taGVyaXRhZ2UgLnNob3djYXNlLWNhcmQsXG4gIC5zaG93Y2FzZS1jYXJkLWhlcml0YWdlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtNikgKyB2YXIoLS1zcGFjZS0xKSk7XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLXNtLFxuICAuc2hvd2Nhc2UtY2FyZC1oZXJpdGFnZS5zaG93Y2FzZS1jYXJkLXNtIHtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtNCkgKyB2YXIoLS1zcGFjZS0xKSk7XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLWxnLFxuICAuc2hvd2Nhc2UtY2FyZC1oZXJpdGFnZS5zaG93Y2FzZS1jYXJkLWxnIHtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtNykgKyB2YXIoLS1zcGFjZS0xKSk7XG4gIH1cbn1cblxuLyogVGFibGV0IGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnNob3djYXNlLWNhcmQge1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjI1KTtcbiAgfVxuICBcbiAgLyogSGVyaXRhZ2UgY2FyZCBwYWRkaW5nIGFkanVzdG1lbnQgZm9yIHRhYmxldCAqL1xuICAuc2hvd2Nhc2UtaXRlbS1oZXJpdGFnZSAuc2hvd2Nhc2UtY2FyZCxcbiAgLnNob3djYXNlLWNhcmQtaGVyaXRhZ2Uge1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMjUgKyB2YXIoLS1zcGFjZS0xKSk7XG4gIH1cbn1cblxuLyogRGVza3RvcCBlbmhhbmNlbWVudHMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnNob3djYXNlLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVSSVRBR0UgVkFSSUFOVCAtIDEwJSBSVUxFIENPTVBMSUFOQ0VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEhlcml0YWdlIFZhcmlhbnQgQ29udGFpbmVyXG4gKiAtIENvbnRhaW5lciBoYXMgTk8gZXh0ZXJuYWwgbWFyZ2luIChhbGlnbnMgd2l0aCByZWd1bGFyIGNvbnRhaW5lcnMpXG4gKiAtIE9ubHkgdGhlIGNhcmQgZ2V0cyBoZXJpdGFnZSBzdHlsaW5nXG4gKi9cbi5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIHtcbiAgLyogTk8gZXh0ZXJuYWwgbWFyZ2luIC0gY29udGFpbmVycyBhbGlnbiBhdCB0aGUgdG9wICovXG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuXG4vKipcbiAqIEhlcml0YWdlIFZhcmlhbnQgQ2FyZFxuICogLSBPbmx5IGFkZHMgaGVyaXRhZ2UgYm9yZGVyIGFjY2VudFxuICogLSBBbGwgb3RoZXIgc3R5bGluZyBpbmhlcml0ZWQgZnJvbSBiYXNlIC5zaG93Y2FzZS1jYXJkXG4gKi9cbi5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLFxuLnNob3djYXNlLWNhcmQtaGVyaXRhZ2Uge1xuICAvKiBIZXJpdGFnZSBhY2NlbnQgdXNpbmcgc2hhZG93IGZvciBsZWZ0IGJvcmRlciAqL1xuICAvKiBBZGRzIDRweCBpbnNldCBzaGFkb3cgb24gbGVmdCBzaWRlIHdpdGggaGVyaXRhZ2UgcmVkIGNvbG9yICovXG4gIGJveC1zaGFkb3c6IGluc2V0IDRweCAwIDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBcbiAgLyogU2xpZ2h0IHBhZGRpbmcgYWRqdXN0bWVudCBmb3IgdmlzdWFsIGJvcmRlciBjb21wZW5zYXRpb24gKi9cbiAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLTgpICsgdmFyKC0tc3BhY2UtMSkpO1xufVxuXG4vKiBIZXJpdGFnZSB3aXRoIHNtYWxsIHNpemUgKi9cbi5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkLXNtLFxuLnNob3djYXNlLWNhcmQtaGVyaXRhZ2Uuc2hvd2Nhc2UtY2FyZC1zbSB7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS01KSArIHZhcigtLXNwYWNlLTEpKTtcbn1cblxuLyogSGVyaXRhZ2Ugd2l0aCBsYXJnZSBzaXplICovXG4uc2hvd2Nhc2UtaXRlbS1oZXJpdGFnZSAuc2hvd2Nhc2UtY2FyZC1sZyxcbi5zaG93Y2FzZS1jYXJkLWhlcml0YWdlLnNob3djYXNlLWNhcmQtbGcge1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtMTApICsgdmFyKC0tc3BhY2UtMSkpO1xufVxuXG4vKiBIZXJpdGFnZSBDVEEgYnV0dG9uIHN0eWxpbmcgKi9cbi5zaG93Y2FzZS1jdGEtaGVyaXRhZ2Uge1xuICAvKiBFbnN1cmUgcHJvcGVyIGhlcml0YWdlIHN0eWxpbmcgKi9cbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIFxuICAvKiBTdGFuZGFyZCBwYWRkaW5nIC0gbm8gZXh0cmEgc3BhY2luZyAqL1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5zaG93Y2FzZS1jdGEtaGVyaXRhZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLWRhcmspKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNIT1dDQVNFIEhFQURFUiAtIElDT04gQU5EIFRJVExFIFNFQ1RJT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hvd2Nhc2UtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBMZWZ0IHNpZGUgb2YgaGVhZGVyIC0gaWNvbiBhbmQgZGV0YWlscyAqL1xuLnNob3djYXNlLWhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDsgLyogQWxsb3cgdGV4dCB0cnVuY2F0aW9uICovXG59XG5cbi8qIEljb24gc3R5bGluZyAtIGhhbmRsZWQgYnkgYnJhbmRlZCBjb250YWluZXIgc3lzdGVtICovXG4uc2hvd2Nhc2UtaWNvbiB7XG4gIC8qIEFkZGl0aW9uYWwgaWNvbiBhZGp1c3RtZW50cyBpZiBuZWVkZWQgKi9cbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEl0ZW0gZGV0YWlscyBjb250YWluZXIgKi9cbi5zaG93Y2FzZS1pdGVtLWRldGFpbHMge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8qIFByZXZlbnQgdGV4dCBvdmVyZmxvdyAqL1xufVxuXG4vKiBUaXRsZSAtIHVzZXMgZ2xvYmFsIHRpdGxlLWNhcmQgY2xhc3MgKi9cbi5zaG93Y2FzZS10aXRsZSB7XG4gIC8qIENvbXBvbmVudCBlbmhhbmNlbWVudCBvbmx5ICovXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBUYWdsaW5lIC0gdXNlcyBnbG9iYWwgZGVzY3JpcHRpb24gY2xhc3MgKi9cbi5zaG93Y2FzZS10YWdsaW5lIHtcbiAgLyogQ29tcG9uZW50IGVuaGFuY2VtZW50IG9ubHkgKi9cbiAgbWFyZ2luOiAwO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU0hPV0NBU0UgQ09OVEVOVCBTRUNUSU9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE1haW4gY29udGVudCBjb250YWluZXIgKi9cbi5zaG93Y2FzZS1pdGVtLWNvbnRlbnQge1xuICAvKiBDb250ZW50IHNwYWNpbmcgKi9cbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIEhlYWRsaW5lICovXG4uc2hvd2Nhc2UtaGVhZGxpbmUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogRGVzY3JpcHRpb24gLSB1c2VzIGdsb2JhbCBkZXNjcmlwdGlvbiBjbGFzcyAqL1xuLnNob3djYXNlLWRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIFByaWNpbmcgc2VjdGlvbiByZW1vdmVkIC0gbm8gbG9uZ2VyIHN1cHBvcnRlZCAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNUQVRTIFNFQ1RJT04gLSBOb3cgdXNlcyBNZXRyaWNzQ2FyZCBjb21wb25lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hvd2Nhc2Utc3RhdHMge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIDA7XG59XG5cbi8qIENlbnRlcmVkIGNvbnRhaW5lciBmb3Igc3RhdHMgKi9cbi5zaG93Y2FzZS1zdGF0cy1jZW50ZXJlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLyogSG9yaXpvbnRhbCAzeDEgZ3JpZCBsYXlvdXQgZm9yIG1ldHJpY3MgKi9cbi5zaG93Y2FzZS1zdGF0cy1ncmlkLWhvcml6b250YWwge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMTUwcHgsIDIwMHB4KSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXgtd2lkdGg6IDcwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLyogU21hbGwgY2FyZCBzdGF0cyBncmlkIC0gY29tcGFjdCBjb2x1bW5zICovXG4uc2hvd2Nhc2UtY2FyZC1zbSAuc2hvd2Nhc2Utc3RhdHMtZ3JpZC1ob3Jpem9udGFsIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDEwMHB4LCAxNTBweCkpO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xufVxuXG4vKiBMYXJnZSBjYXJkIHN0YXRzIGdyaWQgLSBleHBhbmRlZCBjb2x1bW5zICovXG4uc2hvd2Nhc2UtY2FyZC1sZyAuc2hvd2Nhc2Utc3RhdHMtZ3JpZC1ob3Jpem9udGFsIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDE4MHB4LCAyNTBweCkpO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICBtYXgtd2lkdGg6IDkwMHB4O1xufVxuXG4vKiBMZWdhY3kgZ3JpZCBsYXlvdXQgKGtlZXBpbmcgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICovXG4uc2hvd2Nhc2Utc3RhdHMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNob3djYXNlLXN0YXRzLWdyaWQtaG9yaXpvbnRhbCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLnNob3djYXNlLXN0YXRzLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbn1cblxuLyogTWV0cmljc0NhcmQgY29tcG9uZW50cyBoYW5kbGUgdGhlaXIgb3duIGludGVybmFsIHN0eWxpbmcgKi9cbi8qIE9sZCBzdGF0LXNwZWNpZmljIGNsYXNzZXMgcmVtb3ZlZCBpbiBmYXZvciBvZiBNZXRyaWNzQ2FyZCAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJFTkVGSVRTIFNFQ1RJT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hvd2Nhc2UtYmVuZWZpdHMge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIDA7XG59XG5cbi5zaG93Y2FzZS1iZW5lZml0cy10aXRsZSB7XG4gIC8qIFVzZXMgdGl0bGUtY2FyZCBnbG9iYWwgY2xhc3MgKi9cbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5zaG93Y2FzZS1iZW5lZml0cy1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uc2hvd2Nhc2UtYmVuZWZpdCB7XG4gIC8qIFVzZXMgZGVzY3JpcHRpb24gZ2xvYmFsIGNsYXNzICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLnNob3djYXNlLWJlbmVmaXQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi4pyTXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRk9PVEVSIFNFQ1RJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNob3djYXNlLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXRvcDogMDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zaG93Y2FzZS1mb290ZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG4uc2hvd2Nhc2UtYXVkaWVuY2Uge1xuICBmbGV4OiAxO1xufVxuXG4uc2hvd2Nhc2UtYXVkaWVuY2UtbGFiZWwge1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xKTtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4uc2hvd2Nhc2UtYXVkaWVuY2UtdGV4dCB7XG4gIC8qIFVzZXMgZGVzY3JpcHRpb24gZ2xvYmFsIGNsYXNzICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ1RBIFNFQ1RJT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hvd2Nhc2UtY3RhIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIFxuICAvKiBEZWZhdWx0IENUQSBzdHlsaW5nICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIFxuICAvKiBUb3VjaCB0YXJnZXQgb3B0aW1pemF0aW9uICovXG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICBcbiAgLyogVHJhbnNpdGlvbnMgKi9cbiAgdHJhbnNpdGlvbjogXG4gICAgY29sb3IgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKSxcbiAgICB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIFBvc2l0aW9uaW5nICovXG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4vKiBTbWFsbCBjYXJkIENUQSBhZGp1c3RtZW50cyAqL1xuLnNob3djYXNlLWNhcmQtc20gLnNob3djYXNlLWN0YSB7XG4gIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbn1cblxuLyogTGFyZ2UgY2FyZCBDVEEgYWRqdXN0bWVudHMgKi9cbi5zaG93Y2FzZS1jYXJkLWxnIC5zaG93Y2FzZS1jdGEge1xuICBtaW4taGVpZ2h0OiA1MnB4O1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS01KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG4uc2hvd2Nhc2UtY3RhOmhvdmVyIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG59XG5cbi8qIENUQSBpY29uIGhhbmRsZWQgYnkgYnJhbmRlZCBjb250YWluZXIgKi9cbi5zaG93Y2FzZS1jdGEtaWNvbiB7XG4gIC8qIFNtb290aCB0cmFuc2l0aW9uIGZvciBob3ZlciBlZmZlY3RzICovXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICAvKiBFbnN1cmUgcHJvcGVyIHZlcnRpY2FsIGFsaWdubWVudCB3aXRoIGZsZXhib3ggcGFyZW50ICovXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRocmVlLUxheWVyIEFyY2hpdGVjdHVyZTogQ29tcG9uZW50IEVuaGFuY2VtZW50IExheWVyIE92ZXJyaWRlICovXG4vKiBFbnN1cmUgaWNvbi1zbSBjbGFzcyBkb2Vzbid0IGFwcGx5IGNvbnRhaW5lciBzdHlsZXMgZnJvbSBCcmFuZCBGb3VuZGF0aW9uIExheWVyICovXG4uc2hvd2Nhc2UtY3RhLWljb24uaWNvbi1zbSB7XG4gIC8qIE92ZXJyaWRlIGFueSBjb250YWluZXIgc3R5bGVzIGZyb20gaW5kZXguY3NzICovXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLyogTWFpbnRhaW4gcHJvcGVyIGljb24gc2l6aW5nICovXG4gIHdpZHRoOiAxLjI1cmVtOyAgLyogMjBweCAtIGljb24gc2l6ZSwgbm90IGNvbnRhaW5lciBzaXplICovXG4gIGhlaWdodDogMS4yNXJlbTtcbiAgLyogRW5zdXJlIG5vIGZsZXggY29udGFpbmVyIGJlaGF2aW9yICovXG4gIGFsaWduLWl0ZW1zOiBpbml0aWFsO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7XG4gIC8qIEFsaWduIHdpdGggdGV4dCBiYXNlbGluZSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uc2hvd2Nhc2UtY3RhOmhvdmVyIC5zaG93Y2FzZS1jdGEtaWNvbiB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBNb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc2hvd2Nhc2UtaXRlbSB7XG4gICAgLyogTW9iaWxlIG9wdGltaXphdGlvbnMgKi9cbiAgICBmb250LXNpemU6IDAuOTVyZW07XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1oZWFkZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLnNob3djYXNlLWhlYWRlci1sZWZ0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbiAgXG4gIC8qIFByaWNpbmcgcmVtb3ZlZCAtIG5vIGxvbmdlciBzdXBwb3J0ZWQgKi9cbiAgXG4gIC5zaG93Y2FzZS1jdGEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbi8qIFRhYmxldCBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5zaG93Y2FzZS1pdGVtIHtcbiAgICAvKiBUYWJsZXQgb3B0aW1pemF0aW9ucyAqL1xuICB9XG59XG5cbi8qIERlc2t0b3AgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5zaG93Y2FzZS1pdGVtIHtcbiAgICAvKiBEZXNrdG9wIG9wdGltaXphdGlvbnMgKi9cbiAgfVxuICBcbiAgLyogTWF4IHdpZHRoIGZvciByZWFkYWJpbGl0eSAqL1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi8qIEhpZ2gtcmVzb2x1dGlvbiBkaXNwbGF5cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDE5MjBweCkge1xuICAuc2hvd2Nhc2UtY2FyZCB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQRVJGT1JNQU5DRSBPUFRJTUlaQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbmltYXRpb25zICovXG4uc2hvd2Nhc2UtaXRlbSxcbi5zaG93Y2FzZS1jYXJkIHtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLnNob3djYXNlLWl0ZW06bm90KDpob3ZlciksXG4uc2hvd2Nhc2UtY2FyZDpub3QoOmhvdmVyKSB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBSZWR1Y2UgbW90aW9uIGZvciBhY2Nlc3NpYmlsaXR5ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuc2hvd2Nhc2UtaXRlbSxcbiAgLnNob3djYXNlLWNhcmQsXG4gIC5zaG93Y2FzZS1jdGEsXG4gIC5zaG93Y2FzZS1jdGEtaWNvbiB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnNob3djYXNlLWNhcmQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1pdGVtLWhlcml0YWdlIC5zaG93Y2FzZS1jYXJkIHtcbiAgICBvdXRsaW5lLXdpZHRoOiAzcHg7XG4gIH1cbiAgXG4gIC5zaG93Y2FzZS1jdGEtaGVyaXRhZ2Uge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgfVxufSIsIi8qIFNvbHV0aW9uIExpc3RpbmcgLSBFbnRlcnByaXNlIEIyQiBJbXBsZW1lbnRhdGlvbiAqL1xuXG4vKiBFbnRlcnByaXNlIHNvbHV0aW9uIGNhcmRzICovXG4uc29sdXRpb24tY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1ib3JkZXIpLCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSBlYXNlLW91dDtcbn1cblxuLnNvbHV0aW9uLWNhcmQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSksIDAuMyk7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5zb2x1dGlvbi1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4uc29sdXRpb24taGVhZGVyIC50aXRsZS1jYXJkIHtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwIHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5zb2x1dGlvbi1oZWFkZXIgLnN1YnRpdGxlLWxnIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi8qIFNvbHV0aW9uIGJlbmVmaXRzICovXG4uc29sdXRpb24tYmVuZWZpdHMge1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIDA7XG59XG5cbi5iZW5lZml0LWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDAgMCAwO1xufVxuXG4uYmVuZWZpdC1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSAwO1xufVxuXG4uYmVuZWZpdC1pdGVtOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBTb2x1dGlvbiBtZXRyaWNzICovXG4uc29sdXRpb24tbWV0cmljcyB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLm1ldHJpY3MtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4ubWV0cmljLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSwgMC4wMik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG59XG5cbi5tZXRyaWMtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi5tZXRyaWMtY29udGVudCAudGl0bGUtY2FyZCB7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi5tZXRyaWMtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qIFNvbHV0aW9uIG1hdHJpeCBsYXlvdXQgKi9cbi5zb2x1dGlvbi1tYXRyaXgge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtOCk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuc29sdXRpb24tbWF0cml4IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICB9XG59XG5cbi8qIEhlcm8gc3RhdHMgbGF5b3V0ICovXG4uaGVyby1zdGF0cyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTgpIDA7XG59XG5cbi5zdGF0LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5zdGF0LWl0ZW0gLnRpdGxlLWNhcmQge1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xufVxuXG4vKiBIZXJvIGFjdGlvbnMgKi9cbi5oZXJvLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5oZXJvLWFjdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLyogQ2hhbGxlbmdlIGNhcmRzICovXG4uY2hhbGxlbmdlLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5jaGFsbGVuZ2UtaW1wYWN0IHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5pbXBhY3QtbWV0cmljIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3Itd2FybmluZyksIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG59XG5cbi8qIEZBUSBlbnRlcnByaXNlIHN0eWxpbmcgKi9cbi5mYXEtZW50ZXJwcmlzZSB7XG4gIG1heC13aWR0aDogODAwcHg7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtOCkgYXV0byAwO1xufVxuXG4uZmFxLWl0ZW0ge1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLWJvcmRlciksIDAuMik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZmFxLXF1ZXN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItbXV0ZWQpLCAwLjAyKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmZhcS1xdWVzdGlvbjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5xdWVzdGlvbi1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4ucXVlc3Rpb24tY29udGVudCAuc3VidGl0bGUtbGcge1xuICBtYXJnaW46IDA7XG4gIGZsZXg6IDE7XG59XG5cbi5iYWRnZS1oZXJpdGFnZSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbWFsbCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBmb250LXdlaWdodDogNjAwO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZmFxLWNoZXZyb24ge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIGVhc2Utb3V0O1xufVxuXG4uZmFxLWl0ZW1bb3Blbl0gLmZhcS1jaGV2cm9uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLmZhcS1hbnN3ZXIge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSwgMC4xKTtcbn1cblxuLmZhcS1hbnN3ZXIgLmRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luOiAwO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4vKiBGaW5hbCBDVEEgZW50ZXJwcmlzZSAqL1xuLmZpbmFsLWN0YS1lbnRlcnByaXNlIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtOCkgMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmZpbmFsLWN0YS1lbnRlcnByaXNlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG59XG5cbi5jdGEtcHJpbWFyeSxcbi5jdGEtc2Vjb25kYXJ5LFxuLmN0YS10ZXJ0aWFyeSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5jdGEtZGV0YWlscyB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc21hbGwpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgbWF4LXdpZHRoOiAyNTBweDtcbn1cblxuLyogRW50ZXJwcmlzZSBhc3N1cmFuY2UgaXRlbXMgKi9cbi5jdGEtYXNzdXJhbmNlIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTIpO1xufVxuXG4uYXNzdXJhbmNlLWl0ZW1zIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTgpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmFzc3VyYW5jZS1pdGVtcyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgfVxufVxuXG4uYXNzdXJhbmNlLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcyksIDAuMDIpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpLCAwLjEpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uYXNzdXJhbmNlLWNvbnRlbnQgLnN1YnRpdGxlLWxnIHtcbiAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtMikgMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG59XG5cbi5hc3N1cmFuY2UtY29udGVudCAuZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNvbHV0aW9uLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICB9XG4gIFxuICAuaGVyby1zdGF0cyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLm1ldHJpY3MtZ3JpZCB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLm1ldHJpYy1pdGVtIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuICBcbiAgLmZhcS1xdWVzdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC5mYXEtYW5zd2VyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuICBcbiAgLnF1ZXN0aW9uLWNvbnRlbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuICBcbiAgLmJhZGdlLWhlcml0YWdlIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICB9XG4gIFxuICAuYXNzdXJhbmNlLWl0ZW0ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi8qIEhlcml0YWdlIHJlZCBjb21wbGlhbmNlIGZvciBlbnRlcnByaXNlIENUQXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAvKiBNb2JpbGU6IE1heGltdW0gMSBoZXJpdGFnZSBlbGVtZW50IHBlciB2aWV3cG9ydCAqL1xuICAuYnRuLWhlcml0YWdlIHtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTgpIGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXNwYWNlLTgpKTtcbiAgICBtYXgtd2lkdGg6IDMyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAvKiBEZXNrdG9wOiBNYXhpbXVtIDIgaGVyaXRhZ2UgZWxlbWVudHMgcGVyIHZpZXdwb3J0ICovXG4gIC5idG4taGVyaXRhZ2Uge1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgYXV0bztcbiAgfVxufVxuXG4vKiBFeHRyYSBzcGFjaW5nIGFyb3VuZCBoZXJpdGFnZSByZWQgZWxlbWVudHMgKi9cbi5idG4taGVyaXRhZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5idG4taGVyaXRhZ2U6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygtMSAqIHZhcigtLXNwYWNlLTYpKTtcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLXNwYWNlLTYpKTtcbiAgcmlnaHQ6IGNhbGMoLTEgKiB2YXIoLS1zcGFjZS02KSk7XG4gIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLXNwYWNlLTYpKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59IiwiLyogU3BlY2lmaWNhdGlvblRhYmxlIENvbXBvbmVudCBTdHlsZXMgKi9cblxuLnNwZWMtdGFibGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLnNwZWMtdGFibGUtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLXRleHQteGwpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnNwZWMtdGFibGUtd3JhcHBlciB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNwZWMtdGFibGUtY29udGVudCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG4uc3BlYy10YWJsZS10aGVhZCB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdXJmYWNlKSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG59XG5cbi5zcGVjLXRhYmxlLWhlYWRlci1jZWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5KSk7XG59XG5cbi5zcGVjLXRhYmxlLXRib2R5IHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbn1cblxuLnNwZWMtdGFibGUtcm93IHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aW1pbmctZmFzdCk7XG59XG5cbi5zcGVjLXRhYmxlLXJvdzpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLnNwZWMtdGFibGUtcm93OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDIpO1xufVxuXG4uc3BlYy10YWJsZS1jZWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpKTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLyogTmFtZSBjZWxscyBzdHlsaW5nICovXG4uc3BlYy10YWJsZS1uYW1lLWNlbGwge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICNjZDVjNWM7XG59XG5cbi8qIFR5cGUgY2VsbHMgc3R5bGluZyAqL1xuLnNwZWMtdGFibGUtdHlwZS1jZWxsIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogUmVxdWlyZWQvT3B0aW9uYWwgYmFkZ2VzICovXG4uc3BlYy10YWJsZS1iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLnNwZWMtdGFibGUtcmVxdWlyZWQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDIyMCwgMzgsIDM4LCAwLjEpO1xuICBjb2xvcjogcmdiKDIyMCwgMzgsIDM4KTtcbn1cblxuLnNwZWMtdGFibGUtb3B0aW9uYWwge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEwNywgMTE0LCAxMjgsIDAuMSk7XG4gIGNvbG9yOiByZ2IoMTA3LCAxMTQsIDEyOCk7XG59XG5cbi8qIEVtcHR5IHN0YXRlICovXG4uc3BlYy10YWJsZS1lbXB0eSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zcGVjLXRhYmxlLWVtcHR5LW1lc3NhZ2Uge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7XG59XG5cbi8qIFR5cGUtc3BlY2lmaWMgc3R5bGluZyAqL1xuLnNwZWMtdGFibGUtdHlwZS1pbnB1dHMgLnNwZWMtdGFibGUtbmFtZS1jZWxsIHtcbiAgY29sb3I6ICNjZDVjNWM7XG59XG5cbi5zcGVjLXRhYmxlLXR5cGUtb3V0cHV0cyAuc3BlYy10YWJsZS1uYW1lLWNlbGwge1xuICBjb2xvcjogIzIyYzU1ZTtcbn1cblxuLnNwZWMtdGFibGUtdHlwZS1jb25maWd1cmF0aW9uIC5zcGVjLXRhYmxlLW5hbWUtY2VsbCB7XG4gIGNvbG9yOiAjM2I4MmY2O1xufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5zcGVjLXRhYmxlLW1vYmlsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRleHQtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtY29udGVudCB7XG4gICAgbWluLXdpZHRoOiA1MDBweDtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtaGVhZGVyLWNlbGwsXG4gIC5zcGVjLXRhYmxlLWNlbGwge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTMpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLXR5cGUtY2VsbCB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLWJhZGdlIHtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgfVxufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgLnNwZWMtdGFibGUtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQtZGFyaykpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlci1kYXJrKSk7XG4gIH1cbiAgXG4gIC5zcGVjLXRhYmxlLXRoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VyZmFjZS1kYXJrKSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYm9yZGVyLWRhcmspKTtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtcm93IHtcbiAgICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXItZGFyaykpO1xuICB9XG4gIFxuICAuc3BlYy10YWJsZS1yb3c6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjA1KTtcbiAgfVxuICBcbiAgLnNwZWMtdGFibGUtdHlwZS1jZWxsIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbiAgfVxufVxuXG4vKiBTY3JvbGxiYXIgc3R5bGluZyBmb3Igd2lkZSB0YWJsZXMgKi9cbi5zcGVjLXRhYmxlLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4xKTtcbn1cblxuLnNwZWMtdGFibGUtd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi5zcGVjLXRhYmxlLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjUpO1xufSIsIi8qKlxuICogU3RvcnlDYXJkIENvbXBvbmVudCBTdHlsZXNcbiAqIFxuICogVGhyZWUtTGF5ZXIgQ1NTIEFyY2hpdGVjdHVyZTpcbiAqIC0gTGF5ZXIgMSAoQnJhbmQgRm91bmRhdGlvbik6IFVzZXMgQ1NTIHZhcmlhYmxlcyBmcm9tIHNyYy9pbmRleC5jc3NcbiAqIC0gTGF5ZXIgMiAoQ29tcG9uZW50IEVuaGFuY2VtZW50KTogVGhpcyBmaWxlIC0gY29tcG9uZW50LXNwZWNpZmljIHN0eWxlc1xuICogLSBMYXllciAzIChQYWdlIEN1c3RvbWl6YXRpb24pOiBPdmVycmlkZSB2aWEgc3R5bGVzIHByb3AgaW4gUmVhY3QgY29tcG9uZW50c1xuICogXG4gKiBIZXJpdGFnZSBSZWQgVXNhZ2U6IE1heGltdW0gT05FIHJlZCBlbGVtZW50IHBlciBjb21wb25lbnQgKDEwJSBydWxlIGNvbXBsaWFuY2UpXG4gKiAtIEFwcGxpZWQgb25seSB0byBmZWF0dXJlZCBzdG9yeSBhY2NlbnQgYm9yZGVyXG4gKiAtIDI1LTM1JSBleHRyYSBzcGFjaW5nIGZvciBoZXJpdGFnZSBlbGVtZW50c1xuICovXG5cbi8qIFN0b3J5IGhlYWRlciBsYXlvdXQgd2l0aGluIGNhcmRzICovXG4uc3RvcnktaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7IC8qIFJlZHVjZWQgbWFyZ2luIGZvciBjb21wYWN0IGRlc2lnbiAqL1xufVxuXG4vKiBJbmRpdmlkdWFsIHN0b3J5IGNhcmRzIC0gTW9kZXJuIGJvcmRlcmxlc3MgZGVzaWduIHdpdGggZWxldmF0aW9uICovXG4uc3RvcnktYXJ0aWNsZSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG4gIGJvcmRlcjogMDsgLyogQ2xlYW4sIGJvcmRlcmxlc3MgZGVzaWduICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBTdWJ0bGUgYmFzZSBlbGV2YXRpb24gKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNSkgdmFyKC0tc3BhY2UtOCk7IC8qIE9wdGltaXplZCBwYWRkaW5nIGZvciByZWN0YW5ndWxhciBsYXlvdXQgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLyogRXF1YWwgaGVpZ2h0IGluIGdyaWRzIC0gbWF0Y2hlcyBUZXN0aW1vbmlhbENhcmQgYXBwcm9hY2ggKi9cbiAgaGVpZ2h0OiAxMDAlO1xuICBcbiAgLyogU21vb3RoIGhvdmVyIGludGVyYWN0aW9uIGZvbGxvd2luZyBzdHlsaW5nIHN0YW5kYXJkICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5zdG9yeS1hcnRpY2xlOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOyAvKiBMaWZ0IGVmZmVjdCAqL1xuICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7IC8qIEVuaGFuY2VkIGVsZXZhdGlvbiBvbiBob3ZlciAqL1xufVxuXG4uc3RvcnktYXJ0aWNsZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IC8qIFByZXNzZWQgc3RhdGUgKi9cbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7IC8qIFJlZHVjZWQgZWxldmF0aW9uIHdoZW4gcHJlc3NlZCAqL1xufVxuXG4vKiBGZWF0dXJlZCBzdG9yeSB3aXRoIGhlcml0YWdlIHJlZCBhY2NlbnQgLSBCb3JkZXJsZXNzIGRlc2lnbiAqL1xuLnN0b3J5LWFydGljbGUuc3RvcnktZmVhdHVyZWQge1xuICAvKiBPTkxZIGNvbG9yIGNoYW5nZXMgLSBOTyBzdHJ1Y3R1cmFsIGNoYW5nZXMgKGZvbGxvd2luZyBUZXN0aW1vbmlhbENhcmQgcGF0dGVybikgKi9cbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMik7IC8qIFN1YnRsZSBoZXJpdGFnZSB0aW50ICovXG4gIGJvcmRlcjogMDsgLyogTm8gYm9yZGVycyAqL1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIGluc2V0IHNoYWRvdyBpbnN0ZWFkIG9mIGJvcmRlciAqL1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSwgLyogTGVmdCBhY2NlbnQgKi9cbiAgICAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogQmFzZSBlbGV2YXRpb24gKi9cbn1cblxuLyogRmVhdHVyZWQgc3RvcnkgaG92ZXIgLSBlbmhhbmNlZCBlbGV2YXRpb24gKi9cbi5zdG9yeS1hcnRpY2xlLnN0b3J5LWZlYXR1cmVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7IC8qIERlZXBlciB0aW50IG9uIGhvdmVyICovXG4gIFxuICAvKiBIZXJpdGFnZSBhY2NlbnQgd2l0aCBpbmNyZWFzZWQgZWxldmF0aW9uICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTsgLyogU2FtZSBlbGV2YXRpb24gYXMgcmVndWxhciBob3ZlciAqL1xufVxuXG4vKiBTdG9yeSBpbWFnZSBoYW5kbGluZyAqL1xuLnN0b3J5LWltYWdlIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zdG9yeS1pbWFnZS1pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4uc3RvcnktYXJ0aWNsZTpob3ZlciAuc3RvcnktaW1hZ2UtaW1nIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbn1cblxuLyogU3RvcnkgY29udGVudCBsYXlvdXQgLSBvcHRpbWl6ZWQgZm9yIHJlY3Rhbmd1bGFyIGRlc2lnbiAqLyAgIFxuLnN0b3J5LWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpOyAvKiBFdmVuIHRpZ2h0ZXIgc3BhY2luZyBmb3IgcmVjdGFuZ3VsYXIgbGF5b3V0ICovXG59XG5cbi8qIFN0b3J5IHRpdGxlIHdpdGggaWNvbiBzdXBwb3J0ICovXG4uc3RvcnktdGl0bGUtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uc3RvcnktY2F0ZWdvcnkge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBUaXRsZSBzdHlsaW5nIGhhbmRsZWQgYnkgZ2xvYmFsIC50aXRsZS1jYXJkIGNsYXNzICovXG5cbi5zdG9yeS1tYWluIHtcbiAgZmxleDogMTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIERlc2NyaXB0aW9uIHN0eWxpbmcgaGFuZGxlZCBieSBnbG9iYWwgLmRlc2NyaXB0aW9uIGNsYXNzICovXG4vKiBBZGRpdGlvbmFsIGxpbmUgY2xhbXBpbmcgZm9yIHN0b3J5IGNhcmRzICovXG4uc3RvcnktbWFpbiAuZGVzY3JpcHRpb24ge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBNYXhpbXVtIDIgbGluZXMgZm9yIG1vcmUgcmVjdGFuZ3VsYXIgcHJvcG9ydGlvbnMgKi9cbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogU3RvcnkgZm9vdGVyIHdpdGggbWV0cmljcyAqL1xuLnN0b3J5LWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG59XG5cbi8qIE1ldHJpY3MgY29udGFpbmVyIC0gaG9yaXpvbnRhbCBsYXlvdXQgd2l0aG91dCBib3JkZXJzICovXG4uc3RvcnktbWV0cmljcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwOyAvKiBGb3JjZSBob3Jpem9udGFsIGxheW91dCAqL1xuICBnYXA6IHZhcigtLXNwYWNlLTIpOyAvKiBUaWdodGVyIGdhcCBmb3IgaG9yaXpvbnRhbCBmbG93ICovXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLyogRXZlbiBkaXN0cmlidXRpb24gYWNyb3NzIHdpZHRoICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyOiAwOyAvKiBObyBib3JkZXJzIGZvciBjbGVhbiBkZXNpZ24gKi9cbiAgb3ZlcmZsb3cteDogYXV0bzsgLyogQWxsb3cgc2Nyb2xsaW5nIG9uIHZlcnkgc21hbGwgc2NyZWVucyAqL1xufVxuXG4vKiBJbmRpdmlkdWFsIG1ldHJpY3MgLSBQdXJlIGNvbG9yIGJhY2tncm91bmRzIHdpdGhvdXQgYm9yZGVycyAqL1xuLnN0b3J5LW1ldHJpYyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpOyAvKiBUaWdodGVyIGdhcCBmb3IgY29tcGFjdCBob3Jpem9udGFsIGxheW91dCAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpIC8gMC4xKTsgLyogU29mdCBiYWNrZ3JvdW5kIGNvbG9yICovXG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0yKTsgLyogTW9yZSBjb21wYWN0IHBhZGRpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgZm9udC1zaXplOiAwLjc1cmVtOyAvKiBTbWFsbGVyIGZvbnQgZm9yIGhvcml6b250YWwgbGF5b3V0ICovXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGJvcmRlcjogMDsgLyogTm8gYm9yZGVycyAqL1xuICBib3gtc2hhZG93OiBub25lOyAvKiBObyBzaGFkb3cgc2ltdWxhdGluZyBib3JkZXJzICovXG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGV4dCB3cmFwcGluZyAqL1xuICBmbGV4LXNocmluazogMDsgLyogUHJldmVudCBzaHJpbmtpbmcgaW4gaG9yaXpvbnRhbCBsYXlvdXQgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi5zdG9yeS1tZXRyaWM6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXN1Y2Nlc3MpIC8gMC4xNSk7IC8qIERlZXBlciBjb2xvciBvbiBob3ZlciAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IC8qIFN1YnRsZSBsaWZ0ICovXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBMaWdodCBlbGV2YXRpb24gb24gaG92ZXIgKi9cbn1cblxuLyogTWV0cmljIHZhcmlhbnRzIC0gQm9yZGVybGVzcyBjb2xvciBzeXN0ZW0gKi9cbi5zdG9yeS1tZXRyaWMubWV0cmljLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG59XG5cbi5zdG9yeS1tZXRyaWMubWV0cmljLXdhcm5pbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xNSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xKTtcbn1cblxuLnN0b3J5LW1ldHJpYy5tZXRyaWMtc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4uc3RvcnktbWV0cmljLm1ldHJpYy1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xNSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xKTtcbn1cblxuLnN0b3J5LW1ldHJpYy5tZXRyaWMtcHJpbWFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLnN0b3J5LW1ldHJpYy5tZXRyaWMtcHJpbWFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkgLyAwLjE1KTtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkgLyAwLjEpO1xufVxuXG4vKiBTdHJvbmcgZW1waGFzaXMgZm9yIG1ldHJpYyB2YWx1ZXMgKi9cbi5zdG9yeS1tZXRyaWMgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLyogSWNvbiBzdHlsaW5nIGZvciBtZXRyaWNzICovXG4ubWV0cmljLWljb24ge1xuICBmbGV4LXNocmluazogMDtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBNb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc3RvcnktaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuICBcbiAgLnN0b3J5LWdyaWQge1xuICAgIG1heC13aWR0aDogMTAwJTsgLyogRnVsbCB3aWR0aCBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLnN0b3J5LWFydGljbGUge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTYpO1xuICAgIC8qIExpZ2h0ZXIgc2hhZG93cyBvbiBtb2JpbGUgZm9yIHBlcmZvcm1hbmNlICovXG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlOmhvdmVyIHtcbiAgICAvKiBMZXNzIGRyYW1hdGljIGxpZnQgb24gbW9iaWxlICovXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgfVxuICBcbiAgLnN0b3J5LXRpdGxlLXdyYXBwZXIge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC5zdG9yeS1pbWFnZS1pbWcge1xuICAgIGhlaWdodDogMTYwcHg7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWNzIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7IC8qIEFsbG93IHdyYXBwaW5nIG9uIG1vYmlsZSAqL1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWMge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0yKTtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpOyAvKiBTbWFsbGVyIGdhcCBvbiBtb2JpbGUgKi9cbiAgICBmbGV4LXNocmluazogMTsgLyogQWxsb3cgc2hyaW5raW5nIG9uIG1vYmlsZSAqL1xuICB9XG4gIFxuICAvKiBFbnN1cmUgYWRlcXVhdGUgdG91Y2ggdGFyZ2V0cyBvbiBtb2JpbGUgKi9cbiAgLnN0b3J5LW1ldHJpYyB7XG4gICAgbWluLWhlaWdodDogMzJweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG5cbi8qIFRhYmxldCByZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyM3B4KSBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnN0b3J5LWdyaWQge1xuICAgIG1heC13aWR0aDogNTAwcHg7IC8qIE1lZGl1bSB3aWR0aCBmb3IgdGFibGV0ICovXG4gIH1cbiAgXG4gIC5zdG9yeS1hcnRpY2xlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS03KTtcbiAgfVxufVxuXG4vKiBMYXJnZSBzY3JlZW4gb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDE0MDBweCkge1xuICAuc3RvcnktZ3JpZCB7XG4gICAgbWF4LXdpZHRoOiA3MDBweDsgLyogTGFyZ2VyIHdpZHRoIGZvciBiaWcgc2NyZWVucyAqL1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnN0b3J5LWFydGljbGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWMge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgfVxuICBcbiAgLnN0b3J5LWFydGljbGUuc3RvcnktZmVhdHVyZWQge1xuICAgIG91dGxpbmUtd2lkdGg6IDNweDtcbiAgfVxufVxuXG4vKiBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuc3RvcnktYXJ0aWNsZSxcbiAgLnN0b3J5LW1ldHJpYyxcbiAgLnN0b3J5LWltYWdlLWltZyB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuICBcbiAgLnN0b3J5LWFydGljbGU6aG92ZXIsXG4gIC5zdG9yeS1tZXRyaWM6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLnN0b3J5LWFydGljbGU6aG92ZXIgLnN0b3J5LWltYWdlLWltZyB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBjb25zaWRlcmF0aW9ucyAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAuc3RvcnktYXJ0aWNsZS5zdG9yeS1mZWF0dXJlZCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wMyk7XG4gIH1cbiAgXG4gIC5zdG9yeS1tZXRyaWMge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcykgLyAwLjE1KTtcbiAgfVxuICBcbiAgLnN0b3J5LW1ldHJpYy5tZXRyaWMtd2FybmluZyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMTUpO1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljLm1ldHJpYy1zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjE1KTtcbiAgfVxuICBcbiAgLnN0b3J5LW1ldHJpYy5tZXRyaWMtcHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSAvIDAuMTUpO1xuICB9XG59XG5cbi8qIEZvY3VzIHN0YXRlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuLnN0b3J5LWFydGljbGU6Zm9jdXMtd2l0aGluIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItZm9jdXMpIC8gMC41KTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogUHJpbnQgc3R5bGVzIC0gTWFpbnRhaW4gYm9yZGVybGVzcyBhcHByb2FjaCAqL1xuQG1lZGlhIHByaW50IHtcbiAgLnN0b3J5LWFydGljbGUge1xuICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgYm94LXNoYWRvdzogbm9uZTsgLyogTm8gc2hhZG93cyBpbiBwcmludCAqL1xuICAgIGJvcmRlcjogMDsgLyogS2VlcCBib3JkZXJsZXNzICovXG4gICAgb3V0bGluZTogMXB4IHNvbGlkICNjY2M7IC8qIExpZ2h0IG91dGxpbmUgZm9yIHByaW50IGNsYXJpdHkgKi9cbiAgfVxuICBcbiAgLnN0b3J5LWFydGljbGU6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIFxuICAuc3RvcnktbWV0cmljcyB7XG4gICAgYm9yZGVyOiAwOyAvKiBObyBib3JkZXJzIGluIHByaW50ICovXG4gIH1cbn0iLCIvKiBTdHJlYW1pbmcgQ2Fyb3VzZWwgLSBNb2JpbGUtRmlyc3QgUHJvZmVzc2lvbmFsIERlc2lnbiAqL1xuLyogRm9sbG93aW5nIEJvdW5kbGVzcyBCcmFuZCBQaGlsb3NvcGh5OiBQcm9mZXNzaW9uYWwgQXV0aG9yaXR5LCBNb2Rlcm4gTWluaW1hbGlzbSwgRXh0cmVtZSBXaGl0ZXNwYWNlICovXG5cbi8qID09PSBQUk9GRVNTSU9OQUwgQVVUSE9SSVRZID09PSAqL1xuLyogQmFzZSBzdHlsZXMgYXJlIG1vYmlsZS1maXJzdCAtIHB1cmUgY29tcG9uZW50IHdpdGhvdXQgU2VjdGlvbiB3cmFwcGVyICovXG4uc3RyZWFtaW5nLWNhcm91c2VsIHtcbiAgLyogQ29tcG9uZW50IGlzIG5vdyBwdXJlIC0gbm8gU2VjdGlvbiB3cmFwcGVyICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogUmVtb3ZlIGNhcmQtbGlrZSBwYWRkaW5nLCBiYWNrZ3JvdW5kLCBib3JkZXJzICovXG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIFxuICAvKiBTaXplIHRvIGZpbGwgY29udGFpbmVyICovXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIFxuICAvKiBUb3VjaCB0YXJnZXQgY29tcGxpYW5jZSAqL1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBcbiAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uICovXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgXG4gIC8qIE1pbmltYWwgdHJhbnNpdGlvbiBmb3IgZm9jdXMgKi9cbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBJbnRlcmFjdGl2ZSBzdGF0ZXMgLSBtaW5pbWFsICovXG4uc3RyZWFtaW5nLWNhcm91c2VsOmhvdmVyIHtcbiAgLyogTm8gY2FyZC1saWtlIGVsZXZhdGlvbiAqL1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5zdHJlYW1pbmctY2Fyb3VzZWw6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiBDb250ZW50IGNvbnRhaW5lciAtIE9wdGltaXplZCBmb3IgZmxvYXRpbmcgaWNvbiBkaXNwbGF5ICovXG4uY2Fyb3VzZWwtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBUZXh0IGNvbnRlbnQgKi9cbi5jYXJvdXNlbC10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmbGV4OiAxO1xufVxuXG4vKiBJY29uIHdyYXBwZXIgLSBGbG9hdGluZyBkZXNpZ24gZm9yIGNhcm91c2VsICovXG4uY2Fyb3VzZWwtaWNvbi13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBGbG9hdGluZyBpY29uIGNvbnRhaW5lciAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbCAuaWNvbi1jb250YWluZXIge1xuICAvKiBSZW1vdmUgYW55IGNhcmQtbGlrZSBzdHlsaW5nIGZyb20gaWNvbiBjb250YWluZXJzICovXG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctbXV0ZWQtYWxwaGEpO1xuICBcbiAgLyogU3VidGxlIGZsb2F0aW5nIGVmZmVjdCAqL1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLW5vcm1hbCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xufVxuXG4vKiBIb3ZlciBlZmZlY3QgZm9yIGZsb2F0aW5nIGljb25zICovXG4uc3RyZWFtaW5nLWNhcm91c2VsOmhvdmVyIC5pY29uLWNvbnRhaW5lciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLyogTGFiZWwgc3R5bGluZyAtIFN1YnRsZSBhbmQgbWluaW1pemVkICovXG4uY2Fyb3VzZWwtbGFiZWwge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0xKTtcbiAgb3BhY2l0eTogMC43O1xuICBmb250LXNpemU6IHZhcigtLXRleHQteHMpO1xuICBsaW5lLWhlaWdodDogMS4yO1xuICBcbiAgLyogU3VidGxlIGFwcGVhcmFuY2UgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci10ZXh0LW11dGVkKSk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogTWFrZSBsYWJlbCBtb3JlIHZpc2libGUgb24gaG92ZXIgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWw6aG92ZXIgLmNhcm91c2VsLWxhYmVsIHtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4vKiA9PT0gTU9ERVJOIE1JTklNQUxJU00gPT09ICovXG5cbi8qID09PSBDQVJPVVNFTCBDT05UQUlORVIgU1RSVUNUVVJFID09PSAqL1xuLyogVmlld3BvcnQgZm9yIHRoZSBjYXJvdXNlbCAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC12aWV3cG9ydCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBTdHJlYW1pbmcgdHJhY2sgZm9yIGhvcml6b250YWwgbW92ZW1lbnQgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBhbmltYXRpb246IHN0cmVhbWluZy1mbG93IDMwcyBsaW5lYXIgaW5maW5pdGU7XG4gIFxuICAvKiBFbnN1cmUgdHJhY2sgaXMgd2lkZSBlbm91Z2ggZm9yIGFsbCBpdGVtcyAqL1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIFxuICAvKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gKi9cbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG4gIFxuICAvKiBTbW9vdGggcmVuZGVyaW5nICovXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8qIFBhdXNlIG9uIGhvdmVyIGZvciB1c2VyIGNvbnRyb2wgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQ6aG92ZXIgLnN0cmVhbWluZy1jYXJvdXNlbC10cmFjayB7XG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7XG59XG5cbi8qIENsZWFudXAgd2lsbC1jaGFuZ2Ugd2hlbiBwYXVzZWQgKi9cbi5zdHJlYW1pbmctY2Fyb3VzZWwtdmlld3BvcnQ6aG92ZXIgLnN0cmVhbWluZy1jYXJvdXNlbC10cmFjayB7XG4gIHdpbGwtY2hhbmdlOiBhdXRvO1xufVxuXG4vKiBJbmRpdmlkdWFsIGNhcm91c2VsIGl0ZW1zICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW0ge1xuICBmbGV4LXNocmluazogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qID09PSBSRUZJTkVEIFBSRVNFTlRBVElPTiA9PT0gKi9cblxuLyogPT09IENBUk9VU0VMIEFOSU1BVElPTiA9PT0gKi9cbkBrZXlmcmFtZXMgc3RyZWFtaW5nLWZsb3cge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIDAsIDApO1xuICB9XG59XG5cbi8qIEVuaGFuY2VkIHNtb290aCBhbmltYXRpb25zICovXG4uc3RyZWFtaW5nLWNhcm91c2VsIHtcbiAgLyogU21vb3RoIHRyYW5zaXRpb25zIGZvciBhbGwgaW50ZXJhY3RpdmUgc3RhdGVzICovXG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctbm9ybWFsKSB2YXIoLS1lYXNlLXNtb290aCk7XG59XG5cbi8qIEluZGl2aWR1YWwgaXRlbSBhbmltYXRpb25zICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW0ge1xuICAvKiBTbW9vdGggc2NhbGluZyBvbiBpbnRlcmFjdGlvbiAqL1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogSG92ZXIgZWZmZWN0IGZvciBpbmRpdmlkdWFsIGl0ZW1zICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLWl0ZW06aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4vKiBFZGdlIGZhZGUgZ3JhZGllbnRzIGZvciBzZWFtbGVzcyBsb29wICovXG4uc3RyZWFtaW5nLWNhcm91c2VsLWZhZGUtbGVmdCxcbi5zdHJlYW1pbmctY2Fyb3VzZWwtZmFkZS1yaWdodCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS0yNCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxO1xufVxuXG4uc3RyZWFtaW5nLWNhcm91c2VsLWZhZGUtbGVmdCB7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgXG4gICAgcmdiKHZhcigtLWNvbG9yLWJnLWRlZmF1bHQpKSAwJSxcbiAgICByZ2JhKHZhcigtLWNvbG9yLWJnLWRlZmF1bHQpLCAwKSAxMDAlKTtcbn1cblxuLnN0cmVhbWluZy1jYXJvdXNlbC1mYWRlLXJpZ2h0IHtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LFxuICAgIHJnYih2YXIoLS1jb2xvci1iZy1kZWZhdWx0KSkgMCUsXG4gICAgcmdiYSh2YXIoLS1jb2xvci1iZy1kZWZhdWx0KSwgMCkgMTAwJSk7XG59XG5cblxuLyogPT09IE1PQklMRS1GSVJTVCBSRVNQT05TSVZFID09PSAqL1xuLyogTW9iaWxlLWZpcnN0IGFwcHJvYWNoIHdpdGggcHJvZ3Jlc3NpdmUgZW5oYW5jZW1lbnQgKi9cblxuLyogTW9iaWxlIGJhc2Ugc3R5bGVzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnN0cmVhbWluZy1jYXJvdXNlbCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICBcbiAgLmNhcm91c2VsLWNvbnRlbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIFxuICAuY2Fyb3VzZWwtaWNvbi13cmFwcGVyIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuICBcbiAgLyogQ2Fyb3VzZWwgY29udGFpbmVyIG1vYmlsZSBzaXppbmcgKi9cbiAgLnN0cmVhbWluZy1jYXJvdXNlbC12aWV3cG9ydCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgMDtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTQpIDA7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAyMHM7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtaXRlbSB7XG4gICAgd2lkdGg6IHZhcigtLXNwYWNlLTMyKTsgLyogMTI4cHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTI0KTsgLyogOTZweCAqL1xuICB9XG59XG5cblxuLyogVGFibGV0IGVuaGFuY2VtZW50ICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnN0cmVhbWluZy1jYXJvdXNlbCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICBcbiAgLmNhcm91c2VsLWNvbnRlbnQge1xuICAgIC8qIEluIGNhcm91c2VsIGNvbnRleHQsIGtlZXAgdmVydGljYWwgbGF5b3V0ICovXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbiAgXG4gIC5jYXJvdXNlbC10ZXh0IHtcbiAgICBmbGV4OiBub25lO1xuICB9XG4gIFxuICAuY2Fyb3VzZWwtaWNvbi13cmFwcGVyIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBcbiAgLyogQ2Fyb3VzZWwgY29udGFpbmVyIHRhYmxldCBzaXppbmcgKi9cbiAgLnN0cmVhbWluZy1jYXJvdXNlbC12aWV3cG9ydCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTYpIDA7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAzMHM7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtaXRlbSB7XG4gICAgd2lkdGg6IHZhcigtLXNwYWNlLTQwKTsgLyogMTYwcHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTI4KTsgLyogMTEycHggKi9cbiAgfVxufVxuXG4vKiBEZXNrdG9wIGVuaGFuY2VtZW50ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgXG4gIC5jYXJvdXNlbC1pY29uLXdyYXBwZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIFxuICAvKiBDYXJvdXNlbCBjb250YWluZXIgZGVza3RvcCBzaXppbmcgKi9cbiAgLnN0cmVhbWluZy1jYXJvdXNlbC12aWV3cG9ydCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCkgMDtcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTgpIDA7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtOCk7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiA0NXM7XG4gIH1cbiAgXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtaXRlbSB7XG4gICAgd2lkdGg6IHZhcigtLXNwYWNlLTQwKTsgLyogMTYwcHggKi9cbiAgICBoZWlnaHQ6IHZhcigtLXNwYWNlLTI4KTsgLyogMTEycHggKi9cbiAgfVxufVxuXG4vKiA9PT0gQUNDRVNTSUJJTElUWSBFTkhBTkNFTUVOVFMgPT09ICovXG4vKiBTY3JlZW4gcmVhZGVyIG9ubHkgY29udGVudCAqL1xuLnNyLW9ubHkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAuc3RyZWFtaW5nLWNhcm91c2VsLWNhcmQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB9XG4gIFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWxvZ28ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgZmlsdGVyOiBjb250cmFzdCgxLjMpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtdHJhY2sge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB3aWxsLWNoYW5nZTogYXV0bzsgLyogTm8gYW5pbWF0aW9uID0gbm8gd2lsbC1jaGFuZ2UgKi9cbiAgfVxuICBcbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1jYXJkLFxuICAuc3RyZWFtaW5nLWNhcm91c2VsLWxvZ28sXG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtbGFiZWwge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgd2lsbC1jaGFuZ2U6IGF1dG87XG4gIH1cbn1cblxuLyogPT09IFBST0ZFU1NJT05BTCBQT0xJU0ggJiBBVVRIT1JJVFkgPT09ICovXG5cbi8qIFR5cG9ncmFwaHkgY29tcGxpYW5jZSAtIE1BTkRBVE9SWSBnbG9iYWwgY2xhc3NlcyBvbmx5ICovXG4vKiBBbGwgdGV4dCBNVVNUIHVzZSBnbG9iYWwgdHlwb2dyYXBoeSBjbGFzc2VzIGZyb20gYnJhbmQgZm91bmRhdGlvbiAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbCAudGl0bGUtY2FyZCB7XG4gIC8qIFVzZXMgZ2xvYmFsIC50aXRsZS1jYXJkIGNsYXNzIC0gbm8gY3VzdG9tIGZvbnQgc3R5bGluZyAqL1xuICBtYXJnaW46IDA7XG59XG5cbi5zdHJlYW1pbmctY2Fyb3VzZWwgLmRlc2NyaXB0aW9uIHtcbiAgLyogVXNlcyBnbG9iYWwgLmRlc2NyaXB0aW9uIGNsYXNzIC0gbm8gY3VzdG9tIGZvbnQgc3R5bGluZyAqL1xuICBtYXJnaW46IDA7XG59XG5cblxuLyogPT09IFNUUkFURUdJQyBIRVJJVEFHRSBSRUQgVVNBR0UgPT09ICovXG4vKiBDUklUSUNBTDogSGVyaXRhZ2UgcmVkIGxpbWl0ZWQgdG8gMTAlIHJ1bGUgd2l0aCBwcm9wZXIgc3BhY2luZyAqL1xuLyogTW9iaWxlOiBNYXhpbXVtIDEgZWxlbWVudCwgRGVza3RvcDogTWF4aW11bSAyIGVsZW1lbnRzICovXG5cbi8qIEhlcml0YWdlIHJlZCBhY2NlbnQgLSBhcHBsaWVkIHRocm91Z2ggaWNvbiBjb250YWluZXJzICovXG4uc3RyZWFtaW5nLWNhcm91c2VsIC5pY29uLWNvbnRhaW5lci1oZXJpdGFnZSB7XG4gIC8qIEhlcml0YWdlIHN0eWxpbmcgaGFuZGxlZCBieSBnbG9iYWwgaWNvbiBzeXN0ZW0gKi9cbiAgLyogRXh0cmEgc3BhY2luZyBhcm91bmQgaGVyaXRhZ2UgZWxlbWVudHMgKi9cbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogSGVyaXRhZ2UgcmVkIHRpdGxlIGFjY2VudCAtIG9ubHkgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZCAqL1xuLnN0cmVhbWluZy1jYXJvdXNlbC1oZXJpdGFnZSAudGl0bGUtY2FyZDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiB2YXIoLS1zcGFjZS0xNik7XG4gIGhlaWdodDogMnB4O1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIC8qIE1BTkRBVE9SWTogMzAlIGV4dHJhIHZlcnRpY2FsIHNwYWNpbmcgZm9yIGhlcml0YWdlIGVsZW1lbnRzICovXG4gIG1hcmdpbjogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMykgYXV0byAwO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gIG9wYWNpdHk6IDAuODtcbn1cblxuLyogTW9iaWxlIGhlcml0YWdlIHJlZCBjb25zdHJhaW50IC0gbWF4aW11bSAxIGVsZW1lbnQgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuc3RyZWFtaW5nLWNhcm91c2VsLWhlcml0YWdlIC50aXRsZS1zZWN0aW9uOjphZnRlciB7XG4gICAgLyogRW5oYW5jZWQgc3BhY2luZyBvbiBtb2JpbGUgLSAzNSUgZXh0cmEgKi9cbiAgICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjM1KSBhdXRvIDA7XG4gIH1cbiAgXG4gIC8qIEVuc3VyZSBpc29sYXRpb24gLSBubyBvdGhlciBoZXJpdGFnZSBlbGVtZW50cyBuZWFyYnkgKi9cbiAgLnN0cmVhbWluZy1jYXJvdXNlbC1oZXJpdGFnZSB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS0xMikgMDtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIGhlcml0YWdlIHJlZCBhbGxvd2FuY2UgLSBtYXhpbXVtIDIgZWxlbWVudHMgcGVyIHZpZXdwb3J0ICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5zdHJlYW1pbmctY2Fyb3VzZWwtaGVyaXRhZ2UgLnRpdGxlLXNlY3Rpb246OmFmdGVyIHtcbiAgICAvKiBTdGFuZGFyZCAzMCUgZXh0cmEgc3BhY2luZyAqL1xuICAgIG1hcmdpbjogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMykgYXV0byAwO1xuICB9XG59XG5cbiIsIi8qIFN3aXRjaGJsYWRlIENhcGFiaWxpdGllcyBDb21wb25lbnQgU3R5bGVzIC0gRW5oYW5jZWQgVHlwb2dyYXBoeSAmIFZpc3VhbCBEZXNpZ24gKi9cbi5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IDhyZW0gMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2Y4ZmFmYyAwJSwgI2UyZThmMCAxMDAlKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzLXNlY3Rpb246OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogXG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyNSUgMjUlLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wOCkgMCUsIHRyYW5zcGFyZW50IDUwJSksXG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3NSUgNzUlLCByZ2JhKDE0NywgNTEsIDIzNCwgMC4wNikgMCUsIHRyYW5zcGFyZW50IDUwJSksXG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4wNCkgMCUsIHRyYW5zcGFyZW50IDUwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzLXNlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMGYxNzJhIDAlLCAjMWUyOTNiIDEwMCUpO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzLXNlY3Rpb246OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjUlIDI1JSwgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMTUpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNzUlIDc1JSwgcmdiYSgxNDcsIDUxLCAyMzQsIDAuMTIpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDgpIDAlLCB0cmFuc3BhcmVudCA1MCUpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDgwcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCAxLjVyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXNfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCAycmVtO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIDIuNXJlbTtcbiAgfVxufVxuXG4uc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX19oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDVyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgNnZ3LCA0cmVtKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogMS4xO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxZTI5M2IgMCUsICM0NzU1NjkgNTAlLCAjMzM0MTU1IDEwMCUpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fdGl0bGUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmZmZmIDAlLCAjZTJlOGYwIDUwJSwgI2NiZDVlMSAxMDAlKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDQwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBtYXgtd2lkdGg6IDU2cmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgbGluZS1oZWlnaHQ6IDEuNztcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIG9wYWNpdHk6IDAuOTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX19kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiAjOTRhM2I4O1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiAyLjVyZW07XG4gIG1hcmdpbi10b3A6IDRyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zd2l0Y2hibGFkZS1jYXAtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IDNyZW07XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuc3dpdGNoYmxhZGUtY2FwLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiAzLjVyZW07XG4gIH1cbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk4KSAwJSwgXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA1MCUsXG4gICAgcmdiYSgyNTAsIDI1MCwgMjQ5LCAwLjkyKSAxMDAlKTtcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcbiAgcGFkZGluZzogM3JlbSAyLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAyNXB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjA4KSxcbiAgICAwIDEwcHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMDQpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMzBweCk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbmltYXRpb246IGZhZGVJblVwIDAuOHMgZWFzZSBmb3J3YXJkcztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6bnRoLWNoaWxkKDEpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjFzOyB9XG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyB9XG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOyB9XG4uc3dpdGNoYmxhZGUtY2FwLWNhcmQ6bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjRzOyB9XG5cbkBrZXlmcmFtZXMgZmFkZUluVXAge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjAyKSAwJSwgXG4gICAgcmdiYSgxNDcsIDUxLCAyMzQsIDAuMDIpIDUwJSxcbiAgICByZ2JhKDE2LCAxODUsIDEyOSwgMC4wMikgMTAwJSk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNnB4KSBzY2FsZSgxLjAyKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAzNXB4IDcwcHggcmdiYSgwLCAwLCAwLCAwLjE1KSxcbiAgICAwIDE1cHggMzVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wOCksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMyk7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3Zlcjo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmRhcmsgLnN3aXRjaGJsYWRlLWNhcC1jYXJkIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSg1MSwgNjUsIDg1LCAwLjgpIDAlLCBcbiAgICByZ2JhKDMwLCA0MSwgNTksIDAuNikgNTAlLFxuICAgIHJnYmEoMTUsIDIzLCA0MiwgMC40KSAxMDAlKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMjVweCA1MHB4IHJnYmEoMCwgMCwgMCwgMC4zKSxcbiAgICAwIDEwcHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMiksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg1OSwgMTMwLCAyNDYsIDAuNCk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMzVweCA3MHB4IHJnYmEoMCwgMCwgMCwgMC41KSxcbiAgICAwIDE1cHggMzVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xNSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtaWNvbiB7XG4gIHdpZHRoOiA0cmVtO1xuICBoZWlnaHQ6IDRyZW07XG4gIG1hcmdpbjogMCBhdXRvIDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxMHB4IDI1cHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMjUpLFxuICAgIDAgNHB4IDEycHggcmdiYSg5OSwgMTAyLCAyNDEsIDAuMTUpLFxuICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4uc3dpdGNoYmxhZGUtY2FwLWljb246OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSA1MCUsIHRyYW5zcGFyZW50IDcwJSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2U7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciAuc3dpdGNoYmxhZGUtY2FwLWljb24ge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDVkZWcpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDE1cHggMzVweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4zNSksXG4gICAgMCA4cHggMjBweCByZ2JhKDk5LCAxMDIsIDI0MSwgMC4yNSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciAuc3dpdGNoYmxhZGUtY2FwLWljb246OmJlZm9yZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLnN3aXRjaGJsYWRlLWNhcC1pY29uIHN2ZyB7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtY2FyZDpob3ZlciAuc3dpdGNoYmxhZGUtY2FwLWljb24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBDYXBhYmlsaXR5IENhcmQgVHlwb2dyYXBoeSAqL1xuLnN3aXRjaGJsYWRlLWNhcC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDEuNXJlbSAwIDFyZW07XG4gIGNvbG9yOiAjMWUyOTNiO1xuICBsaW5lLWhlaWdodDogMS4zO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtY2FwLXRpdGxlIHtcbiAgY29sb3I6ICNmMWY1Zjk7XG59XG5cbi5zd2l0Y2hibGFkZS1jYXAtZGVzYyB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBsaW5lLWhlaWdodDogMS43O1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luOiAwO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1jYXAtZGVzYyB7XG4gIGNvbG9yOiAjY2JkNWUxO1xufVxuXG4vKiBEYXNoYm9hcmQgVmlzdWFsIFN0eWxlcyAtIE1vZGVybiBHbGFzcyBNb3JwaGlzbSAqL1xuLnN3aXRjaGJsYWRlLWRhc2hib2FyZF9fdmlzdWFsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDRyZW0gMDtcbn1cblxuLnN3aXRjaGJsYWRlLWRhc2hib2FyZF9fdmlzdWFsOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogLTJyZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjE1KSwgXG4gICAgcmdiYSgxNDcsIDUxLCAyMzQsIDAuMTIpLCBcbiAgICByZ2JhKDE2LCAxODUsIDEyOSwgMC4wOCkpO1xuICBib3JkZXItcmFkaXVzOiAycmVtO1xuICBmaWx0ZXI6IGJsdXIoM3JlbSk7XG4gIG9wYWNpdHk6IDAuNjtcbiAgYW5pbWF0aW9uOiBwdWxzZS1nbG93IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWdsb3cge1xuICAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuNDsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICA1MCUgeyBvcGFjaXR5OiAwLjc7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH1cbn1cblxuLnN3aXRjaGJsYWRlLWRhc2hib2FyZF9fY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSAwJSwgXG4gICAgcmdiYSgyNTAsIDI1MCwgMjQ5LCAwLjkpIDEwMCUpO1xuICBib3JkZXItcmFkaXVzOiAycmVtO1xuICBwYWRkaW5nOiAyLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDI1cHggNTBweCByZ2JhKDAsIDAsIDAsIDAuMSksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1kYXNoYm9hcmRfX2NvbnRlbnQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKDUxLCA2NSwgODUsIDAuOTUpIDAlLCBcbiAgICByZ2JhKDMwLCA0MSwgNTksIDAuOSkgMTAwJSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDI1cHggNTBweCByZ2JhKDAsIDAsIDAsIDAuMyksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi8qIEVudmlyb25tZW50IENhcmRzIEdyaWQgLSBFbmhhbmNlZCBEZXNpZ24gKi9cbi5zd2l0Y2hibGFkZS1lbnYtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICBnYXA6IDJyZW07XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnN3aXRjaGJsYWRlLWVudi1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtY2FyZCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSkgMCUsIFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSAxMDAlKTtcbiAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgcGFkZGluZzogMS41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4wOCksXG4gICAgMCAxcHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc3dpdGNoYmxhZGUtZW52LWNhcmQ6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gIGJveC1zaGFkb3c6IFxuICAgIDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksXG4gICAgMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtZW52LWNhcmQge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICByZ2JhKDUxLCA2NSwgODUsIDAuOCkgMCUsIFxuICAgIHJnYmEoMzAsIDQxLCA1OSwgMC42KSA1MCUsXG4gICAgcmdiYSgxNSwgMjMsIDQyLCAwLjQpIDEwMCUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgYm94LXNoYWRvdzogXG4gICAgMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICAgIDAgMXB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLnN3aXRjaGJsYWRlLWVudi1uYW1lIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDAgMCAwLjVyZW0gMDtcbiAgY29sb3I6ICMxZTI5M2I7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMTVlbTtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAuc3dpdGNoYmxhZGUtZW52LW5hbWUge1xuICBjb2xvcjogI2YxZjVmOTtcbn1cblxuLnN3aXRjaGJsYWRlLWVudi1iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtYmFkZ2UtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zNzVyZW07XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtYmFkZ2UtY29udGVudCBzdmcge1xuICB3aWR0aDogMC44NzVyZW07XG4gIGhlaWdodDogMC44NzVyZW07XG59XG5cbi5zd2l0Y2hibGFkZS1lbnYtbWV0YSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNjQ3NDhiO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG59XG5cbi5kYXJrIC5zd2l0Y2hibGFkZS1lbnYtbWV0YSB7XG4gIGNvbG9yOiAjOTRhM2I4O1xufVxuXG4uc3dpdGNoYmxhZGUtc3RhY2stbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xufVxuXG4uc3dpdGNoYmxhZGUtc3RhY2staXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMC43NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLnN3aXRjaGJsYWRlLXN0YWNrLW5hbWUge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uc3dpdGNoYmxhZGUtc3RhY2stc3RhdHVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBDTEkgSW50ZXJmYWNlIFN0eWxlcyAtIEVuaGFuY2VkIFRlcm1pbmFsIERlc2lnbiAqL1xuLnN3aXRjaGJsYWRlLWNsaSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxYTFhMWEgMCUsICMwZjBmMGYgMTAwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ01lbmxvJywgJ1VidW50dSBNb25vJywgbW9ub3NwYWNlO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuNCksXG4gICAgMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMyksXG4gICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLnN3aXRjaGJsYWRlLWNsaS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMmQyZDJkIDAlLCAjMWYxZjFmIDEwMCUpO1xuICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNDA0MDQwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktaGVhZGVyOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAxLjI1cmVtO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogMC43NXJlbTtcbiAgaGVpZ2h0OiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiAjZmY1ZjU3O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IDEuMjVyZW0gMCAwICNmZmJkMmUsIDIuNXJlbSAwIDAgIzI4Y2E0Mjtcbn1cblxuLnN3aXRjaGJsYWRlLWNsaS1jb250ZW50IHtcbiAgcGFkZGluZzogMnJlbTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzFhMWExYSAwJSwgIzBmMGYwZiAxMDAlKTtcbiAgY29sb3I6ICNlNWU1ZTU7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBtYXgtaGVpZ2h0OiA0NTBweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnTWVubG8nLCAnU0YgTW9ubycsICdDb25zb2xhcycsICdVYnVudHUgTW9ubycsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLnN3aXRjaGJsYWRlLWNsaS1jb21tYW5kIHtcbiAgY29sb3I6ICMyMmM1NWU7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtc2hhZG93OiAwIDAgOHB4IHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktY29tbWFuZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyQgJztcbiAgY29sb3I6ICM2NDc0OGI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zd2l0Y2hibGFkZS1jbGktb3V0cHV0IHtcbiAgY29sb3I6ICM5NGEzYjg7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICBmb250LXdlaWdodDogNDAwO1xuICBvcGFjaXR5OiAwLjk1O1xufVxuXG4vKiBSZXNwb25zaXZlIERlc2lnbiBhbmQgQWNjZXNzaWJpbGl0eSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5zd2l0Y2hibGFkZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiB7XG4gICAgcGFkZGluZzogNXJlbSAwO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwYWJpbGl0aWVzX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcGFiaWxpdGllc19fZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIH1cbiAgXG4gIC5zd2l0Y2hibGFkZS1jYXAtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZ2FwOiAycmVtO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwLWNhcmQge1xuICAgIHBhZGRpbmc6IDIuNXJlbSAycmVtO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuMzc1cmVtO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNsaS1oZWFkZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMXJlbTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNsaS1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gIH1cbn1cblxuLyogUmVkdWNlZCBNb3Rpb24gU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnN3aXRjaGJsYWRlLWNhcC1jYXJkLFxuICAuc3dpdGNoYmxhZGUtY2FwLWljb24sXG4gIC5zd2l0Y2hibGFkZS1lbnYtY2FyZCxcbiAgLnN3aXRjaGJsYWRlLWRhc2hib2FyZF9fdmlzdWFsOjpiZWZvcmUge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtY2FwLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNhcC1jYXJkOmhvdmVyIC5zd2l0Y2hibGFkZS1jYXAtaWNvbiB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG4gIFxuICAuc3dpdGNoYmxhZGUtZGFzaGJvYXJkX192aXN1YWw6OmJlZm9yZSB7XG4gICAgZmlsdGVyOiBub25lO1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnN3aXRjaGJsYWRlLWNhcC1jYXJkIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3JkZXItY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxuICBcbiAgLnN3aXRjaGJsYWRlLWNsaSB7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgYm9yZGVyLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuLyogUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9ucyAqL1xuLnN3aXRjaGJsYWRlLWNhcC1jYXJkLFxuLnN3aXRjaGJsYWRlLWVudi1jYXJkLFxuLnN3aXRjaGJsYWRlLWNsaSB7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbi8qIEZvY3VzIHN0YXRlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuLnN3aXRjaGJsYWRlLWNhcC1jYXJkOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgIzNiODJmNjtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cbiIsIi8qKlxuICogVENPIENvbXBvbmVudCBDU1MgLSBDbGVhbiwgUHJvZmVzc2lvbmFsIERlc2lnblxuICovXG5cbi8qIE1haW4gU2VjdGlvbiAqL1xuLnRjby1zZWN0aW9uIHtcbiAgcGFkZGluZzogNnJlbSAwO1xuICAvKiBSZW1vdmUgYmFja2dyb3VuZCBvdmVycmlkZSAtIHVzZSBnbG9iYWwgc2VjdGlvbiBiYWNrZ3JvdW5kICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnRjby1zZWN0aW9uOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogXG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMjUlLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4wNikgMCUsIHRyYW5zcGFyZW50IDUwJSksXG4gICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4MCUgNzUlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4wNCkgMCUsIHRyYW5zcGFyZW50IDUwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGFyayAudGNvLXNlY3Rpb246OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjAlIDI1JSwgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMTIpIDAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgODAlIDc1JSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMDgpIDAlLCB0cmFuc3BhcmVudCA1MCUpO1xufVxuXG4udGNvX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDkwcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCAxcmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAudGNvX19jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgMS41cmVtO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnRjb19fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIDJyZW07XG4gIH1cbn1cblxuLyogSGVhZGVyIFNlY3Rpb24gLSBNYXRjaGluZyBjYXBhYmlsaXRpZXMgY29tcG9uZW50ICovXG4udGNvX19oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDVyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRjb19fdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgNnZ3LCA0cmVtKTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogMS4xO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxZTI5M2IgMCUsICM0NzU1NjkgNTAlLCAjMzM0MTU1IDEwMCUpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnRjb19fdGl0bGUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmZmZmIDAlLCAjZTJlOGYwIDUwJSwgI2NiZDVlMSAxMDAlKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDQwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4udGNvX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBtYXgtd2lkdGg6IDU2cmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgbGluZS1oZWlnaHQ6IDEuNztcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIG9wYWNpdHk6IDAuOTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAudGNvX19kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiAjOTRhM2I4O1xufVxuXG4vKiBUQ08gVGFibGUgKi9cbi50Y28tdGFibGUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIGJvcmRlci1yYWRpdXM6IDEuNXJlbTtcbiAgYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXJnaW4tYm90dG9tOiA0cmVtO1xufVxuXG4uZGFyayAudGNvLXRhYmxlIHtcbiAgYmFja2dyb3VuZDogcmdiYSg1MSwgNjUsIDg1LCAwLjYpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLyogVGFibGUgd3JhcHBlciBmb3IgaG9yaXpvbnRhbCBzY3JvbGwgb24gc21hbGxlciBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogMTI3OXB4KSB7XG4gIC50Y28tdGFibGUge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gIH1cbiAgXG4gIC50Y28tdGFibGUtaGVhZGVyLFxuICAudGNvLXRhYmxlLXJvdyB7XG4gICAgbWluLXdpZHRoOiAxMDUwcHg7XG4gIH1cbn1cblxuLnRjby10YWJsZS1oZWFkZXIge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDMwMHB4IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDE4MHB4LCAxZnIpKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSkgMCUsIHJnYmEoMTQ3LCA1MSwgMjM0LCAwLjA1KSAxMDAlKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cblxuLmRhcmsgLnRjby10YWJsZS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4yKSAwJSwgcmdiYSgxNDcsIDUxLCAyMzQsIDAuMSkgMTAwJSk7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAudGNvLXRhYmxlLWhlYWRlciB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIH1cbn1cblxuLnRjby1oZWFkZXItY2VsbCB7XG4gIHBhZGRpbmc6IDFyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzFlMjkzYjtcbiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLnRjby1oZWFkZXItY2VsbDpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xufVxuXG4udGNvLWhlYWRlci1jZWxsLS1jYXRlZ29yeSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQ6IHJnYmEoNzEsIDg1LCAxMDUsIDAuMDUpO1xuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4vKiBJbmRleC1iYXNlZCBjb2x1bW4gc3R5bGluZyAtIGZpcnN0IGNvbHVtbiByZWQsIHNlY29uZCBibHVlLCBsYXN0IGFsd2F5cyBncmVlbiAqL1xuLnRjby1oZWFkZXItY2VsbC0tMCB7IGNvbG9yOiAjZGMyNjI2OyB9IC8qIEZpcnN0IGNvbHVtbiAtIFJlZCAqL1xuLnRjby1oZWFkZXItY2VsbC0tMSB7IGNvbG9yOiAjMjU2M2ViOyB9IC8qIFNlY29uZCBjb2x1bW4gLSBCbHVlICovXG4udGNvLWhlYWRlci1jZWxsLS0yIHsgY29sb3I6ICMwNTk2Njk7IH0gLyogVGhpcmQvTGFzdCBjb2x1bW4gLSBHcmVlbiAqL1xuXG4vKiBGb3IgbW9yZSB0aGFuIDMgY29sdW1ucywgYWRkIGFkZGl0aW9uYWwgY29sb3JzIGJ1dCBlbnN1cmUgbGFzdCBpcyBhbHdheXMgZ3JlZW4gKi9cbi50Y28taGVhZGVyLWNlbGwtLTMgeyBjb2xvcjogI2Y1OWUwYjsgfSAvKiBGb3VydGggY29sdW1uIC0gQW1iZXIgKi9cbi50Y28taGVhZGVyLWNlbGwtLTQgeyBjb2xvcjogIzhiNWNmNjsgfSAvKiBGaWZ0aCBjb2x1bW4gLSBQdXJwbGUgKi9cblxuLmRhcmsgLnRjby1oZWFkZXItY2VsbCB7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4uZGFyayAudGNvLWhlYWRlci1jZWxsLS0wIHsgY29sb3I6ICNmY2E1YTU7IH0gLyogRmlyc3QgY29sdW1uIC0gTGlnaHQgUmVkICovXG4uZGFyayAudGNvLWhlYWRlci1jZWxsLS0xIHsgY29sb3I6ICM5M2M1ZmQ7IH0gLyogU2Vjb25kIGNvbHVtbiAtIExpZ2h0IEJsdWUgKi9cbi5kYXJrIC50Y28taGVhZGVyLWNlbGwtLTIgeyBjb2xvcjogIzZlZTdiNzsgfSAvKiBUaGlyZC9MYXN0IGNvbHVtbiAtIExpZ2h0IEdyZWVuICovXG4uZGFyayAudGNvLWhlYWRlci1jZWxsLS0zIHsgY29sb3I6ICNmYmJmMjQ7IH0gLyogRm91cnRoIGNvbHVtbiAtIExpZ2h0IEFtYmVyICovXG4uZGFyayAudGNvLWhlYWRlci1jZWxsLS00IHsgY29sb3I6ICNjNGI1ZmQ7IH0gLyogRmlmdGggY29sdW1uIC0gTGlnaHQgUHVycGxlICovXG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjc5cHgpIHtcbiAgLnRjby1oZWFkZXItY2VsbCB7XG4gICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICB9XG4gIFxuICAudGNvLWhlYWRlci1jZWxsOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIH1cbiAgXG4gIC50Y28taGVhZGVyLWNlbGwtLWNhdGVnb3J5IHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSg3MSwgODUsIDEwNSwgMC4xKTtcbiAgICB6LWluZGV4OiAyO1xuICB9XG59XG5cbi50Y28tdGFibGUtcm93IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxODBweCwgMWZyKSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi50Y28tdGFibGUtcm93OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDIpO1xufVxuXG4udGNvLXRhYmxlLXJvdzpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLmRhcmsgLnRjby10YWJsZS1yb3cge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xufVxuXG4uZGFyayAudGNvLXRhYmxlLXJvdzpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjA1KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyNzlweCkge1xuICAudGNvLXRhYmxlLXJvdyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIH1cbn1cblxuLnRjby1jZWxsIHtcbiAgcGFkZGluZzogMS41cmVtIDFyZW07XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLnRjby1jZWxsOmxhc3QtY2hpbGQge1xuICBib3JkZXItcmlnaHQ6IG5vbmU7XG59XG5cbi50Y28tY2VsbC0tY2F0ZWdvcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI0OCwgMjUwLCAyNTIsIDAuOCk7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbn1cblxuLmRhcmsgLnRjby1jZWxsLS1jYXRlZ29yeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC40KTtcbn1cblxuLnRjby1jZWxsLS0wOjpiZWZvcmUsXG4udGNvLWNlbGwtLTE6OmJlZm9yZSxcbi50Y28tY2VsbC0tMjo6YmVmb3JlLFxuLnRjby1jZWxsLS0zOjpiZWZvcmUsXG4udGNvLWNlbGwtLTQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogNHB4O1xuICBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDtcbn1cblxuLnRjby1jZWxsLS0wIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4udGNvLWNlbGwtLTA6OmJlZm9yZSB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNlZjQ0NDQsICNkYzI2MjYpOyB9XG5cbi50Y28tY2VsbC0tMSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnRjby1jZWxsLS0xOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjM2I4MmY2LCAjMjU2M2ViKTsgfVxuXG4udGNvLWNlbGwtLTIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbi50Y28tY2VsbC0tMjo6YmVmb3JlIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzEwYjk4MSwgIzA1OTY2OSk7IH1cblxuLnRjby1jZWxsLS0zIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4udGNvLWNlbGwtLTM6OmJlZm9yZSB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmNTllMGIsICNkOTc3MDYpOyB9XG5cbi50Y28tY2VsbC0tNCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnRjby1jZWxsLS00OjpiZWZvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjOGI1Y2Y2LCAjN2MzYWVkKTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTI3OXB4KSB7XG4gIC50Y28tY2VsbCB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgfVxuICBcbiAgLnRjby1jZWxsOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgfVxuICBcbiAgLnRjby1jZWxsLS1jYXRlZ29yeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ4LCAyNTAsIDI1MiwgMC45NSk7XG4gICAgei1pbmRleDogMjtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIH1cbiAgXG4gIC5kYXJrIC50Y28tY2VsbC0tY2F0ZWdvcnkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDQxLCA1OSwgMC45NSk7XG4gIH1cbn1cblxuLnRjby1jYXRlZ29yeS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjMGYxNzJhO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAudGNvLWNhdGVnb3J5LXRpdGxlIHtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi50Y28tY2F0ZWdvcnktZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzQ3NTU2OTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4uZGFyayAudGNvLWNhdGVnb3J5LWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6ICM5NGEzYjg7XG59XG5cbi50Y28tb3B0aW9uLXRpdGxlIHtcbiAgZm9udC1zaXplOiAwLjk1cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLnRjby1vcHRpb24tc3VidGl0bGUge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBvcGFjaXR5OiAwLjg7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmO1xufVxuXG4udGNvLWNlbGwtLTAgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogI2RjMjYyNjsgfVxuLnRjby1jZWxsLS0xIC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICMyNTYzZWI7IH1cbi50Y28tY2VsbC0tMiAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjMDU5NjY5OyB9XG4udGNvLWNlbGwtLTMgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogI2Y1OWUwYjsgfVxuLnRjby1jZWxsLS00IC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICM4YjVjZjY7IH1cblxuLnRjby1jZWxsLS0wIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICNkYzI2MjY7IH1cbi50Y28tY2VsbC0tMSAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjMjU2M2ViOyB9XG4udGNvLWNlbGwtLTIgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogIzA1OTY2OTsgfVxuLnRjby1jZWxsLS0zIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICNmNTllMGI7IH1cbi50Y28tY2VsbC0tNCAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjOGI1Y2Y2OyB9XG5cbi5kYXJrIC50Y28tY2VsbC0tMCAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjZmNhNWE1OyB9XG4uZGFyayAudGNvLWNlbGwtLTEgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogIzkzYzVmZDsgfVxuLmRhcmsgLnRjby1jZWxsLS0yIC50Y28tb3B0aW9uLXRpdGxlIHsgY29sb3I6ICM2ZWU3Yjc7IH1cbi5kYXJrIC50Y28tY2VsbC0tMyAudGNvLW9wdGlvbi10aXRsZSB7IGNvbG9yOiAjZmJiZjI0OyB9XG4uZGFyayAudGNvLWNlbGwtLTQgLnRjby1vcHRpb24tdGl0bGUgeyBjb2xvcjogI2M0YjVmZDsgfVxuXG4uZGFyayAudGNvLWNlbGwtLTAgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogI2ZjYTVhNTsgfVxuLmRhcmsgLnRjby1jZWxsLS0xIC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICM5M2M1ZmQ7IH1cbi5kYXJrIC50Y28tY2VsbC0tMiAudGNvLW9wdGlvbi1zdWJ0aXRsZSB7IGNvbG9yOiAjNmVlN2I3OyB9XG4uZGFyayAudGNvLWNlbGwtLTMgLnRjby1vcHRpb24tc3VidGl0bGUgeyBjb2xvcjogI2ZiYmYyNDsgfVxuLmRhcmsgLnRjby1jZWxsLS00IC50Y28tb3B0aW9uLXN1YnRpdGxlIHsgY29sb3I6ICNjNGI1ZmQ7IH1cblxuLnRjby1vcHRpb24taXRlbXMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4udGNvLW9wdGlvbi1pdGVtcyBsaSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjRyZW07XG4gIGNvbG9yOiAjMzc0MTUxO1xufVxuXG4udGNvLW9wdGlvbi1pdGVtcyBsaTo6YmVmb3JlIHtcbiAgY29udGVudDogJ+KAoic7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50Y28tY2VsbC0tMCAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjN2YxZDFkOyB9XG4udGNvLWNlbGwtLTEgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogIzFlM2E4YTsgfVxuLnRjby1jZWxsLS0yIC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICMwNjRlM2I7IH1cbi50Y28tY2VsbC0tMyAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjOTI0MDBlOyB9XG4udGNvLWNlbGwtLTQgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogIzU4MWM4NzsgfVxuXG4uZGFyayAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjZDFkNWRiOyB9XG4uZGFyayAudGNvLWNlbGwtLTAgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogI2ZjYTVhNTsgfVxuLmRhcmsgLnRjby1jZWxsLS0xIC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICM5M2M1ZmQ7IH1cbi5kYXJrIC50Y28tY2VsbC0tMiAudGNvLW9wdGlvbi1pdGVtcyBsaSB7IGNvbG9yOiAjNmVlN2I3OyB9XG4uZGFyayAudGNvLWNlbGwtLTMgLnRjby1vcHRpb24taXRlbXMgbGkgeyBjb2xvcjogI2ZiYmYyNDsgfVxuLmRhcmsgLnRjby1jZWxsLS00IC50Y28tb3B0aW9uLWl0ZW1zIGxpIHsgY29sb3I6ICNjNGI1ZmQ7IH1cblxuLyogVG90YWwgQnVzaW5lc3MgSW1wYWN0IFJvdyBTdHlsaW5nICovXG4udGNvLXRhYmxlLXJvdy0tdG90YWwge1xuICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjA1KTtcbn1cblxuLmRhcmsgLnRjby10YWJsZS1yb3ctLXRvdGFsIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgxNiwgMTg1LCAxMjksIDAuNCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjEpO1xufVxuXG4udGNvLWNlbGwtLXRvdGFsLWNhdGVnb3J5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5kYXJrIC50Y28tY2VsbC0tdG90YWwtY2F0ZWdvcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4xNSk7XG59XG5cbi50Y28tdGFibGUtcm93LS10b3RhbCAudGNvLWNhdGVnb3J5LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6ICMwNTk2Njk7XG59XG5cbi5kYXJrIC50Y28tdGFibGUtcm93LS10b3RhbCAudGNvLWNhdGVnb3J5LXRpdGxlIHtcbiAgY29sb3I6ICMxMGI5ODE7XG59XG5cbi50Y28tY2VsbC0tdG90YWwgLnRjby1vcHRpb24tdGl0bGUge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udGNvLWNlbGwtLXRvdGFsIC50Y28tb3B0aW9uLXN1YnRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogQnVzaW5lc3MgSW1wYWN0IFN1bW1hcnkgKi9cbi50Y28taW1wYWN0LXN1bW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIGJvcmRlci1yYWRpdXM6IDEuNXJlbTtcbiAgcGFkZGluZzogM3JlbSAycmVtO1xuICBib3gtc2hhZG93OiAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogNHJlbTtcbn1cblxuLmRhcmsgLnRjby1pbXBhY3Qtc3VtbWFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTEsIDY1LCA4NSwgMC42KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICBib3gtc2hhZG93OiAwIDIwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi50Y28taW1wYWN0LXRpdGxlIHtcbiAgZm9udC1zaXplOiAycmVtO1xuICBmb250LXdlaWdodDogODAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWUyOTNiLCAjNDc1NTY5KTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuLmRhcmsgLnRjby1pbXBhY3QtdGl0bGUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmZmZmLCAjZTJlOGYwKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4udGNvLWltcGFjdC1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuLmRhcmsgLnRjby1pbXBhY3QtZGVzY3JpcHRpb24ge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLyogU3RhdHMgR3JpZCAqL1xuLnRjby1zdGF0cy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gIGdhcDogMS41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XG59XG5cbi50Y28tc3RhdC1jYXJkIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIHBhZGRpbmc6IDEuNXJlbSAxcmVtO1xuICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi50Y28tc3RhdC1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDEycHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4uZGFyayAudGNvLXN0YXQtY2FyZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNTEsIDY1LCA4NSwgMC40KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmRhcmsgLnRjby1zdGF0LWNhcmQ6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDEycHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi50Y28tc3RhdC12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDU5NjY5LCAjMTBiOTgxKTtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLmRhcmsgLnRjby1zdGF0LXZhbHVlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM0ZDM5OSwgIzEwYjk4MSk7XG4gIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRjby1zdGF0LWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICMwZjE3MmE7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmO1xufVxuXG4uZGFyayAudGNvLXN0YXQtbGFiZWwge1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cblxuLnRjby1zdGF0LWRldGFpbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgY29sb3I6ICM0NzU1Njk7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIG9wYWNpdHk6IDAuNztcbn1cblxuLmRhcmsgLnRjby1zdGF0LWRldGFpbCB7XG4gIGNvbG9yOiAjOTRhM2I4O1xufVxuXG4vKiBEZWNpc2lvbiBTdW1tYXJ5ICovXG4udGNvLWRlY2lzaW9uLXN1bW1hcnkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiAycmVtO1xuICBwYWRkaW5nOiAycmVtO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4wNSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDE4NSwgMTI5LCAwLjEpO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgbWF4LXdpZHRoOiA2MDBweDtcbn1cblxuLmRhcmsgLnRjby1kZWNpc2lvbi1zdW1tYXJ5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuMSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgxNiwgMTg1LCAxMjksIDAuMik7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAudGNvLWRlY2lzaW9uLXN1bW1hcnkge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxcmVtO1xuICB9XG59XG5cbi50Y28tZGVjaXNpb24taXRlbSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZmxleDogMTtcbn1cblxuLnRjby1kZWNpc2lvbi1jb3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBmb250LXdlaWdodDogODAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuLnRjby1kZWNpc2lvbi1pdGVtLS10cmFkaXRpb25hbCAudGNvLWRlY2lzaW9uLWNvc3QgeyBjb2xvcjogI2RjMjYyNjsgfVxuLnRjby1kZWNpc2lvbi1pdGVtLS1zd2l0Y2hibGFkZSAudGNvLWRlY2lzaW9uLWNvc3QgeyBjb2xvcjogIzA1OTY2OTsgfVxuXG4udGNvLWRlY2lzaW9uLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNDc1NTY5O1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi5kYXJrIC50Y28tZGVjaXNpb24tbGFiZWwge1xuICBjb2xvcjogIzk0YTNiODtcbn1cblxuLnRjby1kZWNpc2lvbi1hcnJvdyB7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBjb2xvcjogIzA1OTY2OTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLnRjby1kZWNpc2lvbi1hcnJvdyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB9XG59XG5cblxuXG5cbiIsIi8qKlxuICogVGVzdGltb25pYWxDYXJkIENvbXBvbmVudCBTdHlsaW5nXG4gKiBcbiAqIEltcGxlbWVudHMgdGhlIFRocmVlLUxheWVyIENTUyBBcmNoaXRlY3R1cmU6XG4gKiAxLiBCcmFuZCBGb3VuZGF0aW9uIChmcm9tIGluZGV4LmNzcyk6IFVzZXMgYnJhbmQgdmFyaWFibGVzIGFuZCBEYWlzeVVJIHV0aWxpdGllc1xuICogMi4gQ29tcG9uZW50IEVuaGFuY2VtZW50ICh0aGlzIGZpbGUpOiBDb21wb25lbnQtc3BlY2lmaWMgc3R5bGluZ1xuICogMy4gUGFnZSBDdXN0b21pemF0aW9uOiBWaWEgc3R5bGVzIHByb3AgaW4gUmVhY3QgY29tcG9uZW50XG4gKiBcbiAqIEZvbGxvd3MgY29tcG9uZW50L3N0eWxpbmctc3RhbmRhcmQubWQgcmVxdWlyZW1lbnRzOlxuICogLSBVc2VzIENTUyB2YXJpYWJsZXMgZXhjbHVzaXZlbHkgZm9yIGFsbCB2YWx1ZXNcbiAqIC0gSW1wbGVtZW50cyBEYWlzeVVJIGludGVncmF0aW9uIHBhdHRlcm5zXG4gKiAtIFBXQSBhbmltYXRpb24gY29tcGF0aWJpbGl0eVxuICogLSBNb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBkZXNpZ25cbiAqIC0gQWNjZXNzaWJpbGl0eSBjb21wbGlhbmNlIGJ1aWx0LWluXG4gKiAtIENhcmQtb25seSBhcmNoaXRlY3R1cmUgKG5vIHNlY3Rpb24tbGV2ZWwgc3R5bGVzKVxuICogLSAxMDAlIENTUyBpbXBsZW1lbnRhdGlvbiBydWxlIGNvbXBsaWFuY2VcbiAqL1xuXG4vKiBCYXNlIHRlc3RpbW9uaWFsIGNhcmQgc3R5bGluZyAqL1xuLnRlc3RpbW9uaWFsLWNhcmQge1xuICAvKiBCYXNlIGNhcmQgc3R5bGluZyB3aXRoIENTUyB2YXJpYWJsZXMgKi9cbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgXG4gIC8qIFRyYW5zaXRpb25zIHVzaW5nIENTUyB2YXJpYWJsZXMgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCksXG4gICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgXG4gIC8qIEVxdWFsIGhlaWdodCBpbiBncmlkcyAqL1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIFxuICAvKiBDb21wb25lbnQgbGF5b3V0ICovXG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIFxuICAvKiBTdWJ0bGUgZWxldmF0aW9uIHVzaW5nIHNoYWRvdyBzeXN0ZW0gKi9cbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQpO1xufVxuXG4vKiBIb3ZlciBlZmZlY3QgZm9yIGNhcmRzICovXG4udGVzdGltb25pYWwtY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQtaG92ZXIpO1xufVxuXG4vKiBBY3RpdmUgc3RhdGUgKi9cbi50ZXN0aW1vbmlhbC1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1jYXJkLWFjdGl2ZSk7XG59XG5cbi8qIEZlYXR1cmVkIHRlc3RpbW9uaWFsIHN0eWxpbmcgd2l0aCBoZXJpdGFnZSBhY2NlbnQgLSAxMCUgcnVsZSBjb21wbGlhbmNlICovXG4udGVzdGltb25pYWwtY2FyZC50ZXN0aW1vbmlhbC1mZWF0dXJlZCB7XG4gIC8qIE9OTFkgY29sb3IgY2hhbmdlcyAtIE5PIHN0cnVjdHVyYWwgY2hhbmdlcyAoZm9sbG93aW5nIExpc3RDYXJkIHBhdHRlcm4pICovXG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDIpO1xuICBcbiAgLyogSGVyaXRhZ2UgYWNjZW50IHVzaW5nIGJveC1zaGFkb3cgLSBkb2Vzbid0IGFmZmVjdCBkaW1lbnNpb25zICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIHZhcigtLXNoYWRvdy1jYXJkKTtcbn1cblxuLyogRmVhdHVyZWQgY2FyZCBob3ZlciAqL1xuLnRlc3RpbW9uaWFsLWNhcmQudGVzdGltb25pYWwtZmVhdHVyZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjA0KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiBcbiAgICBpbnNldCA0cHggMCAwIHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKSxcbiAgICB2YXIoLS1zaGFkb3ctY2FyZC1ob3Zlcik7XG59XG5cbi8qIFF1b3RlIHdyYXBwZXIgZm9yIFBXQSBhbmltYXRpb24gaW50ZWdyYXRpb24gKi9cbi50ZXN0aW1vbmlhbC1xdW90ZS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgXG4gIC8qIENlbnRlciBpY29uIGFib3ZlIHF1b3RlIG9uIG1vYmlsZSwgc2lkZS1ieS1zaWRlIG9uIGxhcmdlciBzY3JlZW5zICovXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogSWNvbiBjb250YWluZXIgc3BhY2luZyB3aXRoaW4gY29tcG9uZW50IGNvbnRleHQgLSBubyB2aXN1YWwgc3R5bGluZyBwZXIgaWNvbi5jc3MgKi9cbi50ZXN0aW1vbmlhbC1jYXJkIC5pY29uLWNvbnRhaW5lci1iYXNlIHtcbiAgLyogRW5zdXJlIG1pbmltdW0gc2l6ZSBmb3IgcXVvdGUgaWNvbiAqL1xuICBtaW4td2lkdGg6IDQ4cHg7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG59XG5cbi8qIFF1b3RlIHRleHQgc3R5bGluZyAtIHVzZXMgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuLnRlc3RpbW9uaWFsLXF1b3RlIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBtYXJnaW46IDA7IC8qIFJlc2V0LCByZWx5IG9uIHBhcmVudCBnYXAgKi9cbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIFxuICAvKiBDZW50ZXIgb24gbW9iaWxlLCBsZWZ0LWFsaWduIG9uIGxhcmdlciBzY3JlZW5zICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogQXV0aG9yIGNvbnRhaW5lciBzdHlsaW5nIHdpdGggUFdBIGFuaW1hdGlvbiBzdXBwb3J0ICovXG4udGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvKiBDZW50ZXIgb24gbW9iaWxlICovXG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIG1hcmdpbi10b3A6IGF1dG87IC8qIFB1c2ggdG8gYm90dG9tIG9mIGZsZXggY29udGFpbmVyICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogQXZhdGFyIHdyYXBwZXIgc3R5bGluZyAqL1xuLnRlc3RpbW9uaWFsLWF2YXRhci13cmFwcGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpOyAvKiBTcGFjZSBiZWxvdyBhdmF0YXIgb24gbW9iaWxlIHN0YWNrICovXG59XG5cbi8qIEF2YXRhciBpbWFnZSBzdHlsaW5nICovXG4udGVzdGltb25pYWwtYXZhdGFyIHtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgXG4gIC8qIFRvdWNoLWZyaWVuZGx5IHNpemluZyBvbiBtb2JpbGUgKi9cbiAgbWluLXdpZHRoOiA0OHB4O1xuICBtaW4taGVpZ2h0OiA0OHB4O1xufVxuXG4vKiBBdXRob3IgaW5mbyBjb250YWluZXIgKi9cbi50ZXN0aW1vbmlhbC1hdXRob3ItaW5mbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMSk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8qIENlbnRlciBvbiBtb2JpbGUgKi9cbn1cblxuLyogQXV0aG9yIG5hbWUgc3R5bGluZyAtIHVzZXMgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuLnRlc3RpbW9uaWFsLWF1dGhvciB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbjogMDsgLyogUmVzZXQsIHJlbHkgb24gcGFyZW50IGdhcCAqL1xufVxuXG4vKiBBdXRob3IgdGl0bGUgc3R5bGluZyAtIHVzZXMgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuLnRlc3RpbW9uaWFsLXRpdGxlIHtcbiAgbWFyZ2luOiAwOyAvKiBSZXNldCwgcmVseSBvbiBwYXJlbnQgZ2FwICovXG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG4vKiBDb21wYW55IG5hbWUgc3R5bGluZyAtIHVzZXMgZ2xvYmFsIHR5cG9ncmFwaHkgY2xhc3NlcyAqL1xuLnRlc3RpbW9uaWFsLWNvbXBhbnkge1xuICBtYXJnaW46IDA7IC8qIFJlc2V0LCByZWx5IG9uIHBhcmVudCBnYXAgKi9cbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG59XG5cbi8qIFJlbW92ZSBlcnJvciBzdGF0ZSAtIGNvbXBvbmVudCByZXR1cm5zIGVtcHR5IGZyYWdtZW50IHBlciBzdGFuZGFyZHMgKi9cblxuLyogSG92ZXIgYW5kIGludGVyYWN0aXZlIHN0YXRlIGVuaGFuY2VtZW50cyAqL1xuLnRlc3RpbW9uaWFsLWNhcmQ6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogRmVhdHVyZWQgdGVzdGltb25pYWwgaG92ZXIgLSBtYWludGFpbnMgaGVyaXRhZ2UgYWNjZW50ICovXG4udGVzdGltb25pYWwtY2FyZC50ZXN0aW1vbmlhbC1mZWF0dXJlZDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMDQpO1xuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuNCk7XG4gIFxuICAvKiBIZXJpdGFnZSBhY2NlbnQgd2l0aCBob3ZlciBzaGFkb3cgKi9cbiAgYm94LXNoYWRvdzogXG4gICAgaW5zZXQgNHB4IDAgMCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSksXG4gICAgMCA4cHggMjVweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjE1KTtcbn1cblxuLnRlc3RpbW9uaWFsLWNhcmQ6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBQV0EgQW5pbWF0aW9uIEludGVncmF0aW9uICovXG4vKiBBbmltYXRpb24gY2xhc3NlcyBhcmUgZGVmaW5lZCBnbG9iYWxseSBpbiBzcmMvaW5kZXguY3NzICovXG4vKiBDb21wb25lbnQgQ1NTIHByb3ZpZGVzIGxheW91dCBzdXBwb3J0IGZvciBQV0EgYW5pbWF0aW9ucyAqL1xuLnRlc3RpbW9uaWFsLXF1b3RlLXdyYXBwZXIsXG4udGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lciB7XG4gIC8qIEVuc3VyZSBwcm9wZXIgbGF5b3V0IGZvciBzdGFnZ2VyZWQgYW5pbWF0aW9ucyAqL1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IC8qIEZvcmNlIEdQVSBhY2NlbGVyYXRpb24gKi9cbn1cblxuLyogQWNjZXNzaWJpbGl0eTogUmVzcGVjdCB1c2VyIHByZWZlcmVuY2VzIGZvciByZWR1Y2VkIG1vdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnRlc3RpbW9uaWFsLWNhcmQsXG4gIC50ZXN0aW1vbmlhbC1jYXJkOmhvdmVyLFxuICAudGVzdGltb25pYWwtY2FyZDphY3RpdmUsXG4gIC50ZXN0aW1vbmlhbC1xdW90ZS13cmFwcGVyLFxuICAudGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lciB7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLnRlc3RpbW9uaWFsLWNhcmQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbiAgXG4gIC50ZXN0aW1vbmlhbC1jYXJkLnRlc3RpbW9uaWFsLWZlYXR1cmVkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIGJveC1zaGFkb3c6IFxuICAgICAgaW5zZXQgNnB4IDAgMCBjdXJyZW50Q29sb3IsXG4gICAgICB2YXIoLS1zaGFkb3ctY2FyZCk7XG4gIH1cbn1cblxuLyogUmVzcG9uc2l2ZSBicmVha3BvaW50cyAtIE1vYmlsZSBmaXJzdCBhcHByb2FjaCAqL1xuXG4vKiBTbWFsbCBzY3JlZW5zICg2NDBweCBhbmQgdXApICovXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnRlc3RpbW9uaWFsLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xuICB9XG5cbiAgLnRlc3RpbW9uaWFsLXF1b3RlLXdyYXBwZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuICBcbiAgLnRlc3RpbW9uaWFsLXF1b3RlIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4gIFxuICAudGVzdGltb25pYWwtYXV0aG9yLWNvbnRhaW5lciB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cbiAgXG4gIC50ZXN0aW1vbmlhbC1hdXRob3ItaW5mbyB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cbn1cblxuLyogTWVkaXVtIHNjcmVlbnMgKDc2OHB4IGFuZCB1cCkgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVzdGltb25pYWwtcXVvdGUge1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07IC8qIFN1YnRsZSBzY2FsaW5nIHdpdGggZ2xvYmFsIHR5cG9ncmFwaHkgKi9cbiAgICBsaW5lLWhlaWdodDogMS43O1xuICB9XG5cbiAgLnRlc3RpbW9uaWFsLWF2YXRhciB7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIG1pbi13aWR0aDogNTZweDtcbiAgICBtaW4taGVpZ2h0OiA1NnB4O1xuICB9XG59XG5cbi8qIExhcmdlIHNjcmVlbnMgKDEwMjRweCBhbmQgdXApICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC50ZXN0aW1vbmlhbC1xdW90ZS13cmFwcGVyIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpOyAvKiBNb3JlIGdlbmVyb3VzIHNwYWNpbmcgKi9cbiAgfVxuICBcbiAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb250YWluZXIge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogRXh0cmEgbGFyZ2Ugc2NyZWVucyAoMTI4MHB4IGFuZCB1cCkgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLnRlc3RpbW9uaWFsLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKTsgLyogTW9yZSBnZW5lcm91cyBwYWRkaW5nIG9uIGRlc2t0b3AgKi9cbiAgfVxufVxuXG4vKiBQcmludCBzdHlsaW5nICovXG5AbWVkaWEgcHJpbnQge1xuICAudGVzdGltb25pYWwtY2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKSAhaW1wb3J0YW50O1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuXG4gIC8qIEljb24gY29udGFpbmVycyBoYXZlIG5vIHByaW50IHN0eWxpbmcgLSBsYXlvdXQgb25seSAqL1xufSIsIi8qIFRoZW1lIFRvZ2dsZSBDb21wb25lbnQgU3R5bGVzIC0gRkxBVCBERVNJR04gMjAyNSAqL1xuLyogQ1JJVElDQUw6IENvbXBvbmVudC1zcGVjaWZpYyBzdHlsaW5nIG9ubHkgLSB0aGVtZSBmb3VuZGF0aW9uIGluIGluZGV4LmNzcyAqL1xuXG4vKiBUaGVtZSBUb2dnbGUgQnV0dG9uICovXG4udGhlbWUtdG9nZ2xlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyLjVyZW07XG4gIGhlaWdodDogMi41cmVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tY29sb3JzKTtcbn1cblxuLnRoZW1lLXRvZ2dsZTpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMDUpO1xufVxuXG4udGhlbWUtdG9nZ2xlOmZvY3VzIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIFRoZW1lIFRvZ2dsZSBJY29uICovXG4udGhlbWUtdG9nZ2xlLWljb24ge1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWNvbG9ycyk7XG59XG5cbi8qIFRoZW1lIFRvZ2dsZSBTdGF0ZXMgKi9cbi50aGVtZS10b2dnbGUtLWxpZ2h0IC50aGVtZS10b2dnbGUtaWNvbi0tc3VuIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi50aGVtZS10b2dnbGUtLWxpZ2h0IC50aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi50aGVtZS10b2dnbGUtLWRhcmsgLnRoZW1lLXRvZ2dsZS1pY29uLS1zdW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udGhlbWUtdG9nZ2xlLS1kYXJrIC50aGVtZS10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBGbG9hdGluZyBUaGVtZSBUb2dnbGUgKi9cbi5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMXJlbTtcbiAgcmlnaHQ6IDFyZW07XG4gIHotaW5kZXg6IDUwO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5mbG9hdGluZy10aGVtZS10b2dnbGUge1xuICAgIHRvcDogMS41cmVtO1xuICAgIHJpZ2h0OiAxLjVyZW07XG4gIH1cbn1cblxuLyogUmVzcG9uc2l2ZSBEZXNpZ24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAudGhlbWUtdG9nZ2xlIHtcbiAgICB3aWR0aDogMi4yNXJlbTtcbiAgICBoZWlnaHQ6IDIuMjVyZW07XG4gIH1cbiAgXG4gIC50aGVtZS10b2dnbGUtaWNvbiB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG59XG4iLCIvKipcbiAqIFRpbWVsaW5lIENvbXBvbmVudCBTdHlsZXMgLSBCb3VuZGxlc3MgU3RhbmRhcmRzIENvbXBsaWFudFxuICogXG4gKiBTVEFOREFSRFMgQ09NUExJQU5DRTpcbiAqIOKchSBBcmNoaXRlY3R1cmUgU3RhbmRhcmQ6IFRocmVlLWxheWVyIENTUyBhcmNoaXRlY3R1cmUgd2l0aCBicmFuZCBmb3VuZGF0aW9uIHZhcmlhYmxlc1xuICog4pyFIDEwMCUgSW1wbGVtZW50YXRpb24gUnVsZTogQWxsIGRlZmluZWQgQ1NTIGNsYXNzZXMgYXJlIHVzZWQgaW4gVGltZWxpbmUudHN4XG4gKiDinIUgQ1NTIFZhcmlhYmxlczogVXNlcyBvbmx5IGRlZmluZWQgdmFyaWFibGVzIGZyb20gYnJhbmQgZm91bmRhdGlvbiAoc3JjL2luZGV4LmNzcylcbiAqIOKchSBQZXJmb3JtYW5jZTogSGFyZHdhcmUtYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucywgZWZmaWNpZW50IENTUyBjYXNjYWRlXG4gKiBcbiAqIFRIUkVFLUxBWUVSIENTUyBBUkNISVRFQ1RVUkU6XG4gKiAxLiBCcmFuZCBGb3VuZGF0aW9uOiAtLXNwYWNlLSosIC0tY29sb3ItKiwgLS1mb250LXNpemUtKiwgLS10aW1pbmctKiB2YXJpYWJsZXNcbiAqIDIuIENvbXBvbmVudCBFbmhhbmNlbWVudDogdGltZWxpbmUtKiBjbGFzc2VzIHdpdGggcmVzcG9uc2l2ZSBkZXNpZ25cbiAqIDMuIFBhZ2UgQ3VzdG9taXphdGlvbjogT3ZlcnJpZGUgY2xhc3NlcyB2aWEgc3R5bGVzIHByb3AgaW4gVGltZWxpbmUgY29tcG9uZW50XG4gKiBcbiAqIFJFU1BPTlNJVkUgU1lTVEVNOlxuICogLSBNb2JpbGUgKOKJpDc2N3B4KTogVmVydGljYWwgZmxleCBsYXlvdXQgd2l0aCB0b3VjaC1vcHRpbWl6ZWQgdGFyZ2V0c1xuICogLSBUYWJsZXQrICjiiaU3NjhweCk6IEhvcml6b250YWwgZ3JpZCBsYXlvdXQgd2l0aCBob3ZlciBlZmZlY3RzXG4gKiAtIEhpZ2gtcmVzICjiiaUyNTYwcHgpOiBFbmhhbmNlZCBzcGFjaW5nIGFuZCBwcmVtaXVtIHZpc3VhbCBlZmZlY3RzXG4gKiBcbiAqIEZFQVRVUkVTOlxuICogLSBNdWx0aS1yZXNvbHV0aW9uIHJlc3BvbnNpdmUgZGVzaWduIChtb2JpbGUgdG8gOEsrKVxuICogLSBIZXJpdGFnZSByZWQgY29tcGxpYW5jZSB3aXRoIDEwJSB1c2FnZSBsaW1pdFxuICogLSBCcmFuZGVkIGljb24gY29udGFpbmVyIGludGVncmF0aW9uXG4gKiAtIFBXQSBhbmltYXRpb24gc3lzdGVtIGNvbXBhdGliaWxpdHlcbiAqIC0gV0NBRyAyLjEgQUEgYWNjZXNzaWJpbGl0eSBjb21wbGlhbmNlXG4gKiAtIEhhcmR3YXJlLWFjY2VsZXJhdGVkIHRyYW5zaXRpb25zXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRJTUVMSU5FIENPTlRBSU5FUlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnRpbWVsaW5lLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50aW1lbGluZS1zcGFjaW5nLXdyYXBwZXIge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0xNik7IC8qIDY0cHggc3BhY2luZyBmcm9tIGRlc2NyaXB0aW9uICovXG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS04KTsgLyogMzJweCBib3R0b20gc3BhY2luZyAqL1xufVxuXG4udGltZWxpbmUtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNzIpOyAvKiA3MnB4IC0gaW5jcmVhc2VkIHNwYWNpbmcgKi9cbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTgpOyAvKiAzMnB4IHBhZGRpbmcgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRJTUVMSU5FIExBWU9VVCAtIEhPUklaT05UQUwgKERFRkFVTFQpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGltZWxpbmUtaG9yaXpvbnRhbCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTgpOyAvKiAzMnB4ICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7IC8qIFZlcnRpY2FsIHBhZGRpbmcgKi9cbn1cblxuLyogUmVtb3ZlIGNvbnRpbnVvdXMgbGluZSAtIHVzZSBpbmRpdmlkdWFsIGNvbm5lY3RvcnMgb25seSAqL1xuXG4udGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgei1pbmRleDogMjtcbn1cblxuLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gIG1heC13aWR0aDogMjgwcHg7XG59XG5cbi8qIEhvcml6b250YWwgQ29ubmVjdG9ycyAqL1xuLnRpbWVsaW5lLWhvcml6b250YWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMzJweDsgLyogQ2VudGVyIG9mIHN0ZXAgbnVtYmVyICovXG4gIGxlZnQ6IGNhbGMoMTAwJSArIHZhcigtLXNwYWNlLTQpKTtcbiAgd2lkdGg6IHZhcigtLXNwYWNlLTgpO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB6LWluZGV4OiAxO1xufVxuXG4udGltZWxpbmUtaG9yaXpvbnRhbC50aW1lbGluZS1jb25uZWN0ZWQgLnRpbWVsaW5lLWNvbm5lY3Rvcjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC00cHg7XG4gIHRvcDogLTJweDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci10b3A6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVElNRUxJTkUgTEFZT1VUIC0gVkVSVElDQUxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLnRpbWVsaW5lLXZlcnRpY2FsIC50aW1lbGluZS1zdGVwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xMik7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbCAudGltZWxpbmUtc3RlcDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnRpbWVsaW5lLXZlcnRpY2FsIC50aW1lbGluZS1zdGVwLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLnRpbWVsaW5lLXZlcnRpY2FsIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHotaW5kZXg6IDI7XG59XG5cbi50aW1lbGluZS12ZXJ0aWNhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBWZXJ0aWNhbCBDb25uZWN0b3JzICovXG4udGltZWxpbmUtdmVydGljYWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDMycHg7IC8qIENlbnRlciBvZiBzdGVwIG51bWJlciAqL1xuICB0b3A6IGNhbGMoMTAwJSAtIHZhcigtLXNwYWNlLTIpKTtcbiAgd2lkdGg6IDJweDtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xMik7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgei1pbmRleDogMTtcbn1cblxuLnRpbWVsaW5lLXZlcnRpY2FsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtc3RlcDpsYXN0LWNoaWxkIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBSZW1vdmUgY29udGludW91cyB2ZXJ0aWNhbCBsaW5lIC0gdXNlIGluZGl2aWR1YWwgY29ubmVjdG9ycyBvbmx5ICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTVEVQIElORElDQVRPUlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gIHdpZHRoOiA2NHB4O1xuICBoZWlnaHQ6IDY0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKHZhcigtLWNvbG9yLXNoYWRvdykgLyAwLjEpO1xufVxuXG4vKiBTdGVwIE51bWJlciBWYXJpYW50cyAqL1xuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi50aW1lbGluZS1zdGVwLW51bWJlci1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi50aW1lbGluZS1zdGVwLW51bWJlci13YXJuaW5nIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4udGltZWxpbmUtc3RlcC1udW1iZXItaGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgLyogSGVyaXRhZ2UgcmVkIGdldHMgZXh0cmEgc3BhY2luZyBwZXIgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpIDA7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4zKTtcbn1cblxuLyogU3RlcCBJY29uIFN1cHBvcnQgKi9cbi50aW1lbGluZS1zdGVwLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBDb250YWluZXIgTGF5b3V0IGZvciBUaW1lbGluZSAqL1xuLyogSWNvbiBjb250YWluZXJzIGhhdmUgbm8gdmlzdWFsIHN0eWxpbmcgLSBsYXlvdXQgb25seSAqL1xuXG4vKiBIb3ZlciBFZmZlY3RzICovXG4udGltZWxpbmUtc3RlcC1udW1iZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xNSk7XG59XG5cbi50aW1lbGluZS1zdGVwLW51bWJlci1oZXJpdGFnZTpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC40KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNURVAgQ09OVEVOVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnRpbWVsaW5lLXN0ZXAtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi50aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBTk5PVEFUSU9OIEJVQkJMRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC04cHg7XG4gIGxlZnQ6IGNhbGMoMTAwJSArIHZhcigtLXNwYWNlLTMpKTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWNhcmQpKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLWNvbG9yLXNoYWRvdykgLyAwLjEpO1xuICB6LWluZGV4OiAzO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLThweCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzZS1zbW9vdGgpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogQW5ub3RhdGlvbiBidWJibGUgcG9pbnRlciAqL1xuLnRpbWVsaW5lLWFubm90YXRpb246OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IC02cHg7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1jYXJkKSk7XG59XG5cbi50aW1lbGluZS1hbm5vdGF0aW9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IC03cHg7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgei1pbmRleDogLTE7XG59XG5cbi8qIFNob3cgYW5ub3RhdGlvbiBvbiBob3ZlciAqL1xuLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yOmhvdmVyIC50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU1RFUCBTVEFURVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50aW1lbGluZS1zdGVwLWNvbXBsZXRlZCAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi50aW1lbGluZS1zdGVwLWN1cnJlbnQgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjIpO1xuICBhbmltYXRpb246IHRpbWVsaW5lLXB1bHNlIDJzIGluZmluaXRlO1xufVxuXG4udGltZWxpbmUtc3RlcC11cGNvbWluZyAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG59XG5cbkBrZXlmcmFtZXMgdGltZWxpbmUtcHVsc2Uge1xuICAwJSwgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMik7XG4gIH1cbiAgNTAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA4cHggcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4xKTtcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUkVTUE9OU0lWRSBUSU1FTElORSBTWVNURU0gLSBNT0JJTEUgVE8gOEsrXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBNb2JpbGUgT25seSAtIFRydWUgTW9iaWxlIERldmljZXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAvKiBGb3JjZSB2ZXJ0aWNhbCBsYXlvdXQgb24gbW9iaWxlICovXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEwKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC13cmFwcGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1pbmRpY2F0b3Ige1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMSk7XG4gIH1cblxuICAvKiBNb2JpbGUgY29ubmVjdG9ycyAtIHZlcnRpY2FsIHN0eWxlICovXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgICBsZWZ0OiAzMnB4O1xuICAgIHRvcDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2UtMikpO1xuICAgIHdpZHRoOiAycHg7XG4gICAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xMCk7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3I6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtc3RlcDpsYXN0LWNoaWxkIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBTbWFsbGVyIHN0ZXAgbnVtYmVycyBvbiBtb2JpbGUgKi9cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1pY29uIHtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gIH1cblxuICAvKiBNb2JpbGUgYW5ub3RhdGlvbiBwb3NpdGlvbmluZyAqL1xuICAudGltZWxpbmUtYW5ub3RhdGlvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogYXV0bztcbiAgICBib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSB2YXIoLS1zcGFjZS04KSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLnRpbWVsaW5lLWFubm90YXRpb246OmJlZm9yZSxcbiAgLnRpbWVsaW5lLWFubm90YXRpb246OmFmdGVyIHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiBhdXRvO1xuICAgIGJvdHRvbTogLTZweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWFubm90YXRpb246OmFmdGVyIHtcbiAgICBib3R0b206IC03cHg7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB9XG5cbiAgLyogTW9iaWxlIHRvdWNoIHRhcmdldHMgKi9cbiAgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtaW4td2lkdGg6IDQ4cHg7XG4gICAgbWluLWhlaWdodDogNDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuLyogVGFibGV0KyBIb3Jpem9udGFsIExheW91dCAoNzY4cHgrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICAvKiBFbnN1cmUgaG9yaXpvbnRhbCBncmlkIGxheW91dCBpcyBwcmVzZXJ2ZWQgKi9cbiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSkgIWltcG9ydGFudDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTgpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSAwOyAvKiBWZXJ0aWNhbCBwYWRkaW5nICovXG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcCB7XG4gICAgLyogUmVzZXQgbW9iaWxlIG92ZXJyaWRlcyAqL1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC13cmFwcGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1pbmRpY2F0b3Ige1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxuXG4gIC8qIFJlc3RvcmUgaG9yaXpvbnRhbCBjb25uZWN0b3JzICovXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzMnB4O1xuICAgIGxlZnQ6IGNhbGMoMTAwJSArIHZhcigtLXNwYWNlLTQpKTtcbiAgICB3aWR0aDogdmFyKC0tc3BhY2UtOCk7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3I6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtNHB4O1xuICAgIHRvcDogLTJweDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vKiBEZXNrdG9wIEVuaGFuY2VtZW50cyAoMTAyNHB4KykgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnRpbWVsaW5lLWhvcml6b250YWwge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTApO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgd2lkdGg6IDcycHg7XG4gICAgaGVpZ2h0OiA3MnB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgfVxufVxuXG4vKiBMYXJnZSBEZXNrdG9wIE9wdGltaXphdGlvbnMgKDEyODBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEyKTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogMzYwcHg7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIGhlaWdodDogODBweDtcbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIH1cbn1cblxuLyogMksvNEsrIFVsdHJhLUhpZ2gtUmVzb2x1dGlvbiBEaXNwbGF5cyAoMjU2MHB4KykgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNTYwcHgpIHtcbiAgLnRpbWVsaW5lLWhvcml6b250YWwge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTYpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzAwcHgsIDFmcikpO1xuICAgIG1heC13aWR0aDogbm9uZTsgLyogQWxsb3cgZnVsbCB1dGlsaXphdGlvbiBvZiB1bHRyYS13aWRlIHNjcmVlbnMgKi9cbiAgfVxuXG4gIC50aW1lbGluZS1ob3Jpem9udGFsIC50aW1lbGluZS1zdGVwLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogNDIwcHg7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICAgIHdpZHRoOiA5NnB4O1xuICAgIGhlaWdodDogOTZweDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbiAgfVxuXG4gIC8qIEVuaGFuY2VkIHZpc3VhbCBoaWVyYXJjaHkgZm9yIGxhcmdlIGRpc3BsYXlzICovXG4gIC50aW1lbGluZS1zdGVwLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIH1cblxuICAvKiBVbHRyYS13aWRlIGNvbnRhaW5lciB1dGlsaXphdGlvbiAqL1xuICAudGltZWxpbmUtY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDI0MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuXG4vKiA0SysgRXh0cmVtZSBIaWdoLVJlc29sdXRpb24gKDM4NDBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogMzg0MHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBnYXA6IGNhbGModmFyKC0tc3BhY2luZykgKiAyMCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg0MDBweCwgMWZyKSk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0xNik7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDUwMHB4O1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogMTIwcHg7XG4gICAgaGVpZ2h0OiAxMjBweDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICAgIC8qIEVuaGFuY2VkIHNoYWRvdyBmb3IgNEsgY2xhcml0eSAqL1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xNSk7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1pbmRpY2F0b3Ige1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTEyKTtcbiAgfVxuXG4gIC8qIFByZW1pdW0gdmlzdWFsIGV4cGVyaWVuY2UgZm9yIDRLKyAqL1xuICAudGltZWxpbmUtc3RlcC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgICAvKiBFbmhhbmNlZCB0ZXh0IGNsYXJpdHkgZm9yIDRLICovXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gIC50aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuODtcbiAgICAvKiBJbXByb3ZlZCByZWFkYWJpbGl0eSBvbiBsYXJnZSBkaXNwbGF5cyAqL1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cblxuICAudGltZWxpbmUtY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDM2MDBweDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTIwKTtcbiAgfVxuXG4gIC8qIEVuaGFuY2VkIGNvbm5lY3RvcnMgZm9yIDRLICovXG4gIC50aW1lbGluZS1ob3Jpem9udGFsLnRpbWVsaW5lLWNvbm5lY3RlZCAudGltZWxpbmUtY29ubmVjdG9yIHtcbiAgICBoZWlnaHQ6IDNweDtcbiAgICB3aWR0aDogdmFyKC0tc3BhY2UtMTIpO1xuICAgIC8qIEdyYWRpZW50IGNvbm5lY3RvcnMgZm9yIHByZW1pdW0gNEsgZXhwZXJpZW5jZSAqL1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIHRvIHJpZ2h0LCBcbiAgICAgIHRyYW5zcGFyZW50IDAlLCBcbiAgICAgIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKSAyMCUsIFxuICAgICAgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpIDgwJSwgXG4gICAgICB0cmFuc3BhcmVudCAxMDAlXG4gICAgKTtcbiAgfVxuXG4gIC8qIEVuaGFuY2VkIGhvdmVyIGVmZmVjdHMgZm9yIDRLIHByZWNpc2lvbiAqL1xuICAudGltZWxpbmUtc3RlcC1udW1iZXI6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgICBib3gtc2hhZG93OiAwIDE2cHggNDhweCByZ2JhKHZhcigtLWNvbG9yLXNoYWRvdykgLyAwLjIpO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyLWhlcml0YWdlOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDE2cHggNDhweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjQpO1xuICB9XG5cbiAgLyogNEstb3B0aW1pemVkIGFubm90YXRpb24gYnViYmxlcyAqL1xuICAudGltZWxpbmUtYW5ub3RhdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBtYXgtd2lkdGg6IDMyMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xNSk7XG4gIH1cbn1cblxuLyogOEsrIEV4dHJlbWUgKDc2ODBweCspICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4MHB4KSB7XG4gIC50aW1lbGluZS1ob3Jpem9udGFsIHtcbiAgICBnYXA6IGNhbGModmFyKC0tc3BhY2luZykgKiAyNCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg1MDBweCwgMWZyKSk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0yNCk7XG4gIH1cblxuICAudGltZWxpbmUtaG9yaXpvbnRhbCAudGltZWxpbmUtc3RlcC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogMTYwcHg7XG4gICAgaGVpZ2h0OiAxNjBweDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS00eGwpO1xuICAgIC8qIFByZW1pdW0gOEsgc2hhZG93IHN5c3RlbSAqL1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCA0OHB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMTgpO1xuICB9XG5cbiAgLnRpbWVsaW5lLWhvcml6b250YWwgLnRpbWVsaW5lLXN0ZXAtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0xNik7XG4gIH1cblxuICAvKiBVbHRyYS1wcmVtaXVtIHR5cG9ncmFwaHkgZm9yIDhLIGRpc3BsYXlzICovXG4gIC50aW1lbGluZS1zdGVwLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTgpO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTJ4bCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBtYXgtd2lkdGg6IDU4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG5cbiAgLnRpbWVsaW5lLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA3MjAwcHg7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0zMik7XG4gIH1cblxuICAvKiBVbHRyYS1wcmVtaXVtIGhvdmVyIGVmZmVjdHMgZm9yIDhLICovXG4gIC50aW1lbGluZS1zdGVwLW51bWJlcjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMjRweCA2NHB4IHJnYmEodmFyKC0tY29sb3Itc2hhZG93KSAvIDAuMjUpO1xuICB9XG5cbiAgLnRpbWVsaW5lLXN0ZXAtbnVtYmVyLWhlcml0YWdlOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDI0cHggNjRweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjQ1KTtcbiAgfVxuXG4gIC8qIDhLLW9wdGltaXplZCBjb25uZWN0b3JzIHdpdGggcHJlbWl1bSBncmFkaWVudHMgKi9cbiAgLnRpbWVsaW5lLWhvcml6b250YWwudGltZWxpbmUtY29ubmVjdGVkIC50aW1lbGluZS1jb25uZWN0b3Ige1xuICAgIGhlaWdodDogNHB4O1xuICAgIHdpZHRoOiB2YXIoLS1zcGFjZS0xNik7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgdG8gcmlnaHQsXG4gICAgICB0cmFuc3BhcmVudCAwJSxcbiAgICAgIHJnYmEodmFyKC0tY29sb3ItYm9yZGVyKSAvIDAuMykgMTAlLFxuICAgICAgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpIDI1JSxcbiAgICAgIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKSA3NSUsXG4gICAgICByZ2JhKHZhcigtLWNvbG9yLWJvcmRlcikgLyAwLjMpIDkwJSxcbiAgICAgIHRyYW5zcGFyZW50IDEwMCVcbiAgICApO1xuICB9XG5cbiAgLyogUHJlbWl1bSBhbm5vdGF0aW9uIHN5c3RlbSBmb3IgOEsgKi9cbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDQ4cHggcmdiYSh2YXIoLS1jb2xvci1zaGFkb3cpIC8gMC4xOCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VTU0lCSUxJVFkgRU5IQU5DRU1FTlRTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG5cbiAgLnRpbWVsaW5lLWNvbm5lY3RvciB7XG4gICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC50aW1lbGluZS1zdGVwLW51bWJlcixcbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAudGltZWxpbmUtc3RlcC1jdXJyZW50IC50aW1lbGluZS1zdGVwLW51bWJlciB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG5cbiAgLnRpbWVsaW5lLWFubm90YXRpb24ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi8qIEZvY3VzIHN0YXRlcyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiAqL1xuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyOmZvY3VzIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1mb2N1cykpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiBTY3JlZW4gcmVhZGVyIGVuaGFuY2VtZW50cyAqL1xuLnRpbWVsaW5lLXN0ZXBbYXJpYS1jdXJyZW50PVwic3RlcFwiXSAudGltZWxpbmUtc3RlcC1udW1iZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBFUkZPUk1BTkNFIE9QVElNSVpBVElPTlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3Igc21vb3RoIGFuaW1hdGlvbnMgKi9cbi50aW1lbGluZS1zdGVwLW51bWJlcixcbi50aW1lbGluZS1hbm5vdGF0aW9uIHtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xufVxuXG4vKiBSZW1vdmUgd2lsbC1jaGFuZ2UgYWZ0ZXIgYW5pbWF0aW9ucyBjb21wbGV0ZSAqL1xuLnRpbWVsaW5lLXN0ZXAtbnVtYmVyOm5vdCg6aG92ZXIpLFxuLnRpbWVsaW5lLWFubm90YXRpb246bm90KDpob3Zlcikge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn0iLCIvKiBVc2UgQ2FzZSBDYXJkIENvbXBvbmVudCBTdHlsZXMgLSBNb2Rlcm4gQm9yZGVybGVzcyBEZXNpZ24gMjAyNSAqL1xuLyogRm9sbG93aW5nIGJyYW5kL2NvbXBvbmVudC9zdHlsaW5nLXN0YW5kYXJkLm1kIC0gVGhyZWUtTGF5ZXIgQ1NTIEFyY2hpdGVjdHVyZSAqL1xuXG4vKiBMYXllciAyOiBDb21wb25lbnQgRW5oYW5jZW1lbnQgLSBDb2xsZWN0aW9uIFBhdHRlcm4gKi9cblxuLyogVXNlIENhc2UgU2VjdGlvbiAtIENvbGxlY3Rpb24gQ29udGFpbmVyICovXG4udXNlLWNhc2Utc2VjdGlvbiB7XG4gIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMzIpICogMS4zKSAwOyAvKiBFeHRyZW1lIHdoaXRlc3BhY2UgKi9cbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2Utc21vb3RoKTtcbn1cblxuLyogVXNlIENhc2UgQ29udGFpbmVyIC0gQ29udGVudCBXcmFwcGVyICovXG4udXNlLWNhc2UtY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAxMjgwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogVXNlIENhc2UgSGVhZGVyIC0gQ29sbGVjdGlvbiBIZWFkZXIgKi9cbi51c2UtY2FzZS1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMTYpICogMS4zKTsgLyogSW5jcmVhc2VkIHNwYWNpbmcgKi9cbn1cblxuLyogVXNlIENhc2UgVGl0bGUgLSBFbmhhbmNlcyBnbG9iYWwgLnRpdGxlLXNlY3Rpb24gKi9cbi51c2UtY2FzZS10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xufVxuXG4vKiBVc2UgQ2FzZSBTdWJ0aXRsZSAtIEVuaGFuY2VzIGdsb2JhbCAuc3VidGl0bGUtbGcgKi9cbi51c2UtY2FzZS1zdWJ0aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMykgKiAxLjMpO1xufVxuXG4vKiBVc2UgQ2FzZSBEZXNjcmlwdGlvbiAtIEVuaGFuY2VzIGdsb2JhbCAuZGVzY3JpcHRpb24tbGcgKi9cbi51c2UtY2FzZS1kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMpO1xufVxuXG4vKiBJY29uIEludGVncmF0aW9uIC0gVXNlcyBnbG9iYWwgYnJhbmRlZCBpY29uIGNvbnRhaW5lciBzeXN0ZW0gKi9cbi51c2UtY2FzZS1pY29uIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyOyAvKiBFbnN1cmUgdmVydGljYWwgY2VudGVyaW5nICovXG4gIC8qIE5vIGJhY2tncm91bmQgY29sb3JzIHBlciBicmFuZCBndWlkZWxpbmVzIC0gY29udGFpbmVycyBhcmUgbGF5b3V0LW9ubHkgKi9cbn1cblxuLyogSW5kaXZpZHVhbCBVc2UgQ2FzZSBJdGVtcyAtIENhcmQgQ29udGVudCB3aXRoIEJPUkRFUkxFU1MgZGVzaWduICovXG4vKiBOb3RlOiBJbmRpdmlkdWFsIGNhcmRzIHVzZSBicmFuZCBlbmhhbmNlbWVudHMsIE5PIGJvcmRlcnMgKi9cblxuLyogVXNlIENhc2UgSXRlbSBUaXRsZSAtIEVuaGFuY2VzIGdsb2JhbCAudGl0bGUtY2FyZCAqL1xuLnVzZS1jYXNlLWl0ZW0tdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTtcbn1cblxuLyogVXNlIENhc2UgSXRlbSBTdWJ0aXRsZSAtIEVuaGFuY2VzIGdsb2JhbCAuc3VidGl0bGUtc20gKi9cbi51c2UtY2FzZS1pdGVtLXN1YnRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMyk7XG59XG5cbi8qIFVzZSBDYXNlIEl0ZW0gRGVzY3JpcHRpb24gLSBFbmhhbmNlcyBnbG9iYWwgLmRlc2NyaXB0aW9uICovXG4udXNlLWNhc2UtaXRlbS1kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNCkgKiAxLjMpO1xuICBmbGV4LWdyb3c6IDE7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIFVzZSBDYXNlIEJlbmVmaXRzIExpc3QgKi9cbnVsLnVzZS1jYXNlLWJlbmVmaXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMykgYXV0byAwIGF1dG8gIWltcG9ydGFudDsgLyogU3BhY2luZyBmcm9tIGNvbnRlbnQgYWJvdmUsIHB1c2ggdG8gYm90dG9tICovXG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyAvKiBMZWZ0IGFsaWduIGl0ZW1zIGZvciBpY29uIGFsaWdubWVudCAtIG92ZXJyaWRlIHRleHQtY2VudGVyICovXG4gIGdhcDogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMykgIWltcG9ydGFudDsgLyogSW5jcmVhc2VkIHNwYWNpbmcgYmV0d2VlbiBpdGVtcyAqL1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvKiBGdWxsIHdpZHRoIGZvciBwcm9wZXIgbGF5b3V0ICovXG4gIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgLyogT3ZlcnJpZGUgcGFyZW50IHRleHQtY2VudGVyICovXG59XG5cbmxpLnVzZS1jYXNlLWJlbmVmaXQge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IC8qIENoYW5nZWQgdG8gZmxleCBmb3IgZnVsbCB3aWR0aCBsYXlvdXQgLSBvdmVycmlkZSBhbnkgbGlzdC1pdGVtICovXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IC8qIEFsaWduIHRvIHRvcCBmb3Igd3JhcHBlZCB0ZXh0ICovXG4gIGdhcDogY2FsYyh2YXIoLS1zcGFjZS0yKSAqIDEuMyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBmb250LXNpemU6IG1heCgwLjg3NXJlbSwgMTRweCk7IC8qIFByZXZlbnQgbW9iaWxlIHpvb20gKi9cbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggZm9yIHByb3BlciBhbGlnbm1lbnQgKi9cbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyAvKiBMZWZ0IGFsaWduIHRleHQgLSBvdmVycmlkZSBwYXJlbnQgKi9cbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyAvKiBFbnN1cmUgbGVmdCBhbGlnbm1lbnQgKi9cbiAgbWFyZ2luOiAwOyAvKiBSZXNldCBhbnkgZGVmYXVsdCBtYXJnaW5zICovXG4gIHBhZGRpbmc6IDA7IC8qIFJlc2V0IGFueSBkZWZhdWx0IHBhZGRpbmcgKi9cbiAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50OyAvKiBSZW1vdmUgbGlzdCBzdHlsaW5nICovXG59XG5cbi51c2UtY2FzZS1iZW5lZml0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBCZW5lZml0IGljb25zIGhhbmRsZWQgYnkgZ2xvYmFsIGljb24gc3lzdGVtICovXG4udXNlLWNhc2UtYmVuZWZpdC1pY29uIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xuICB3aWR0aDogMTZweDsgLyogRml4ZWQgd2lkdGggZm9yIHZlcnRpY2FsIGFsaWdubWVudCAqL1xuICBoZWlnaHQ6IDE2cHg7IC8qIEZpeGVkIGhlaWdodCAqL1xuICBtYXJnaW4tdG9wOiAwLjEyNXJlbTsgLyogRmluZS10dW5lIHZlcnRpY2FsIHBvc2l0aW9uIHdpdGggdGV4dCBiYXNlbGluZSAqL1xufVxuXG4vKiBCZW5lZml0IHRleHQgc3R5bGluZyAqL1xuLnVzZS1jYXNlLWJlbmVmaXQgc3BhbiB7XG4gIGZsZXg6IDE7IC8qIFRha2UgcmVtYWluaW5nIHNwYWNlICovXG4gIGxpbmUtaGVpZ2h0OiAxLjU7IC8qIENvbnNpc3RlbnQgbGluZSBoZWlnaHQgZm9yIHJlYWRhYmlsaXR5ICovXG59XG5cbi8qIEluZGl2aWR1YWwgVXNlIENhc2UgQ2FyZHMgLSBCT1JERVJMRVNTIE1vZGVybiBEZXNpZ24gKi9cbi51c2UtY2FzZS1pdGVtLWNhcmQge1xuICAvKiBDYXJkIGZvdW5kYXRpb24gd2l0aCBCT1JERVJMRVNTIGRlc2lnbiAqL1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItY2FyZCkpO1xuICBib3JkZXI6IDA7IC8qIENSSVRJQ0FMOiBObyBib3JkZXJzIHBlciBzdHlsaW5nIHN0YW5kYXJkICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIFxuICAvKiBFbGV2YXRpb24gdGhyb3VnaCBzaGFkb3dzIGluc3RlYWQgb2YgYm9yZGVycyAqL1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsgLyogU3VidGxlIGJhc2UgZWxldmF0aW9uICovXG4gIFxuICAvKiBMYXlvdXQgKi9cbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBcbiAgLyogRVhUUkVNRSB3aGl0ZXNwYWNlIC0gMzAlIG1vcmUgc3BhY2luZyAqL1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTYpICogMS4zKTsgLyogfjMxcHggd2l0aCBleHRyZW1lIHNwYWNpbmcgKi9cbiAgXG4gIC8qIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgKi9cbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNlLXNtb290aCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdztcbn1cblxuLyogQ2xlYW4gdXAgd2lsbC1jaGFuZ2UgYWZ0ZXIgaW50ZXJhY3Rpb24gKi9cbi51c2UtY2FzZS1pdGVtLWNhcmQ6bm90KDpob3Zlcik6bm90KDpmb2N1cykge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn1cblxuLyogQ2FyZCBib2R5IGNvbnRlbnQgd3JhcHBlciAqL1xuLnVzZS1jYXNlLWl0ZW0tY2FyZCAuY2FyZC1ib2R5IHtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHZhcigtLXNwYWNlLTMpICogMS4zKTsgLyogSW5jcmVhc2VkIHNwYWNpbmcgYmV0d2VlbiBlbGVtZW50cyAqL1xufVxuXG4vKiBUcmFuc3BhcmVudCB2YXJpYW50IC0gbm8gYm9yZGVycyBvciBzaGFkb3dzICovXG4udXNlLWNhc2UtaXRlbS1jYXJkLnVzZS1jYXNlLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlcjogMDsgLyogRW5zdXJlIG5vIGJvcmRlcnMgKi9cbn1cblxuLyogSG92ZXIgc3RhdGUgLSBlbGV2YXRpb24gY2hhbmdlLCBOTyBib3JkZXIgY2hhbmdlcyAqL1xuLnVzZS1jYXNlLWl0ZW0tY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTIpOyAvKiBJbmNyZWFzZWQgZWxldmF0aW9uICovXG4gIGJvcmRlcjogMDsgLyogTWFpbnRhaW4gYm9yZGVybGVzcyBkZXNpZ24gKi9cbn1cblxuLyogQWN0aXZlIHN0YXRlICovXG4udXNlLWNhc2UtaXRlbS1jYXJkOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7IC8qIFByZXNzZWQgc3RhdGUgKi9cbn1cblxuLyogRmVhdHVyZWQgY2FyZCB2YXJpYW50IHdpdGggaGVyaXRhZ2UgYWNjZW50ICovXG4udXNlLWNhc2UtY2FyZC1mZWF0dXJlZCB7XG4gIC8qIFN1YnRsZSBoZXJpdGFnZSBhY2NlbnQgdXNpbmcgc2hhZG93IGluc3RlYWQgb2YgYm9yZGVyICovXG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLCAvKiBMZWZ0IGFjY2VudCAqL1xuICAgIDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyAvKiBCYXNlIGVsZXZhdGlvbiAqL1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2UtNikgKiAxLjMgKyB2YXIoLS1zcGFjZS0yKSk7IC8qIEV4dHJhIHBhZGRpbmcgZm9yIGFjY2VudCAqL1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjAyKTsgLyogVmVyeSBzdWJ0bGUgdGludCAqL1xuICBtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMpIDA7IC8qIEV4dHJhIHZlcnRpY2FsIHNwYWNlIGZvciBoZXJpdGFnZSAqL1xufVxuXG4udXNlLWNhc2UtY2FyZC1mZWF0dXJlZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IFxuICAgIGluc2V0IDRweCAwIDAgcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpLFxuICAgIDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4wNCk7XG59XG5cbi8qIE1vYmlsZS1GaXJzdCBSZXNwb25zaXZlIERlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC51c2UtY2FzZS1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTI0KSAqIDEuMykgMDsgLyogU3RpbGwgZ2VuZXJvdXMgb24gbW9iaWxlICovXG4gIH1cbiAgXG4gIC51c2UtY2FzZS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNCk7XG4gIH1cbiAgXG4gIC51c2UtY2FzZS1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtMTIpICogMS4zKTtcbiAgfVxuICBcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgLyogQWRqdXN0ZWQgYnV0IHN0aWxsIGdlbmVyb3VzIHBhZGRpbmcgb24gbW9iaWxlICovXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7IC8qIH4yMXB4ICovXG4gIH1cbiAgXG4gIC8qIFJlZHVjZSBob3ZlciBsaWZ0IG9uIG1vYmlsZSAqL1xuICAudXNlLWNhc2UtaXRlbS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cbn1cblxuLyogVG91Y2ggVGFyZ2V0IE9wdGltaXphdGlvbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC51c2UtY2FzZS1pdGVtLWNhcmQge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG4gIFxuICAvKiBFbnN1cmUgaW50ZXJhY3RpdmUgZWxlbWVudHMgbWVldCA0OHB4IG1pbmltdW0gKi9cbiAgbGkudXNlLWNhc2UtYmVuZWZpdCB7XG4gICAgbWluLWhlaWdodDogMzJweDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyAvKiBLZWVwIGljb25zIGFsaWduZWQgdG8gdG9wIG9uIG1vYmlsZSAqL1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgLyogRW5zdXJlIGZsZXggbGF5b3V0IG9uIG1vYmlsZSAqL1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgLyogRW5zdXJlIGxlZnQgYWxpZ25tZW50IG9uIG1vYmlsZSAqL1xuICAgIGxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDsgLyogUmVtb3ZlIGxpc3Qgc3R5bGluZyBvbiBtb2JpbGUgKi9cbiAgfVxufVxuXG4vKiBUYWJsZXQgZW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS02KSAqIDEuMik7IC8qIFNsaWdodGx5IGxlc3MgdGhhbiBkZXNrdG9wICovXG4gIH1cbn1cblxuLyogSGlnaC1yZXNvbHV0aW9uIGRpc3BsYXlzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMjU2MHB4KSB7XG4gIC51c2UtY2FzZS1pdGVtLWNhcmQge1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtOCkgKiAxLjMpOyAvKiBFdmVuIG1vcmUgZ2VuZXJvdXMgKi9cbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICB9XG4gIFxuICAudXNlLWNhc2UtaXRlbS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTZweCk7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgfVxufVxuXG4vKiBIaWdoIENvbnRyYXN0IE1vZGUgU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gIC51c2UtY2FzZS1pdGVtLWNhcmQge1xuICAgIC8qIFVzZSBvdXRsaW5lIGluc3RlYWQgb2YgYm9yZGVyIGZvciBoaWdoIGNvbnRyYXN0ICovXG4gICAgb3V0bGluZTogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuICBcbiAgLnVzZS1jYXNlLWNhcmQtZmVhdHVyZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBNb3Rpb24gU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLnVzZS1jYXNlLWl0ZW0tY2FyZCB7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC51c2UtY2FzZS1pdGVtLWNhcmQ6aG92ZXIsXG4gIC51c2UtY2FzZS1pdGVtLWNhcmQ6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKiBBY2Nlc3NpYmlsaXR5IC0gRm9jdXMgU3RhdGVzICovXG4udXNlLWNhc2UtaXRlbS1jYXJkOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiBcbiAgICAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1mb2N1cykgLyAwLjUpLCAvKiBGb2N1cyByaW5nICovXG4gICAgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IC8qIE1haW50YWluIGJhc2UgZWxldmF0aW9uICovXG59XG5cbi8qIFNjcmVlbiByZWFkZXIgb25seSBjb250ZW50ICovXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgYm9yZGVyOiAwO1xufSIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCb3VuZGxlc3MgU29mdHdhcmUgLSBHbG9iYWwgQnJhbmQgRm91bmRhdGlvblxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFxuICAgQ29tcGxldGUgYnJhbmQgZm91bmRhdGlvbiBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBCUkFORC1HVUlERS5tZFxuICAgVGhpcyBpcyBMYXllciAxIG9mIHRoZSAzLWxheWVyIENTUyBhcmNoaXRlY3R1cmUgc3lzdGVtLlxuICAgXG4gICBDb250ZW50czpcbiAgIDEuIEltcG9ydHMgKFRhaWx3aW5kLCBGb250cywgQ29tcG9uZW50cylcbiAgIDIuIENTUyBDdXN0b20gUHJvcGVydGllcyAoQ29tcGxldGUgYnJhbmQgc3lzdGVtKVxuICAgMy4gQmFzZSBTdHlsZXMgJiBSZXNldHNcbiAgIDQuIFNlbWFudGljIFR5cG9ncmFwaHkgQ2xhc3NlcyAoUkVRVUlSRUQpXG4gICA1LiBCdXR0b24gU3lzdGVtIChTdHJhdGVnaWMgUmVkIEhpZXJhcmNoeSlcbiAgIDYuIExheW91dCBVdGlsaXRpZXNcbiAgIDcuIEdyaWQgU3lzdGVtXG4gICA4LiBDYXJkIENvbXBvbmVudHNcbiAgIDkuIFV0aWxpdHkgQ2xhc3Nlc1xuICAgMTAuIEFuaW1hdGlvbiBDbGFzc2VzXG4gICAxMS4gQWNjZXNzaWJpbGl0eSBGZWF0dXJlc1xuICAgMTIuIE1vZGVybiBBbmltYXRpb25zXG4gICAxMy4gRGF0YSBWaXN1YWxpemF0aW9uIEZvdW5kYXRpb25zXG4gICAxNC4gQ29tcG9uZW50IFN0eWxlIEltcG9ydHNcbiAgIFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEuIElNUE9SVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRhaWx3aW5kIENTUyB2NCBCYXNlICovXG5AaW1wb3J0IFwidGFpbHdpbmRjc3NcIjtcblxuLyogR29vZ2xlIEZvbnRzIC0gQnJhbmQgR3VpZGUgQ29tcGxpYW50IExvYWRpbmdcbiAqIE5vdGU6IFByaW1hcnkgZm9udCBsb2FkaW5nIGhhbmRsZWQgaW4gTGF5b3V0V2l0aEhlYWRlci50c3ggZm9yIG9wdGltYWwgcGVyZm9ybWFuY2VcbiAqIFRoaXMgaW1wb3J0IHNlcnZlcyBhcyBmYWxsYmFjayBmb3IgY29tcG9uZW50cyB0aGF0IGRvbid0IHVzZSB0aGUgbGF5b3V0IHdyYXBwZXJcbiAqL1xuXG4vKiBDb21wb25lbnQtc3BlY2lmaWMgQ1NTIGZpbGVzICovXG4vKiBUaGVzZSBleHRlbmQgdGhlIGZvdW5kYXRpb24gd2l0aCBjb21wb25lbnQtc3BlY2lmaWMgc3R5bGVzICovXG4vKiBVc2luZyBpbXBvcnQtZ2xvYiB0byBhdXRvbWF0aWNhbGx5IGltcG9ydCBhbGwgY29tcG9uZW50IENTUyBmaWxlcyAqL1xuQGltcG9ydC1nbG9iIFwiLi9zdHlsZXMvY29tcG9uZW50cy8qLmNzc1wiO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMi4gQ1NTIENVU1RPTSBQUk9QRVJUSUVTIC0gQ29tcGxldGUgQnJhbmQgU3lzdGVtXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG46cm9vdCB7XG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgQnJhbmQgQ29sb3JzIC0gQ29yZVxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4gIFxuICAvKiBQcm9mZXNzaW9uYWwgU2xhdGUgR3JheSAtIFByaW1hcnkgQnJhbmQgRm91bmRhdGlvbiAqL1xuICAtLWNvbG9yLXByaW1hcnk6IDcxIDg1IDEwNTsgICAgICAgICAgICAgIC8qICM0NzU1NjkgKi9cbiAgLS1jb2xvci1wcmltYXJ5LWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1OyAvKiBXaGl0ZSBvbiBwcmltYXJ5ICovXG4gIFxuICAvKiBDb21wbGV0ZSBTbGF0ZSBHcmF5IFNjYWxlICovXG4gIC0tY29sb3ItcHJpbWFyeS01MDogMjQ4IDI1MCAyNTI7ICAgICAgICAgLyogI2Y4ZmFmYyAqL1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAyNDEgMjQ1IDI0OTsgICAgICAgIC8qICNmMWY1ZjkgKi9cbiAgLS1jb2xvci1wcmltYXJ5LTIwMDogMjI2IDIzMiAyNDA7ICAgICAgICAvKiAjZTJlOGYwICovXG4gIC0tY29sb3ItcHJpbWFyeS0zMDA6IDIwMyAyMTMgMjI1OyAgICAgICAgLyogI2NiZDVlMSAqL1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAxNDggMTYzIDE4NDsgICAgICAgIC8qICM5NGEzYjggKi9cbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogMTAwIDExNiAxMzk7ICAgICAgICAvKiAjNjQ3NDhiICovXG4gIC0tY29sb3ItcHJpbWFyeS02MDA6IDcxIDg1IDEwNTsgICAgICAgICAgLyogIzQ3NTU2OSBQUklNQVJZICovXG4gIC0tY29sb3ItcHJpbWFyeS03MDA6IDUxIDY1IDg1OyAgICAgICAgICAgLyogIzMzNDE1NSAqL1xuICAtLWNvbG9yLXByaW1hcnktODAwOiAzMCA0MSA1OTsgICAgICAgICAgIC8qICMxZTI5M2IgKi9cbiAgLS1jb2xvci1wcmltYXJ5LTkwMDogMTUgMjMgNDI7ICAgICAgICAgICAvKiAjMGYxNzJhICovXG4gIC0tY29sb3ItcHJpbWFyeS05NTA6IDIgNiAyMzsgICAgICAgICAgICAgLyogIzAyMDYxNyAqL1xuICBcbiAgLyogSW5kaWFuIFJlZCBIZXJpdGFnZSBBY2NlbnQgLSBTdHJhdGVnaWMgSW5ub3ZhdGlvbiAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZTogMjA1IDkyIDkyOyAgICAgIC8qICNDRDVDNUMgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIFxuICAvKiBDb21wbGV0ZSBIZXJpdGFnZSBSZWQgU2NhbGUgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNTA6IDI1NCAyNDIgMjQyOyAgLyogI2ZlZjJmMiAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDA6IDI1NCAyMjkgMjI5OyAvKiAjZmVlNWU1ICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTIwMDogMjU0IDIwMiAyMDI7IC8qICNmZWNhY2EgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMzAwOiAyNTIgMTY1IDE2NTsgLyogI2ZjYTVhNSAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS00MDA6IDI0OCAxMTMgMTEzOyAvKiAjZjg3MTcxICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwMDogMjM5IDY4IDY4OyAgIC8qICNlZjQ0NDQgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNjAwOiAyMjAgMzggMzg7ICAgLyogI2RjMjYyNiAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS03MDA6IDE4NSAyOCAyODsgICAvKiAjYjkxYzFjICovXG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTgwMDogMTUzIDI3IDI3OyAgIC8qICM5OTFiMWIgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtOTAwOiAxMjcgMjkgMjk7ICAgLyogIzdmMWQxZCAqL1xuICBcbiAgLyogU3RyYXRlZ2ljIFJlZCBVc2FnZSBUcmFja2luZyAqL1xuICAtLXJlZC1wcmltYXJ5LXVzYWdlOiAxMCU7ICAgIC8qIENUQXMsIGtleSBhY3Rpb25zICovXG4gIC0tcmVkLWFjY2VudC11c2FnZTogNSU7ICAgICAgLyogSGlnaGxpZ2h0cywgaW5kaWNhdG9ycyAqL1xuICAtLXJlZC1zdWJ0bGUtdXNhZ2U6IDIlOyAgICAgIC8qIEJvcmRlcnMsIGJhY2tncm91bmRzICovXG4gIFxuICAvKiBTdHJhdGVnaWMgUmVkIFdoaXRlc3BhY2UgLSAyNS0zNSUgbW9yZSB0aGFuIHN0YW5kYXJkICovXG4gIC0tc3BhY2UtaGVyaXRhZ2UteHM6IDAuNzVyZW07ICAgLyogMTJweCAqL1xuICAtLXNwYWNlLWhlcml0YWdlLXNtOiAxLjVyZW07ICAgIC8qIDI0cHggKi9cbiAgLS1zcGFjZS1oZXJpdGFnZS1tZDogMi41cmVtOyAgICAvKiA0MHB4ICovXG4gIC0tc3BhY2UtaGVyaXRhZ2UtbGc6IDRyZW07ICAgICAgLyogNjRweCAqL1xuICAtLXNwYWNlLWhlcml0YWdlLXhsOiA2cmVtOyAgICAgIC8qIDk2cHggKi9cbiAgXG4gIC8qIENvbXBvbmVudC1zcGVjaWZpYyBoZXJpdGFnZSBzcGFjaW5nICovXG4gIC0tYnRuLWhlcml0YWdlLXBhZGRpbmcteDogMS41cmVtO1xuICAtLWJ0bi1oZXJpdGFnZS1tYXJnaW46IDEuNXJlbTtcbiAgLS10ZXh0LWhlcml0YWdlLXNwYWNpbmc6IDEuMjVyZW07XG4gIC0tY2FyZC1oZXJpdGFnZS1tYXJnaW46IDJyZW07XG4gIFxuICAvKiBOYXZ5IEJsdWUgU2Vjb25kYXJ5IC0gVHJ1c3QgJiBUZWNobm9sb2d5ICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5OiAzMCA1OCAxMzg7ICAgICAgICAgICAgLyogIzFlM2E4YSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTtcbiAgXG4gIC8qIENvbXBsZXRlIE5hdnkgQmx1ZSBTY2FsZSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS01MDogMjM5IDI0NiAyNTU7ICAgICAgIC8qICNlZmY2ZmYgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktMTAwOiAyMTkgMjM0IDI1NDsgICAgICAvKiAjZGJlYWZlICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTIwMDogMTkxIDIxOSAyNTQ7ICAgICAgLyogI2JmZGJmZSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS0zMDA6IDE0NyAxOTcgMjUzOyAgICAgIC8qICM5M2M1ZmQgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktNDAwOiA5NiAxNjUgMjUwOyAgICAgICAvKiAjNjBhNWZhICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTUwMDogNTkgMTMwIDI0NjsgICAgICAgLyogIzNiODJmNiAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS02MDA6IDM3IDk5IDIzNTsgICAgICAgIC8qICMyNTYzZWIgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktNzAwOiAyOSA3OCAyMTY7ICAgICAgICAvKiAjMWQ0ZWQ4ICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5LTgwMDogMzAgNjQgMTc1OyAgICAgICAgLyogIzFlNDBhZiAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS05MDA6IDMwIDU4IDEzODsgICAgICAgIC8qICMxZTNhOGEgU0VDT05EQVJZICovXG4gIFxuICAvKiBTZW1hbnRpYyBDb2xvcnMgKi9cbiAgLS1jb2xvci1zdWNjZXNzOiAxNiAxODUgMTI5OyAgICAgICAgICAgICAvKiAjMTBiOTgxIC0gRW1lcmFsZCAqL1xuICAtLWNvbG9yLXN1Y2Nlc3MtZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIC0tY29sb3Itd2FybmluZzogMjQ1IDE1OCAxMTsgICAgICAgICAgICAgLyogI2Y1OWUwYiAtIEFtYmVyICovXG4gIC0tY29sb3Itd2FybmluZy1mb3JlZ3JvdW5kOiAwIDAgMDtcbiAgLS1jb2xvci1lcnJvcjogMTg1IDI4IDI4OyAgICAgICAgICAgICAgICAvKiAjYjkxYzFjIC0gRXJyb3IgUmVkICovXG4gIC0tY29sb3ItZXJyb3ItZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIC0tY29sb3ItaW5mbzogNTkgMTMwIDI0NjsgICAgICAgICAgICAgICAgLyogIzNiODJmNiAtIEJsdWUgKi9cbiAgLS1jb2xvci1pbmZvLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICBcbiAgLyogTmV1dHJhbCBVSSBDb2xvcnMgKi9cbiAgLS1jb2xvci1iYWNrZ3JvdW5kOiAyNTUgMjU1IDI1NTsgICAgICAgICAvKiBXaGl0ZSAqL1xuICAtLWNvbG9yLWZvcmVncm91bmQ6IDE1IDIzIDQyOyAgICAgICAgICAgIC8qIE5lYXJseSBibGFjayAqL1xuICAtLWNvbG9yLW11dGVkOiAyNDEgMjQ1IDI0OTsgICAgICAgICAgICAgIC8qIExpZ2h0IGdyYXkgYmcgKi9cbiAgLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kOiAxMDAgMTE2IDEzOTsgICAvKiBNZWRpdW0gZ3JheSB0ZXh0ICovXG4gIC0tY29sb3ItYm9yZGVyOiAyMjYgMjMyIDI0MDsgICAgICAgICAgICAgLyogTGlnaHQgYm9yZGVycyAqL1xuICAtLWNvbG9yLXJpbmc6IDcxIDg1IDEwNTsgICAgICAgICAgICAgICAgIC8qIEZvY3VzIHJpbmcgKi9cbiAgXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgVHlwb2dyYXBoeSBTeXN0ZW1cbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLyogRm9udCBGYW1pbGllcyAqL1xuICAtLWZvbnQtZmFtaWx5LXNhbnM6ICdJbnRlcicsIHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgLS1mb250LWZhbWlseS1kaXNwbGF5OiAnU3BhY2UgR3JvdGVzaycsIHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgLS1mb250LWZhbWlseS1tb25vOiAnSmV0QnJhaW5zIE1vbm8nLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBcIlNGIE1vbm9cIiwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIE1lbmxvLCBtb25vc3BhY2U7XG4gIFxuICAvKiBGb250IFNpemVzIC0gVHJhZGl0aW9uYWwgU2NhbGUgKi9cbiAgLS1mb250LXNpemUteHM6IDAuNzVyZW07ICAgICAvKiAxMnB4ICovXG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTsgICAgLyogMTRweCAqL1xuICAtLWZvbnQtc2l6ZS1iYXNlOiAxcmVtOyAgICAgIC8qIDE2cHggKi9cbiAgLS1mb250LXNpemUtbGc6IDEuMTI1cmVtOyAgICAvKiAxOHB4ICovXG4gIC0tZm9udC1zaXplLXhsOiAxLjI1cmVtOyAgICAgLyogMjBweCAqL1xuICAtLWZvbnQtc2l6ZS0yeGw6IDEuNXJlbTsgICAgIC8qIDI0cHggKi9cbiAgLS1mb250LXNpemUtM3hsOiAxLjg3NXJlbTsgICAvKiAzMHB4ICovXG4gIC0tZm9udC1zaXplLTR4bDogMi4yNXJlbTsgICAgLyogMzZweCAqL1xuICAtLWZvbnQtc2l6ZS01eGw6IDNyZW07ICAgICAgIC8qIDQ4cHggKi9cbiAgLS1mb250LXNpemUtNnhsOiAzLjc1cmVtOyAgICAvKiA2MHB4ICovXG4gIC0tZm9udC1zaXplLTd4bDogNC41cmVtOyAgICAgLyogNzJweCAqL1xuICAtLWZvbnQtc2l6ZS04eGw6IDZyZW07ICAgICAgIC8qIDk2cHggKi9cbiAgLS1mb250LXNpemUtOXhsOiA4cmVtOyAgICAgICAvKiAxMjhweCAqL1xuICBcbiAgLyogSGVyby9EaXNwbGF5IFR5cG9ncmFwaHkgLSBNb2JpbGUtRmlyc3QgUmVzcG9uc2l2ZSAqL1xuICAtLXRleHQtaGVybzogY2xhbXAoM3JlbSwgOHZ3LCA3cmVtKTsgICAgICAvKiA0OHB4IOKGkiAxMTJweCAqL1xuICAtLXRleHQtZGlzcGxheTogY2xhbXAoMi41cmVtLCA2dncsIDVyZW0pOyAvKiA0MHB4IOKGkiA4MHB4ICovXG4gIC0tdGV4dC1oZWFkbGluZTogY2xhbXAoMnJlbSwgNHZ3LCAzLjVyZW0pOy8qIDMycHgg4oaSIDU2cHggKi9cbiAgXG4gIC8qIE1vYmlsZS1GaXJzdCBGb250IFNpemVzIHdpdGggRmx1aWQgU2NhbGluZyAqL1xuICAtLWZvbnQtc2l6ZS1iYXNlLW1vYmlsZTogY2xhbXAoMC44NzVyZW0sIDJ2dyArIDAuNXJlbSwgMS4xMjVyZW0pOyAvKiAxNHB4LTE4cHggKi9cbiAgLS1mb250LXNpemUtaGVyby1tb2JpbGU6IGNsYW1wKDJyZW0sIDV2dyArIDFyZW0sIDQuNXJlbSk7XG4gIC0tZm9udC1zaXplLWgxLW1vYmlsZTogY2xhbXAoMS43NXJlbSwgNHZ3ICsgMC41cmVtLCAzcmVtKTtcbiAgLS1mb250LXNpemUtaDItbW9iaWxlOiBjbGFtcCgxLjVyZW0sIDN2dyArIDAuNXJlbSwgMi4yNXJlbSk7XG4gIC0tZm9udC1zaXplLWgzLW1vYmlsZTogY2xhbXAoMS4yNXJlbSwgMnZ3ICsgMC41cmVtLCAxLjc1cmVtKTtcbiAgXG4gIC8qIE1pbmltdW0gUmVhZGFibGUgU2l6ZXMgKi9cbiAgLS1mb250LXNpemUtc21hbGwtbWluOiBtYXgoMC44NzVyZW0sIDE0cHgpOyAvKiBOZXZlciBiZWxvdyAxNHB4ICovXG4gIC0tZm9udC1zaXplLXRpbnktbWluOiBtYXgoMC43NXJlbSwgMTJweCk7ICAgLyogQWJzb2x1dGUgbWluaW11bSAqL1xuICBcbiAgLyogRm9udCBXZWlnaHRzIC0gTW9iaWxlLUZpcnN0IFJlc3BvbnNpdmUgKi9cbiAgLS1mb250LXdlaWdodC1leHRyYWxpZ2h0OiAyMDA7XG4gIC0tZm9udC13ZWlnaHQtbGlnaHQ6IDMwMDtcbiAgLS1mb250LXdlaWdodC1ub3JtYWw6IDQwMDtcbiAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xuICAtLWZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcbiAgLS1mb250LXdlaWdodC1leHRyYWJvbGQ6IDgwMDtcbiAgXG4gIC8qIE1vYmlsZSBUeXBvZ3JhcGh5IEFkanVzdG1lbnRzICg8IDc2OHB4KSAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlcm8tbW9iaWxlOiAzMDA7ICAgICAgLyogU2xpZ2h0bHkgaGVhdmllciBmb3IgY2xhcml0eSAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlYWRpbmctbW9iaWxlOiA1MDA7ICAgLyogTW9yZSBjb250cmFzdCBvbiBzbWFsbCBzY3JlZW5zICovXG4gIC0tZm9udC13ZWlnaHQtYm9keS1tb2JpbGU6IDQwMDsgICAgICAvKiBTdGFuZGFyZCByZW1haW5zIHNhbWUgKi9cbiAgLS1mb250LXdlaWdodC1ib2xkLW1vYmlsZTogNjAwOyAgICAgIC8qIENsZWFyIGVtcGhhc2lzICovXG4gIC0tZm9udC13ZWlnaHQtaGVyaXRhZ2UtbW9iaWxlOiA3MDA7ICAvKiBSZWQgdGV4dCBleHRyYSBib2xkIG9uIG1vYmlsZSAqL1xuICBcbiAgLyogRGVza3RvcCBUeXBvZ3JhcGh5IFJlZmluZW1lbnRzICgxMjgwcHgrKSAqL1xuICAtLWZvbnQtd2VpZ2h0LWhlcm8tZGVza3RvcDogMjAwOyAgICAgLyogVWx0cmEtbGlnaHQgZm9yIGVsZWdhbmNlICovXG4gIC0tZm9udC13ZWlnaHQtaGVhZGluZy1kZXNrdG9wOiAzMDA7ICAvKiBEZWxpY2F0ZSBoZWFkaW5ncyAqL1xuICAtLWZvbnQtd2VpZ2h0LWJvZHktZGVza3RvcDogNDAwOyAgICAgLyogT3B0aW1hbCByZWFkYWJpbGl0eSAqL1xuICAtLWZvbnQtd2VpZ2h0LWJvbGQtZGVza3RvcDogNTAwOyAgICAgLyogU3VidGxlIGVtcGhhc2lzICovXG4gIC0tZm9udC13ZWlnaHQtaGVyaXRhZ2UtZGVza3RvcDogNjAwOyAvKiBSZWQgdGV4dCBzZW1pYm9sZCAqL1xuICBcbiAgLyogTGluZSBIZWlnaHRzIC0gTW9iaWxlIE9wdGltaXplZCAqL1xuICAtLWxpbmUtaGVpZ2h0LW5vbmU6IDE7XG4gIC0tbGluZS1oZWlnaHQtdGlnaHQ6IDEuMjtcbiAgLS1saW5lLWhlaWdodC1zbnVnOiAxLjQ7XG4gIC0tbGluZS1oZWlnaHQtbm9ybWFsOiAxLjY7XG4gIC0tbGluZS1oZWlnaHQtcmVsYXhlZDogMS44O1xuICAtLWxpbmUtaGVpZ2h0LWxvb3NlOiAyO1xuICBcbiAgLyogTW9iaWxlLVNwZWNpZmljIExpbmUgSGVpZ2h0cyAqL1xuICAtLWxpbmUtaGVpZ2h0LXRpZ2h0LW1vYmlsZTogMS4zOyAgIC8qIEZvciBoZWFkaW5ncyBvbiBtb2JpbGUgKi9cbiAgLS1saW5lLWhlaWdodC1iYXNlLW1vYmlsZTogMS42OyAgICAvKiBGb3IgYm9keSB0ZXh0IG9uIG1vYmlsZSAqL1xuICAtLWxpbmUtaGVpZ2h0LWxvb3NlLW1vYmlsZTogMS44OyAgIC8qIEZvciBzbWFsbCB0ZXh0IG9uIG1vYmlsZSAqL1xuICBcbiAgLyogTGV0dGVyIFNwYWNpbmcgKi9cbiAgLS1sZXR0ZXItc3BhY2luZy10aWdodGVyOiAtMC4wNWVtO1xuICAtLWxldHRlci1zcGFjaW5nLXRpZ2h0OiAtMC4wMjVlbTtcbiAgLS1sZXR0ZXItc3BhY2luZy1ub3JtYWw6IDA7XG4gIC0tbGV0dGVyLXNwYWNpbmctd2lkZTogMC4wMjVlbTtcbiAgLS1sZXR0ZXItc3BhY2luZy13aWRlcjogMC4wNWVtO1xuICAtLWxldHRlci1zcGFjaW5nLXdpZGVzdDogMC4xZW07XG4gIFxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFNwYWNpbmcgU3lzdGVtIC0gOHB4IEdyaWRcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLS1zcGFjZS0wOiAwO1xuICAtLXNwYWNlLXB4OiAxcHg7XG4gIC0tc3BhY2UtMC01OiAwLjEyNXJlbTsgICAvKiAycHggKi9cbiAgLS1zcGFjZS0xOiAwLjI1cmVtOyAgICAgIC8qIDRweCAqL1xuICAtLXNwYWNlLTEtNTogMC4zNzVyZW07ICAgLyogNnB4ICovXG4gIC0tc3BhY2UtMjogMC41cmVtOyAgICAgICAvKiA4cHggKi9cbiAgLS1zcGFjZS0yLTU6IDAuNjI1cmVtOyAgIC8qIDEwcHggKi9cbiAgLS1zcGFjZS0zOiAwLjc1cmVtOyAgICAgIC8qIDEycHggKi9cbiAgLS1zcGFjZS0zLTU6IDAuODc1cmVtOyAgIC8qIDE0cHggKi9cbiAgLS1zcGFjZS00OiAxcmVtOyAgICAgICAgIC8qIDE2cHggKi9cbiAgLS1zcGFjZS01OiAxLjI1cmVtOyAgICAgIC8qIDIwcHggKi9cbiAgLS1zcGFjZS02OiAxLjVyZW07ICAgICAgIC8qIDI0cHggKi9cbiAgLS1zcGFjZS03OiAxLjc1cmVtOyAgICAgIC8qIDI4cHggKi9cbiAgLS1zcGFjZS04OiAycmVtOyAgICAgICAgIC8qIDMycHggKi9cbiAgLS1zcGFjZS05OiAyLjI1cmVtOyAgICAgIC8qIDM2cHggKi9cbiAgLS1zcGFjZS0xMDogMi41cmVtOyAgICAgIC8qIDQwcHggKi9cbiAgLS1zcGFjZS0xMTogMi43NXJlbTsgICAgIC8qIDQ0cHggKi9cbiAgLS1zcGFjZS0xMjogM3JlbTsgICAgICAgIC8qIDQ4cHggKi9cbiAgLS1zcGFjZS0xNDogMy41cmVtOyAgICAgIC8qIDU2cHggKi9cbiAgLS1zcGFjZS0xNjogNHJlbTsgICAgICAgIC8qIDY0cHggKi9cbiAgLS1zcGFjZS0yMDogNXJlbTsgICAgICAgIC8qIDgwcHggKi9cbiAgLS1zcGFjZS0yNDogNnJlbTsgICAgICAgIC8qIDk2cHggKi9cbiAgLS1zcGFjZS0yODogN3JlbTsgICAgICAgIC8qIDExMnB4ICovXG4gIC0tc3BhY2UtMzI6IDhyZW07ICAgICAgICAvKiAxMjhweCAqL1xuICAtLXNwYWNlLTM2OiA5cmVtOyAgICAgICAgLyogMTQ0cHggKi9cbiAgLS1zcGFjZS00MDogMTByZW07ICAgICAgIC8qIDE2MHB4ICovXG4gIC0tc3BhY2UtNDQ6IDExcmVtOyAgICAgICAvKiAxNzZweCAqL1xuICAtLXNwYWNlLTQ4OiAxMnJlbTsgICAgICAgLyogMTkycHggKi9cbiAgLS1zcGFjZS01MjogMTNyZW07ICAgICAgIC8qIDIwOHB4ICovXG4gIC0tc3BhY2UtNTY6IDE0cmVtOyAgICAgICAvKiAyMjRweCAqL1xuICAtLXNwYWNlLTYwOiAxNXJlbTsgICAgICAgLyogMjQwcHggKi9cbiAgLS1zcGFjZS02NDogMTZyZW07ICAgICAgIC8qIDI1NnB4ICovXG4gIC0tc3BhY2UtNzI6IDE4cmVtOyAgICAgICAvKiAyODhweCAqL1xuICAtLXNwYWNlLTgwOiAyMHJlbTsgICAgICAgLyogMzIwcHggKi9cbiAgLS1zcGFjZS05NjogMjRyZW07ICAgICAgIC8qIDM4NHB4ICovXG4gIFxuICAvKiBWaWV3cG9ydC1iYXNlZCBzcGFjaW5nICovXG4gIC0tc3BhY2Utc2NyZWVuOiAxMDB2aDtcbiAgLS1zZWN0aW9uLXBhZGRpbmc6IGNsYW1wKDVyZW0sIDEwdncsIDEwcmVtKTtcbiAgLS1jb250YWluZXItcGFkZGluZzogY2xhbXAoMnJlbSwgNXZ3LCA1cmVtKTtcbiAgXG4gIC8qIE1vYmlsZS1GaXJzdCBSZXNwb25zaXZlIFNwYWNpbmcgU2NhbGUgKi9cbiAgLS1zcGFjZS11bml0OiBjbGFtcCgwLjI1cmVtLCAxdncsIDAuNXJlbSk7IC8qIEJhc2UgdW5pdCByZXNwb25zaXZlIHRvIHZpZXdwb3J0ICovXG4gIFxuICAvKiBNb2JpbGUtRmlyc3QgU3BhY2luZyB3aXRoIFZpZXdwb3J0IFNjYWxpbmcgKi9cbiAgLS1zcGFjZS0xLW1vYmlsZTogY2FsYyh2YXIoLS1zcGFjZS11bml0KSAqIDEpOyAgIC8qIDQtOHB4ICovXG4gIC0tc3BhY2UtMi1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiAyKTsgICAvKiA4LTE2cHggKi9cbiAgLS1zcGFjZS0zLW1vYmlsZTogY2FsYyh2YXIoLS1zcGFjZS11bml0KSAqIDMpOyAgIC8qIDEyLTI0cHggKi9cbiAgLS1zcGFjZS00LW1vYmlsZTogY2FsYyh2YXIoLS1zcGFjZS11bml0KSAqIDQpOyAgIC8qIDE2LTMycHggKi9cbiAgLS1zcGFjZS02LW1vYmlsZTogY2FsYyh2YXIoLS1zcGFjZS11bml0KSAqIDYpOyAgIC8qIDI0LTQ4cHggKi9cbiAgLS1zcGFjZS04LW1vYmlsZTogY2FsYyh2YXIoLS1zcGFjZS11bml0KSAqIDgpOyAgIC8qIDMyLTY0cHggKi9cbiAgLS1zcGFjZS0xMi1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiAxMik7IC8qIDQ4LTk2cHggKi9cbiAgLS1zcGFjZS0xNi1tb2JpbGU6IGNhbGModmFyKC0tc3BhY2UtdW5pdCkgKiAxNik7IC8qIDY0LTEyOHB4ICovXG4gIFxuICAvKiBUb3VjaC1GcmllbmRseSBTcGFjaW5nIE1pbmltdW1zICovXG4gIC0tc3BhY2UtdG91Y2gtbWluOiBtYXgodmFyKC0tc3BhY2UtMiksIDhweCk7XG4gIC0tc3BhY2Utc2VjdGlvbi1tb2JpbGU6IG1heCh2YXIoLS1zcGFjZS0xNiksIDY0cHgpO1xuICBcbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBCb3JkZXIgUmFkaXVzIC0gRmxhdCBEZXNpZ25cbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLS1yYWRpdXMtbm9uZTogMDtcbiAgLS1yYWRpdXMtc206IDJweDtcbiAgLS1yYWRpdXM6IDRweDtcbiAgLS1yYWRpdXMtbWQ6IDZweDsgICAgICAgIC8qIE1heGltdW0gZm9yIGZsYXQgZGVzaWduICovXG4gIC0tcmFkaXVzLWxnOiA4cHg7ICAgICAgICAvKiBPbmx5IGZvciBzcGVjaWFsIGNhc2VzICovXG4gIC0tcmFkaXVzLXhsOiAxMnB4OyAgICAgICAvKiBBdm9pZCBpbiBmbGF0IGRlc2lnbiAqL1xuICAtLXJhZGl1cy0yeGw6IDE2cHg7ICAgICAgLyogQXZvaWQgaW4gZmxhdCBkZXNpZ24gKi9cbiAgLS1yYWRpdXMtM3hsOiAyNHB4OyAgICAgIC8qIEF2b2lkIGluIGZsYXQgZGVzaWduICovXG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDsgICAvKiBGb3IgcGlsbHMvY2lyY2xlcyBvbmx5ICovXG4gIFxuICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIFNoYWRvd3MgLSBNaW5pbWFsXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjAzKTtcbiAgLS1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4wNik7XG4gIC0tc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMDgpO1xuICAtLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAtLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDAuMTUpO1xuICAtLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XG4gIC0tc2hhZG93LW5vbmU6IDAgMCAjMDAwMDtcbiAgXG4gIC8qIEhlcml0YWdlIHNoYWRvdyAqL1xuICAtLXNoYWRvdy1oZXJpdGFnZTogMCAxMHB4IDMwcHggLTEwcHggcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjIpO1xuICBcbiAgLyogQ2FyZCBlbGV2YXRpb24gc3lzdGVtIC0gbWluaW1hbCBhbmQgZnVuY3Rpb25hbCBmb3IgYm9yZGVybGVzcyBkZXNpZ24gKi9cbiAgLS1zaGFkb3ctY2FyZDogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIC0tc2hhZG93LWNhcmQtaG92ZXI6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgLS1zaGFkb3ctY2FyZC1hY3RpdmU6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICBcbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBaLUluZGV4IE1hbmFnZW1lbnRcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLS16LWhpZGRlbjogLTE7XG4gIC0tei1iYXNlOiAwO1xuICAtLXotcmFpc2VkOiAxO1xuICAtLXotZHJvcGRvd246IDEwO1xuICAtLXotc3RpY2t5OiAxMDA7XG4gIC0tei1kcmF3ZXI6IDIwMDtcbiAgLS16LW1vZGFsOiAzMDA7XG4gIC0tei1wb3BvdmVyOiA0MDA7XG4gIC0tei10b2FzdDogNTAwO1xuICAtLXotYWxlcnQ6IDYwMDtcbiAgLS16LWxvYWRlcjogNzAwO1xuICAtLXotZGVidWc6IDk5OTtcbiAgXG4gIC8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgQW5pbWF0aW9uICYgVHJhbnNpdGlvbnMgLSBNb2JpbGUtRmlyc3RcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLyogRGV2aWNlLUF3YXJlIEFuaW1hdGlvbiBUaW1pbmcgKi9cbiAgLyogTW9iaWxlOiBGYXN0ZXIgYW5pbWF0aW9ucyBmb3IgcmVzcG9uc2l2ZW5lc3MgKi9cbiAgLS1kdXJhdGlvbi1pbnN0YW50OiA1MG1zOyAgICAvKiBUb3VjaCBmZWVkYmFjayAqL1xuICAtLWR1cmF0aW9uLWZhc3Q6IDE1MG1zOyAgICAgIC8qIE1pY3JvLWludGVyYWN0aW9ucyAqL1xuICAtLWR1cmF0aW9uLW5vcm1hbDogMjUwbXM7ICAgIC8qIFN0YXRlIGNoYW5nZXMgKi9cbiAgLS1kdXJhdGlvbi1zbG93OiA0MDBtczsgICAgICAvKiBDb250ZW50IHJldmVhbHMgKi9cbiAgLS1kdXJhdGlvbi1zbG93ZXI6IDYwMG1zOyAgICAvKiBNYWpvciB0cmFuc2l0aW9ucyAqL1xuICBcbiAgLyogRGVza3RvcDogU2xpZ2h0bHkgc2xvd2VyIGZvciBlbGVnYW5jZSAodmlhIG1lZGlhIHF1ZXJ5KSAqL1xuICAtLWR1cmF0aW9uLWluc3RhbnQtZGVza3RvcDogMTAwbXM7XG4gIC0tZHVyYXRpb24tZmFzdC1kZXNrdG9wOiAyMDBtcztcbiAgLS1kdXJhdGlvbi1ub3JtYWwtZGVza3RvcDogMzAwbXM7XG4gIC0tZHVyYXRpb24tc2xvdy1kZXNrdG9wOiA2MDBtcztcbiAgLS1kdXJhdGlvbi1zbG93ZXItZGVza3RvcDogODAwbXM7XG4gIFxuICAvKiBVbmlmaWVkIHRpbWluZyBzeXN0ZW0gZm9yIFBXQSBhbmltYXRpb25zICovXG4gIC0tdGltaW5nLWluc3RhbnQ6IHZhcigtLWR1cmF0aW9uLWluc3RhbnQpO1xuICAtLXRpbWluZy1mYXN0OiB2YXIoLS1kdXJhdGlvbi1mYXN0KTtcbiAgLS10aW1pbmctbm9ybWFsOiB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpO1xuICAtLXRpbWluZy1zbG93OiB2YXIoLS1kdXJhdGlvbi1zbG93KTtcbiAgLS10aW1pbmctc21vb3RoOiB2YXIoLS1kdXJhdGlvbi1zbG93ZXIpO1xuICAtLXRpbWluZy1leHBvOiA4MDBtcztcbiAgXG4gIC8qIEVhc2luZyBGdW5jdGlvbnMgKi9cbiAgLS1lYXNpbmctc3RhbmRhcmQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIC0tZWFzaW5nLXNtb290aDogY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpOyAvKiBNb3JlIG5hdHVyYWwgc21vb3RoIGVhc2luZyAqL1xuICAtLWVhc2luZy1leHBvOiBjdWJpYy1iZXppZXIoMC44NywgMCwgMC4xMywgMSk7XG4gIC0tZWFzaW5nLWJhY2s6IGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcbiAgLS1lYXNpbmctaW46IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAtLWVhc2luZy1vdXQ6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAtLWVhc2luZy1pbi1vdXQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIFxuICAvKiBUcmFuc2Zvcm1zICovXG4gIC0tdHJhbnNmb3JtLWxpZnQ6IHRyYW5zbGF0ZVkoLTJweCk7XG4gIC0tdHJhbnNmb3JtLWRyb3A6IHRyYW5zbGF0ZVkoMnB4KTtcbiAgLS10cmFuc2Zvcm0tc2NhbGUtdXA6IHNjYWxlKDEuMDIpO1xuICAtLXRyYW5zZm9ybS1zY2FsZS1kb3duOiBzY2FsZSgwLjk4KTtcbiAgXG4gIC8qIFBXQSBTY3JvbGwgQW5pbWF0aW9uIFZhcmlhYmxlcyAqL1xuICAtLXNjcm9sbC1yZXZlYWwtZGlzdGFuY2U6IDIwcHg7XG4gIC0tc2Nyb2xsLXJldmVhbC1kdXJhdGlvbjogNjAwbXM7XG4gIC0tc2Nyb2xsLXN0YWdnZXItZGVsYXk6IDc1bXM7XG4gIC0tc2Nyb2xsLXN0YWdnZXItbWF4OiAzNzVtczsgLyogTWF4IDUgaXRlbXMgKi9cbiAgLS1zY3JvbGwtdGhyZXNob2xkOiAwLjI7IC8qIDIwJSB2aXNpYmxlICovXG4gIFxuICAvKiBQV0EgQW5pbWF0aW9uIFN5c3RlbSAtIEJyYW5kIFN0YW5kYXJkcyBDb21wbGlhbnQgKi9cbiAgLS1kdXJhdGlvbi1zY3JvbGw6IDYwMG1zO1xuICAtLWR1cmF0aW9uLXNjcm9sbC1zZWN0aW9uOiA4MDBtcztcbiAgLS1zdGFnZ2VyLWRlbGF5OiAxMDBtcztcbiAgLS1wd2Etc3RhZ2dlci1kZWxheTogMTAwbXM7XG4gIC0tc2Nyb2xsLWRpc3RhbmNlOiAzMHB4O1xuICAtLXNjcm9sbC1kaXN0YW5jZS1zZWN0aW9uOiA1MHB4O1xuICAtLXB3YS1kdXJhdGlvbi1mYXN0OiB2YXIoLS10aW1pbmctZmFzdCk7XG4gIC0tcHdhLWR1cmF0aW9uLW5vcm1hbDogdmFyKC0tdGltaW5nLW5vcm1hbCk7XG4gIC0tcHdhLWR1cmF0aW9uLXNsb3c6IDYwMG1zO1xuICAtLXB3YS1lYXNpbmctc21vb3RoOiBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gIC0tcHdhLWVhc2luZy1ib3VuY2U6IGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpO1xuICBcbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICBMYXlvdXQgJiBTaXppbmdcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuICBcbiAgLyogQ29udGFpbmVyICovXG4gIC0tY29udGFpbmVyLW1heC13aWR0aDogMTQ0MHB4O1xuICAtLWNvbnRhaW5lci1wYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgXG4gIC8qIEJvcmRlcnMgKi9cbiAgLS1ib3JkZXItd2lkdGg6IDFweDtcbiAgLS1ib3JkZXItd2lkdGgtMjogMnB4O1xuICAtLWJvcmRlci13aWR0aC00OiA0cHg7XG4gIC0tYm9yZGVyLXdpZHRoLTg6IDhweDtcbiAgXG4gIC8qIEZvY3VzIFJpbmcgKi9cbiAgLS1mb2N1cy1yaW5nLXdpZHRoOiAycHg7XG4gIC0tZm9jdXMtcmluZy1vZmZzZXQ6IDJweDtcbiAgLS1mb2N1cy1yaW5nLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBcbiAgLyogVG91Y2ggVGFyZ2V0cyAtIE1vYmlsZS1GaXJzdCBTdGFuZGFyZHMgKi9cbiAgLS10b3VjaC10YXJnZXQtbWluOiA0OHB4OyAgICAgICAgICAgIC8qIFdDQUcgbWluaW11bSAqL1xuICAtLXRvdWNoLXRhcmdldC1jb21mb3J0YWJsZTogNTZweDsgICAgLyogQ29tZm9ydGFibGUgc2l6ZSAqL1xuICAtLXRvdWNoLXRhcmdldC1sYXJnZTogNjRweDsgICAgICAgICAgLyogTGFyZ2UgdG91Y2ggdGFyZ2V0cyAqL1xuICAtLXRvdWNoLXNwYWNpbmctbWluOiA4cHg7ICAgICAgICAgICAgLyogTWluaW11bSBiZXR3ZWVuIHRhcmdldHMgKi9cbiAgLS10b3VjaC1zcGFjaW5nLWNvbWZvcnRhYmxlOiAxNnB4OyAgIC8qIENvbWZvcnRhYmxlIHNwYWNpbmcgKi9cbiAgXG4gIC8qIE1vYmlsZSBUb3VjaCBab25lcyAqL1xuICAtLXRodW1iLXJlYWNoLWVhc3k6IDYwJTsgICAgLyogQm90dG9tIDYwJSBvZiBzY3JlZW4gKi9cbiAgLS10aHVtYi1yZWFjaC1oYXJkOiA0MCU7ICAgIC8qIFRvcCA0MCUgb2Ygc2NyZWVuICovXG4gIC0tc2FmZS1hcmVhLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pOyAvKiBpT1Mgc2FmZSBhcmVhICovXG4gIFxuICAvKiBNb2JpbGUtRmlyc3QgQnJlYWtwb2ludHMgKGNvbnRlbnQtYmFzZWQpICovXG4gIC0tYnJlYWtwb2ludC1tb2JpbGUtcG9ydHJhaXQ6IDMyMHB4OyAgIC8qIE1pbmltdW0gc3VwcG9ydGVkICovXG4gIC0tYnJlYWtwb2ludC1tb2JpbGUtbGFuZHNjYXBlOiA1NjhweDsgIC8qIGlQaG9uZSBTRSBsYW5kc2NhcGUgKi9cbiAgLS1icmVha3BvaW50LXRhYmxldC1wb3J0cmFpdDogNzY4cHg7ICAgLyogaVBhZCBwb3J0cmFpdCAqL1xuICAtLWJyZWFrcG9pbnQtdGFibGV0LWxhbmRzY2FwZTogMTAyNHB4OyAvKiBpUGFkIGxhbmRzY2FwZSAqL1xuICAtLWJyZWFrcG9pbnQtZGVza3RvcDogMTI4MHB4OyAgICAgICAgICAvKiBEZXNrdG9wIGJhc2VsaW5lICovXG4gIC0tYnJlYWtwb2ludC1kZXNrdG9wLXdpZGU6IDE1MzZweDsgICAgIC8qIFdpZGUgc2NyZWVucyAqL1xuICAtLWJyZWFrcG9pbnQtZGVza3RvcC11bHRyYTogMTkyMHB4OyAgICAvKiBVbHRyYS13aWRlIGRpc3BsYXlzICovXG4gIFxuICAvKiBVdGlsaXR5IEJyZWFrcG9pbnRzICovXG4gIC0tYnJlYWtwb2ludC1uYXYtY29sbGFwc2U6IDg5NnB4OyAgICAgIC8qIE5hdmlnYXRpb24gcGF0dGVybiBjaGFuZ2UgKi9cbiAgLS1icmVha3BvaW50LWdyaWQtc3dpdGNoOiA2NDBweDsgICAgICAgLyogU2luZ2xlIHRvIG11bHRpLWNvbHVtbiAqL1xuICAtLWJyZWFrcG9pbnQtdGFibGUtc2Nyb2xsOiA3NjhweDsgICAgICAvKiBUYWJsZSBob3Jpem9udGFsIHNjcm9sbCAqL1xuICBcbiAgLyogTGVnYWN5IEJyZWFrcG9pbnRzIChUYWlsd2luZCBkZWZhdWx0cykgKi9cbiAgLS1icmVha3BvaW50LXhzOiA0NzVweDtcbiAgLS1icmVha3BvaW50LXNtOiA2NDBweDtcbiAgLS1icmVha3BvaW50LW1kOiA3NjhweDtcbiAgLS1icmVha3BvaW50LWxnOiAxMDI0cHg7XG4gIC0tYnJlYWtwb2ludC14bDogMTI4MHB4O1xuICAtLWJyZWFrcG9pbnQtMnhsOiAxNTM2cHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAyLjUuIERBUksgTU9ERSBUSEVNRSBWQVJJQUJMRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbjpyb290LmRhcmsge1xuICAvKiBEYXJrIFRoZW1lIENvbG9yIFN5c3RlbSAqL1xuICBcbiAgLyogUHJvZmVzc2lvbmFsIERhcmsgRm91bmRhdGlvbiAqL1xuICAtLWNvbG9yLWJhY2tncm91bmQ6IDEzIDE3IDIzOyAgICAgICAgICAvKiByZ2IoMTMsIDE3LCAyMykgLSBSaWNoIGRhcmsgYmcgKi9cbiAgLS1jb2xvci1mb3JlZ3JvdW5kOiAyNDggMjUwIDI1MjsgICAgICAgLyogcmdiKDI0OCwgMjUwLCAyNTIpIC0gTGlnaHQgdGV4dCAqL1xuICBcbiAgLyogUHJpbWFyeSBDb2xvcnMgLSBBZGp1c3RlZCBmb3IgZGFyayB0aGVtZSAqL1xuICAtLWNvbG9yLXByaW1hcnk6IDEwMCAxMTYgMTM5OyAgICAgICAgICAvKiByZ2IoMTAwLCAxMTYsIDEzOSkgLSBMaWdodGVyIHNsYXRlICovXG4gIC0tY29sb3ItcHJpbWFyeS1mb3JlZ3JvdW5kOiAyNDggMjUwIDI1MjsgLyogV2hpdGUgdGV4dCBvbiBwcmltYXJ5ICovXG4gIC0tY29sb3ItcHJpbWFyeS01MDogMTUgMjMgNDI7ICAgICAgICAgIC8qIEludmVydGVkIHNjYWxlIGZvciBkYXJrICovXG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6IDMwIDQxIDU5O1xuICAtLWNvbG9yLXByaW1hcnktMjAwOiA1MSA2NSA4NTtcbiAgLS1jb2xvci1wcmltYXJ5LTMwMDogNzEgODUgMTA1O1xuICAtLWNvbG9yLXByaW1hcnktNDAwOiAxMDAgMTE2IDEzOTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogMTQ4IDE2MyAxODQ7XG4gIC0tY29sb3ItcHJpbWFyeS02MDA6IDIwMyAyMTMgMjI1O1xuICAtLWNvbG9yLXByaW1hcnktNzAwOiAyMjYgMjMyIDI0MDtcbiAgLS1jb2xvci1wcmltYXJ5LTgwMDogMjQxIDI0NSAyNDk7XG4gIC0tY29sb3ItcHJpbWFyeS05MDA6IDI0OCAyNTAgMjUyO1xuICAtLWNvbG9yLXByaW1hcnktOTUwOiAyNTUgMjU1IDI1NTtcbiAgXG4gIC8qIEhlcml0YWdlIEFjY2VudCAtIFdhcm1lciBpbiBkYXJrIG1vZGUgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2U6IDIzOSA2OCA2ODsgICAgIC8qIHJnYigyMzksIDY4LCA2OCkgLSBCcmlnaHRlciByZWQgKi9cbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTUwOiAxMjcgMjkgMjk7ICAvKiBJbnZlcnRlZCBzY2FsZSAqL1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS0xMDA6IDE1MyAyNyAyNztcbiAgLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtMjAwOiAxODUgMjggMjg7XG4gIC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTMwMDogMjIwIDM4IDM4O1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS00MDA6IDI0OCAxMTMgMTEzO1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS01MDA6IDI1MiAxNjUgMTY1O1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS02MDA6IDI1NCAyMDIgMjAyO1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS03MDA6IDI1NCAyMjYgMjI2O1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS04MDA6IDI1NCAyNDIgMjQyO1xuICAtLWNvbG9yLWFjY2VudC1oZXJpdGFnZS05MDA6IDI1NSAyNDUgMjQ1O1xuICBcbiAgLyogU2Vjb25kYXJ5IE5hdnkgLSBCcmlnaHRlciBpbiBkYXJrICovXG4gIC0tY29sb3Itc2Vjb25kYXJ5OiA1OSAxMzAgMjQ2OyAgICAgICAgICAvKiByZ2IoNTksIDEzMCwgMjQ2KSAtIEJyaWdodGVyIGJsdWUgKi9cbiAgLS1jb2xvci1zZWNvbmRhcnktZm9yZWdyb3VuZDogMjU1IDI1NSAyNTU7XG4gIC0tY29sb3Itc2Vjb25kYXJ5LTUwOiAzMCA1OCAxMzg7ICAgICAgICAvKiBJbnZlcnRlZCBzY2FsZSAqL1xuICAtLWNvbG9yLXNlY29uZGFyeS0xMDA6IDI5IDc4IDIxNjtcbiAgLS1jb2xvci1zZWNvbmRhcnktMjAwOiAzNyA5OSAyMzU7XG4gIC0tY29sb3Itc2Vjb25kYXJ5LTMwMDogNTkgMTMwIDI0NjtcbiAgLS1jb2xvci1zZWNvbmRhcnktNDAwOiA5NiAxNjUgMjUwO1xuICAtLWNvbG9yLXNlY29uZGFyeS01MDA6IDE0NyAxOTcgMjUzO1xuICAtLWNvbG9yLXNlY29uZGFyeS02MDA6IDE5MSAyMTkgMjU0O1xuICAtLWNvbG9yLXNlY29uZGFyeS03MDA6IDIxOSAyMzQgMjU0O1xuICAtLWNvbG9yLXNlY29uZGFyeS04MDA6IDIzOSAyNDYgMjU1O1xuICAtLWNvbG9yLXNlY29uZGFyeS05MDA6IDIzOSAyNDYgMjU1O1xuICBcbiAgLyogU2VtYW50aWMgQ29sb3JzIC0gRGFyayB0aGVtZSB2YXJpYW50cyAqL1xuICAtLWNvbG9yLXN1Y2Nlc3M6IDE2IDE4NSAxMjk7ICAgICAgICAgICAgLyogcmdiKDE2LCAxODUsIDEyOSkgLSBFbWVyYWxkICovXG4gIC0tY29sb3Itc3VjY2Vzcy1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTtcbiAgLS1jb2xvci13YXJuaW5nOiAyNDUgMTU4IDExOyAgICAgICAgICAgIC8qIHJnYigyNDUsIDE1OCwgMTEpIC0gQW1iZXIgKi9cbiAgLS1jb2xvci13YXJuaW5nLWZvcmVncm91bmQ6IDAgMCAwO1xuICAtLWNvbG9yLWVycm9yOiAyMzkgNjggNjg7ICAgICAgICAgICAgICAgLyogcmdiKDIzOSwgNjgsIDY4KSAtIFJlZCAqL1xuICAtLWNvbG9yLWVycm9yLWZvcmVncm91bmQ6IDI1NSAyNTUgMjU1O1xuICAtLWNvbG9yLWluZm86IDU5IDEzMCAyNDY7ICAgICAgICAgICAgICAgLyogcmdiKDU5LCAxMzAsIDI0NikgLSBCbHVlICovXG4gIC0tY29sb3ItaW5mby1mb3JlZ3JvdW5kOiAyNTUgMjU1IDI1NTtcbiAgXG4gIC8qIE5ldXRyYWwgVUkgQ29sb3JzIC0gRGFyayB2YXJpYW50cyAqL1xuICAtLWNvbG9yLW11dGVkOiAzMCA0MSA1OTsgICAgICAgICAgICAgICAgLyogcmdiKDMwLCA0MSwgNTkpIC0gRGFyayBtdXRlZCBiZyAqL1xuICAtLWNvbG9yLW11dGVkLWZvcmVncm91bmQ6IDE0OCAxNjMgMTg0OyAgLyogcmdiKDE0OCwgMTYzLCAxODQpIC0gTGlnaHQgbXV0ZWQgdGV4dCAqL1xuICAtLWNvbG9yLWJvcmRlcjogNTEgNjUgODU7ICAgICAgICAgICAgICAgLyogcmdiKDUxLCA2NSwgODUpIC0gRGFyayBib3JkZXJzICovXG4gIC0tY29sb3ItcmluZzogMTAwIDExNiAxMzk7ICAgICAgICAgICAgICAvKiByZ2IoMTAwLCAxMTYsIDEzOSkgLSBGb2N1cyByaW5nICovXG4gIFxuICAvKiBTdXJmYWNlIENvbG9ycyAtIERhcmsgdGhlbWUgKi9cbiAgLS1zdXJmYWNlLWRlZmF1bHQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAtLXN1cmZhY2UtbXV0ZWQ6IHZhcigtLWNvbG9yLW11dGVkKTtcbiAgLS1zdXJmYWNlLWRhcms6IDE1IDIzIDQyOyAgICAgICAgICAgICAgIC8qIHJnYigxNSwgMjMsIDQyKSAtIEV2ZW4gZGFya2VyICovXG4gIC0tc3VyZmFjZS1icmFuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gIC0tc3VyZmFjZS1hY2NlbnQ6IHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSk7XG4gIC0tc3VyZmFjZS1ncmFkaWVudC1zdWJ0bGU6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgIHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSkgMCUsIFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkpIDEwMCUpO1xuICAtLXN1cmZhY2UtZ3JhZGllbnQtcmFkaWFsOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkpIDAlLCBcbiAgICByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpIDEwMCUpO1xuICAtLXN1cmZhY2UtZ3JhZGllbnQtaGVybzogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKSAwJSwgXG4gICAgcmdiKHZhcigtLWNvbG9yLW11dGVkKSkgNTAlLCBcbiAgICByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpIDEwMCUpO1xuICBcbiAgLyogRGFyayB0aGVtZSBzaGFkb3cgYWRqdXN0bWVudHMgKi9cbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMTUpO1xuICAtLXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMC4yNSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjMpO1xuICAtLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAwLjQpO1xuICAtLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAwLjUpO1xuICAtLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDAuNik7XG4gIC0tc2hhZG93LWhlcml0YWdlOiAwIDEwcHggMzBweCAtMTBweCByZ2IoMjM5IDY4IDY4IC8gMC4zKTtcbiAgXG4gIC8qIENhcmQgc2hhZG93cyBmb3IgZGFyayB0aGVtZSAqL1xuICAtLXNoYWRvdy1jYXJkOiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgLS1zaGFkb3ctY2FyZC1ob3ZlcjogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtLXNoYWRvdy1jYXJkLWFjdGl2ZTogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgXG4gIC8qIEljb24gY29sb3JzIGZvciBkYXJrIHRoZW1lICovXG4gIC0taWNvbi1kZWZhdWx0OiB2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKTtcbiAgLS1pY29uLXByaW1hcnk6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAtLWljb24taGVyaXRhZ2U6IHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSk7XG4gIC0taWNvbi1zdWNjZXNzOiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbiAgLS1pY29uLXdhcm5pbmc6IHZhcigtLWNvbG9yLXdhcm5pbmcpO1xuICAtLWljb24td2hpdGU6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMy4gQkFTRSBTVFlMRVMgJiBSRVNFVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEJveCBzaXppbmcgKi9cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMgKi9cbioge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUwgJiBCb2R5ICovXG5odG1sIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktc2Fucyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBJbmhlcml0IGZvbnRzIGZvciBmb3JtIGNvbnRyb2xzICovXG5pbnB1dCxcbmJ1dHRvbixcbnRleHRhcmVhLFxuc2VsZWN0IHtcbiAgZm9udDogaW5oZXJpdDtcbn1cblxuLyogTWFrZSBpbWFnZXMgZWFzaWVyIHRvIHdvcmsgd2l0aCAqL1xuaW1nLFxucGljdHVyZSxcbnZpZGVvLFxuY2FudmFzLFxuc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKiBSZW1vdmUgYnVpbHQtaW4gZm9ybSB0eXBvZ3JhcGh5IHN0eWxlcyAqL1xuaW5wdXQsXG5idXR0b24sXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG59XG5cbi8qIEF2b2lkIHRleHQgb3ZlcmZsb3dzICovXG5wLFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgaHlwaGVuczogYXV0bztcbn1cblxuLyogQ3JlYXRlIGEgcm9vdCBzdGFja2luZyBjb250ZXh0ICovXG4jcm9vdCxcbiNfX25leHQge1xuICBpc29sYXRpb246IGlzb2xhdGU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA0LiBTRU1BTlRJQyBUWVBPR1JBUEhZIENMQVNTRVMgKFJFUVVJUkVEKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSGVyby9EaXNwbGF5IFR5cG9ncmFwaHkgKi9cbi50aXRsZS1oZXJvIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWRpc3BsYXkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtZXh0cmFsaWdodCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1oZXJvKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LW5vbmUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctdGlnaHRlcik7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLnRpdGxlLWRpc3BsYXkge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktZGlzcGxheSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1saWdodCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1kaXNwbGF5KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXRpZ2h0KTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXRpZ2h0KTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBTZWN0aW9uLWxldmVsIGhlYWRpbmdzICovXG4udGl0bGUtc2VjdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1kaXNwbGF5KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBmb250LXNpemU6IGNsYW1wKDJyZW0sIDV2dywgMy41cmVtKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXRpZ2h0KTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogQ29tcG9uZW50L2NhcmQgaGVhZGluZ3MgKi9cbi50aXRsZS1jYXJkIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWRpc3BsYXkpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbnVnKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xufVxuXG4vKiBTdWJ0aXRsZXMgYW5kIHNlY29uZGFyeSBoZWFkaW5ncyAqL1xuLnN1YnRpdGxlLWxnIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzdncsIDJyZW0pO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc251Zyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnN1YnRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc251Zyk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogTWFpbiBkZXNjcmlwdGl2ZSB0ZXh0ICovXG4uZGVzY3JpcHRpb24tbGcge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktc2Fucyk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpO1xuICBmb250LXNpemU6IGNsYW1wKDEuMTI1cmVtLCAydncsIDEuNXJlbSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIFN0YW5kYXJkIGJvZHkgdGV4dCAqL1xuLmRlc2NyaXB0aW9uIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cblxuLyogTGFiZWwgdGV4dCBmb3IgZm9ybXMgYW5kIGRhdGEgKi9cbi5sYWJlbC10ZXh0IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LXNhbnMpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbnVnKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuXG4vKiBTbWFsbCB0ZXh0ICovXG4udGV4dC1zbSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNudWcpO1xufVxuXG4vKiBIZXJpdGFnZSByZWQgdGV4dCAtIFN0cmF0ZWdpYyB1c2FnZSB3aXRoIHByb3BlciBzaXppbmcgKi9cbi50ZXh0LWhlcml0YWdlIHtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTsgLyogTWluaW11bSA2MDAgd2VpZ2h0IHJlcXVpcmVkICovXG4gIGZvbnQtc2l6ZTogbWF4KDFyZW0sIHZhcigtLWZvbnQtc2l6ZS1iYXNlKSk7IC8qIE1pbmltdW0gMTZweCBmb3IgcmVkIHRleHQgKi9cbn1cblxuLyogQ29kZS90ZWNobmljYWwgdGV4dCAqL1xuLnRleHQtbW9ubyB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1tb25vKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDUuIEJVVFRPTiBTWVNURU0gLSBTdHJhdGVnaWMgUmVkIEhpZXJhcmNoeVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSU1QT1JUQU5UOiBCdXR0b24gU3lzdGVtIEltcGxlbWVudGF0aW9uIE5vdGVzXG4gKiAtIEFsbCBidXR0b24gY2xhc3NlcyBhcmUgaW1wbGVtZW50ZWQgaGVyZTogLmJ0biAoYmFzZSksIC5idG4taGVyaXRhZ2UsIC5idG4tcHJpbWFyeSwgLmJ0bi1zZWNvbmRhcnksIC5idG4tb3V0bGluZSwgLmJ0bi1naG9zdFxuICogLSBCdXR0b24gc2l6ZXM6IC5idG4tc20sIC5idG4tbGcsIC5idG4teGwgKG5vIC5idG4tbWQgLSB0aGUgYmFzZSAuYnRuIGlzIG1lZGl1bSlcbiAqIC0gQ29tcG9uZW50IENTUyBmaWxlcyBzaG91bGQgTk9UIHJlZGVmaW5lIHRoZXNlIGNsYXNzZXNcbiAqIC0gVXNlIHRoZXNlIGNsYXNzZXMgZGlyZWN0bHkgaW4gY29tcG9uZW50c1xuICovXG5cbi8qIEJhc2UgYnV0dG9uIHN0eWxlcyAqL1xuLmJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNudWcpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc3RhbmRhcmQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBIZXJpdGFnZSBCdXR0b24gLSBNYXhpbXVtIDEtMiBwZXIgdmlld3BvcnQgKi9cbi5idG4taGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIC8qIEV4dHJhIHdoaXRlc3BhY2UgZm9yIHJlZCBlbGVtZW50cyAoMjUtMzUlIG1vcmUpICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLWJ0bi1oZXJpdGFnZS1wYWRkaW5nLXgpO1xuICAvKiBNYXJnaW5zIHJlbW92ZWQgLSBzcGFjaW5nIGhhbmRsZWQgYnkgLmN0YS1idXR0b24taGVyaXRhZ2Ugd3JhcHBlciAqL1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpO1xuICAvKiBTdWJ0bGUgcHVsc2UgYW5pbWF0aW9uIGFmdGVyIGRlbGF5ICovXG4gIGFuaW1hdGlvbjogaGVyaXRhZ2UtcHVsc2UgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogMnM7XG59XG5cbi5idG4taGVyaXRhZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlLTYwMCkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtNjAwKSk7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHJhbnNmb3JtLWxpZnQpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpLCB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4uYnRuLWhlcml0YWdlOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nLXdpZHRoKSBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1mb2N1cy1yaW5nLW9mZnNldCk7XG59XG5cbi5idG4taGVyaXRhZ2U6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB2YXIoLS10cmFuc2Zvcm0tc2NhbGUtZG93bik7XG59XG5cbi8qIFByaW1hcnkgQnV0dG9uIC0gUHJvZmVzc2lvbmFsIFNsYXRlIEdyYXkgKi9cbi5idG4tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS1mb3JlZ3JvdW5kKSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHJhbnNmb3JtLWxpZnQpO1xufVxuXG4uYnRuLXByaW1hcnk6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmctd2lkdGgpIHNvbGlkIHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1mb2N1cy1yaW5nLW9mZnNldCk7XG59XG5cbi5idG4tcHJpbWFyeTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHZhcigtLXRyYW5zZm9ybS1zY2FsZS1kb3duKTtcbn1cblxuLyogU2Vjb25kYXJ5IEJ1dHRvbiAtIE5hdnkgQmx1ZSAqL1xuLmJ0bi1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5LWZvcmVncm91bmQpKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeS04MDApKTtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5LTgwMCkpO1xuICB0cmFuc2Zvcm06IHZhcigtLXRyYW5zZm9ybS1saWZ0KTtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmctd2lkdGgpIHNvbGlkIHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IHZhcigtLWZvY3VzLXJpbmctb2Zmc2V0KTtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB2YXIoLS10cmFuc2Zvcm0tc2NhbGUtZG93bik7XG59XG5cbi8qIE91dGxpbmUgQnV0dG9uICovXG4uYnRuLW91dGxpbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xufVxuXG4uYnRuLW91dGxpbmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktZm9yZWdyb3VuZCkpO1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG59XG5cbi8qIEdob3N0IEJ1dHRvbiAqL1xuLmJ0bi1naG9zdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmJ0bi1naG9zdDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuXG4vKiBCdXR0b24gU2l6ZXMgKi9cbi5idG4tc20ge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xLTUpIHZhcigtLXNwYWNlLTMpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNwYWNlLTgpO1xufVxuXG4uYnRuLWxnIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTQpO1xufVxuXG4uYnRuLXhsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtOCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc3BhY2UtMTYpO1xufVxuXG5cbi8qIEJ1dHRvbiBTdGF0ZXMgKi9cbi5idG46ZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNi4gTEFZT1VUIFVUSUxJVElFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogSU1QT1JUQU5UOiBMYXlvdXQgU3lzdGVtIENoYW5nZSBOb3Rlc1xuICogLSBzZWN0aW9uLSogY2xhc3NlcyBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBsYXlvdXQtKiBjbGFzc2VzXG4gKiAtIFVzZSBsYXlvdXQtY29udGFpbmVyIGluc3RlYWQgb2Ygc2VjdGlvbi1jb250YWluZXJcbiAqIC0gVXNlIGxheW91dC1zZWN0aW9uLCBsYXlvdXQtc2VjdGlvbi1zbSwgbGF5b3V0LXNlY3Rpb24tbGcsIGxheW91dC1zZWN0aW9uLXhsIGZvciBzZWN0aW9uIHNwYWNpbmdcbiAqIC0gQ29tcG9uZW50IENTUyBmaWxlcyBzaG91bGQgcmVmZXJlbmNlIGxheW91dC0qIGNsYXNzZXMsIG5vdCBzZWN0aW9uLSpcbiAqL1xuXG4vKiBTZWN0aW9uIHNwYWNpbmcgLSBCUkFORCBHVUlERSBFWEFDVCBWQUxVRVMgKi9cbi8qIE1vYmlsZS1maXJzdCBhcHByb2FjaCB3aXRoIGV4YWN0IHJlc3BvbnNpdmUgdmFsdWVzICovXG5cbi8qIERlZmF1bHQgbW9iaWxlIHZhbHVlcyAoPCA3NjhweCkgLSA0MCUgcmVkdWN0aW9uIGZyb20gZGVza3RvcCAqL1xuLmxheW91dC1zZWN0aW9uLXNtIHtcbiAgcGFkZGluZzogMi41cmVtIDA7ICAvKiA0MHB4ICovXG59XG5cbi5sYXlvdXQtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IDMuNzVyZW0gMDsgLyogNjBweCAtIERFRkFVTFQgKi9cbn1cblxuLmxheW91dC1zZWN0aW9uLWxnIHtcbiAgcGFkZGluZzogNXJlbSAwOyAgICAvKiA4MHB4ICovXG59XG5cbi5sYXlvdXQtc2VjdGlvbi14bCB7XG4gIHBhZGRpbmc6IDZyZW0gMDsgICAgLyogOTZweCAqL1xufVxuXG4vKiBUYWJsZXQgdmFsdWVzICg3NjhweCAtIDEyNzlweCkgLSAyMCUgcmVkdWN0aW9uIGZyb20gZGVza3RvcCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTI3OXB4KSB7XG4gIC5sYXlvdXQtc2VjdGlvbi1zbSB7XG4gICAgcGFkZGluZzogMy4ycmVtIDA7ICAvKiA1MXB4ICovXG4gIH1cbiAgXG4gIC5sYXlvdXQtc2VjdGlvbiB7XG4gICAgcGFkZGluZzogNC44cmVtIDA7ICAvKiA3N3B4ICovXG4gIH1cbiAgXG4gIC5sYXlvdXQtc2VjdGlvbi1sZyB7XG4gICAgcGFkZGluZzogNi40cmVtIDA7ICAvKiAxMDJweCAqL1xuICB9XG4gIFxuICAubGF5b3V0LXNlY3Rpb24teGwge1xuICAgIHBhZGRpbmc6IDhyZW0gMDsgICAgLyogMTI4cHggKi9cbiAgfVxufVxuXG4vKiBEZXNrdG9wIHZhbHVlcyAoMTI4MHB4KykgLSBGdWxsIHNwYWNpbmcgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLmxheW91dC1zZWN0aW9uLXNtIHtcbiAgICBwYWRkaW5nOiA0cmVtIDA7ICAgIC8qIDY0cHggKi9cbiAgfVxuICBcbiAgLmxheW91dC1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiA2cmVtIDA7ICAgIC8qIDk2cHggKi9cbiAgfVxuICBcbiAgLmxheW91dC1zZWN0aW9uLWxnIHtcbiAgICBwYWRkaW5nOiA4cmVtIDA7ICAgIC8qIDEyOHB4ICovXG4gIH1cbiAgXG4gIC5sYXlvdXQtc2VjdGlvbi14bCB7XG4gICAgcGFkZGluZzogMTByZW0gMDsgICAvKiAxNjBweCAqL1xuICB9XG59XG5cbi8qIEhlcm8gc2VjdGlvbnMgd2l0aCBtb2JpbGUtZmlyc3QgcmVzcG9uc2l2ZSBzcGFjaW5nICovXG4ubGF5b3V0LWhlcm8ge1xuICAvKiBNb2JpbGUgZmlyc3Q6IDMwJSBjb250ZW50LCA3MCUgc3BhY2UgKi9cbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIHZhcigtLXNwYWNlLTQpOyAvKiA0OHB4IDE2cHggKi9cbiAgbWluLWhlaWdodDogMTAwdmg7IC8qIEZ1bGwgdmlld3BvcnQgb24gbW9iaWxlICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubGF5b3V0LWhlcm8ge1xuICAgIC8qIFRhYmxldDogMjUlIGNvbnRlbnQsIDc1JSBzcGFjZSAqL1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTE2KSB2YXIoLS1zcGFjZS02KTsgLyogNjRweCAyNHB4ICovXG4gICAgbWluLWhlaWdodDogODV2aDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5sYXlvdXQtaGVybyB7XG4gICAgLyogRGVza3RvcDogMjAlIGNvbnRlbnQsIDgwJSBzcGFjZSAqL1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMyKSB2YXIoLS1zcGFjZS04KTsgLyogMTI4cHggMzJweCAqL1xuICAgIG1pbi1oZWlnaHQ6IDkwdmg7XG4gIH1cbn1cblxuLyogQ29udGFpbmVyICovXG4ubGF5b3V0LWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgpO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS00KTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5sYXlvdXQtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxheW91dC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtOCk7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubGF5b3V0LWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0xMik7XG4gIH1cbn1cblxuLyogQ29udGVudCBhbGlnbm1lbnQgKi9cbi5sYXlvdXQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubGF5b3V0LWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubGF5b3V0LXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi8qIExheW91dCBnYXBzICovXG4ubGF5b3V0LWdhcC14cyB7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5sYXlvdXQtZ2FwLXNtIHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmxheW91dC1nYXAtbWQge1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xufVxuXG4ubGF5b3V0LWdhcC1sZyB7XG4gIGdhcDogdmFyKC0tc3BhY2UtMTYpO1xufVxuXG4ubGF5b3V0LWdhcC14bCB7XG4gIGdhcDogdmFyKC0tc3BhY2UtMjQpO1xufVxuXG4vKiBTdGFjayBsYXlvdXRzICovXG4ubGF5b3V0LXN0YWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmxheW91dC1zdGFjay1zbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5sYXlvdXQtc3RhY2stbWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4ubGF5b3V0LXN0YWNrLWxnIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS04KTtcbn1cblxuLyogTGF5b3V0IGdyaWQgdXRpbGl0aWVzIGZvciBjb21wb25lbnQgY29uc2lzdGVuY3kgKi9cbi5sYXlvdXQtZ3JpZC0yIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4ubGF5b3V0LWdyaWQtMyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmxheW91dC1ncmlkLTQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi8qIFJlc3BvbnNpdmUgYmVoYXZpb3IgZm9yIGxheW91dCBncmlkcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5sYXlvdXQtZ3JpZC0yLFxuICAubGF5b3V0LWdyaWQtMyxcbiAgLmxheW91dC1ncmlkLTQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5sYXlvdXQtZ3JpZC0zLFxuICAubGF5b3V0LWdyaWQtNCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG59XG5cbi8qIFN1cmZhY2UgdXRpbGl0eSBjbGFzc2VzIC0gQmFja2dyb3VuZCB2YXJpYXRpb25zIGZvciBzZWN0aW9ucyAqL1xuLnN1cmZhY2UtZGVmYXVsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1zdXJmYWNlLWRlZmF1bHQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5zdXJmYWNlLW11dGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLXN1cmZhY2UtbXV0ZWQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5zdXJmYWNlLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tc3VyZmFjZS1kYXJrKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNy4gR1JJRCBTWVNURU1cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLyogR3JpZCBjb2x1bW5zICovXG4uZ3JpZC1jb2xzLTEge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCBtaW5tYXgoMCwgMWZyKSk7XG59XG5cbi5ncmlkLWNvbHMtMiB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbn1cblxuLmdyaWQtY29scy0zIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xufVxuXG4uZ3JpZC1jb2xzLTQge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG59XG5cbi5ncmlkLWNvbHMtNSB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIG1pbm1heCgwLCAxZnIpKTtcbn1cblxuLmdyaWQtY29scy02IHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgbWlubWF4KDAsIDFmcikpO1xufVxuXG4uZ3JpZC1jb2xzLTEyIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIG1pbm1heCgwLCAxZnIpKTtcbn1cblxuLyogUmVzcG9uc2l2ZSBncmlkcyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5zbVxcOmdyaWQtY29scy0yIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLnNtXFw6Z3JpZC1jb2xzLTMge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAuc21cXDpncmlkLWNvbHMtNCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubWRcXDpncmlkLWNvbHMtMiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG4gIC5tZFxcOmdyaWQtY29scy0zIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLm1kXFw6Z3JpZC1jb2xzLTQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAubWRcXDpncmlkLWNvbHMtNiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxnXFw6Z3JpZC1jb2xzLTIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAubGdcXDpncmlkLWNvbHMtMyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICB9XG4gIC5sZ1xcOmdyaWQtY29scy00IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gIH1cbiAgLmxnXFw6Z3JpZC1jb2xzLTUge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIG1pbm1heCgwLCAxZnIpKTtcbiAgfVxuICAubGdcXDpncmlkLWNvbHMtNiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG59XG5cbi8qIEdyaWQgZ2FwcyAqL1xuLmdhcC0wIHtcbiAgZ2FwOiAwO1xufVxuXG4uZ2FwLTIge1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZ2FwLTQge1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uZ2FwLTYge1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4uZ2FwLTgge1xuICBnYXA6IHZhcigtLXNwYWNlLTgpO1xufVxuXG4uZ2FwLTEyIHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0xMik7XG59XG5cbi5nYXAtMTYge1xuICBnYXA6IHZhcigtLXNwYWNlLTE2KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDguIENBUkQgQ09NUE9ORU5UU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zdGFuZGFyZCk7XG59XG5cbi8qIENhcmQgdmFyaWFudHMgKi9cbi5jYXJkLWJvcmRlcmVkIHtcbiAgYm9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbn1cblxuLmNhcmQtZWxldmF0ZWQge1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4uY2FyZC1lbGV2YXRlZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gIHRyYW5zZm9ybTogdmFyKC0tdHJhbnNmb3JtLWxpZnQpO1xufVxuXG4vKiBIZXJpdGFnZSBhY2NlbnQgY2FyZCAtIHdpdGggZXh0cmEgc3BhY2luZyBwZXIgYnJhbmQgZ3VpZGUgKi9cbi5jYXJkLWhlcml0YWdlIHtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjZS02KSArIHZhcigtLXNwYWNlLTIpKTsgLyogRXh0cmEgcGFkZGluZyBmb3IgcmVkIGJvcmRlciAqL1xuICBtYXJnaW46IHZhcigtLWNhcmQtaGVyaXRhZ2UtbWFyZ2luKSAwOyAvKiBFeHRyYSB2ZXJ0aWNhbCBzcGFjZSAqL1xufVxuXG4vKiBDYXJkIHNlY3Rpb25zICovXG4uY2FyZC1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmNhcmQtYm9keSB7XG4gIGZsZXg6IDE7XG59XG5cbi5jYXJkLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xufVxuXG4vKiBDYXJkIGFjdGlvbnMgKi9cbi5jYXJkLWFjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmNhcmQtYWN0aW9ucy1lbmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uY2FyZC1hY3Rpb25zLWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgOS4gQkFER0UgQ09NUE9ORU5UIENMQVNTRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEJhc2UgYmFkZ2Ugc3R5bGluZyAqL1xuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgdHJhbnNpdGlvbjogYWxsIDIwMG1zIGVhc2U7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIEJhZGdlIGhvdmVyIHN0YXRlICovXG4uYmFkZ2U6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIEJhZGdlIGNvbG9yIHZhcmlhbnRzICovXG4uYmFkZ2UtcHJpbWFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5LTEwMCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG59XG5cbi8qIEhlcml0YWdlIGJhZGdlIC0gZm9sbG93cyAxMCUgcnVsZSB3aXRoIGV4dHJhIHNwYWNpbmcgKi9cbi5iYWRnZS1oZXJpdGFnZSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgY29sb3I6IHdoaXRlO1xuICAvKiBIZXJpdGFnZSBiYWRnZXMgbmVlZCBleHRyYSBzcGFjZSBwZXIgYnJhbmQgZ3VpZGVsaW5lcyAqL1xuICBtYXJnaW46IDAgMC4yNXJlbTtcbn1cblxuLmJhZGdlLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnktMTAwKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5LTkwMCkpO1xufVxuXG4uYmFkZ2Utc3VjY2VzcyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xufVxuXG4uYmFkZ2Utd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xufVxuXG4uYmFkZ2UtZXJyb3Ige1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItZXJyb3IpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1lcnJvcikpO1xufVxuXG4vKiBCYWRnZSBzaXplIHZhcmlhbnRzICovXG4uYmFkZ2Utc20ge1xuICBwYWRkaW5nOiAwLjEyNXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC42MjVyZW07XG59XG5cbi5iYWRnZS1sZyB7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDFyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8qIEJhZGdlIGluIGNhcmRzIC0gaG9yaXpvbnRhbCBsYXlvdXQgKi9cbi5jYXJkLWFjdGlvbnMgLmJhZGdlIHtcbiAgbWFyZ2luOiAwIDAuMTI1cmVtO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTAuIE5BVklHQVRJT04gQ09NUE9ORU5UIENMQVNTRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE5hdmJhciBjb250YWluZXIgKi9cbi5uYXZiYXIge1xuICBoZWlnaHQ6IDRyZW07IC8qIDY0cHggc3RhbmRhcmQgaGVpZ2h0ICovXG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNik7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiB2YXIoLS16LXN0aWNreSk7XG59XG5cbi8qIE5hdmJhciBicmFuZCB3aXRoIGhlcml0YWdlIGRvdCAqL1xuLm5hdmJhci1icmFuZCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbn1cblxuLyogSGVyaXRhZ2UgcmVkIGRvdCBhY2NlbnQgKi9cbi5uYXZiYXItYnJhbmQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8qIE5hdmlnYXRpb24gaXRlbXMgKi9cbi5uYXYtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTsgLyogMTZweCBtaW5pbXVtICovXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyMDBtcyBlYXNlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2LWl0ZW06aG92ZXIge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktNzAwKSk7XG59XG5cbi8qIEFjdGl2ZSBzdGF0ZSB3aXRoIHJlZCBpbmRpY2F0b3IgKi9cbi5uYXYtaXRlbS5hY3RpdmUge1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnktOTAwKSk7XG59XG5cbi5uYXYtaXRlbS5hY3RpdmU6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMnB4O1xuICBsZWZ0OiAxcmVtO1xuICByaWdodDogMXJlbTtcbiAgaGVpZ2h0OiAycHg7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTtcbn1cblxuLyogTW9iaWxlIG5hdmlnYXRpb24gYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubmF2YmFyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xuICB9XG4gIFxuICAvKiBObyByZWQgaW4gbmF2aWdhdGlvbiBvbiBtb2JpbGUgcGVyIGJyYW5kIGd1aWRlICovXG4gIC5uYXYtaXRlbS5hY3RpdmU6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICAgIGhlaWdodDogM3B4OyAvKiBUaGlja2VyIGZvciB0b3VjaCAqL1xuICB9XG4gIFxuICAvKiBUb3VjaC1mcmllbmRseSBuYXYgaXRlbXMgKi9cbiAgLm5hdi1pdGVtIHtcbiAgICBtaW4taGVpZ2h0OiB2YXIoLS10b3VjaC10YXJnZXQtbWluKTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDExLiBVVElMSVRZIENMQVNTRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIERpc3BsYXkgdXRpbGl0aWVzICovXG4uYmxvY2sgeyBkaXNwbGF5OiBibG9jazsgfVxuLmlubGluZS1ibG9jayB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuLmlubGluZSB7IGRpc3BsYXk6IGlubGluZTsgfVxuLmZsZXggeyBkaXNwbGF5OiBmbGV4OyB9XG4uaW5saW5lLWZsZXggeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfVxuLmlubGluZS1ncmlkIHsgZGlzcGxheTogaW5saW5lLWdyaWQ7IH1cbi5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG5cbi8qIEZsZXggdXRpbGl0aWVzICovXG4uZmxleC1yb3cgeyBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4uZmxleC1yb3ctcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxuLmZsZXgtY29sIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuLmZsZXgtY29sLXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7IH1cbi5mbGV4LXdyYXAgeyBmbGV4LXdyYXA6IHdyYXA7IH1cbi5mbGV4LW5vd3JhcCB7IGZsZXgtd3JhcDogbm93cmFwOyB9XG4uZmxleC0xIHsgZmxleDogMSAxIDAlOyB9XG4uZmxleC1hdXRvIHsgZmxleDogMSAxIGF1dG87IH1cbi5mbGV4LWluaXRpYWwgeyBmbGV4OiAwIDEgYXV0bzsgfVxuLmZsZXgtbm9uZSB7IGZsZXg6IG5vbmU7IH1cbi5mbGV4LWdyb3cgeyBmbGV4LWdyb3c6IDE7IH1cbi5mbGV4LWdyb3ctMCB7IGZsZXgtZ3JvdzogMDsgfVxuLmZsZXgtc2hyaW5rIHsgZmxleC1zaHJpbms6IDE7IH1cbi5mbGV4LXNocmluay0wIHsgZmxleC1zaHJpbms6IDA7IH1cblxuLyogQWxpZ25tZW50IHV0aWxpdGllcyAqL1xuLml0ZW1zLXN0YXJ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbi5pdGVtcy1lbmQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cbi5pdGVtcy1jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4uaXRlbXMtYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbi5pdGVtcy1zdHJldGNoIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cblxuLmp1c3RpZnktc3RhcnQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbi5qdXN0aWZ5LWVuZCB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cbi5qdXN0aWZ5LWNlbnRlciB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4uanVzdGlmeS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4uanVzdGlmeS1hcm91bmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuLmp1c3RpZnktZXZlbmx5IHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7IH1cblxuLyogU3BhY2luZyB1dGlsaXRpZXMgKi9cbi5tLWF1dG8geyBtYXJnaW46IGF1dG87IH1cbi5teC1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuLm15LWF1dG8geyBtYXJnaW4tdG9wOiBhdXRvOyBtYXJnaW4tYm90dG9tOiBhdXRvOyB9XG4ubXQtYXV0byB7IG1hcmdpbi10b3A6IGF1dG87IH1cbi5tci1hdXRvIHsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4ubWItYXV0byB7IG1hcmdpbi1ib3R0b206IGF1dG87IH1cbi5tbC1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG87IH1cblxuLyogV2lkdGggdXRpbGl0aWVzICovXG4udy1mdWxsIHsgd2lkdGg6IDEwMCU7IH1cbi53LXNjcmVlbiB7IHdpZHRoOiAxMDB2dzsgfVxuLnctbWluIHsgd2lkdGg6IG1pbi1jb250ZW50OyB9XG4udy1tYXggeyB3aWR0aDogbWF4LWNvbnRlbnQ7IH1cbi53LWZpdCB7IHdpZHRoOiBmaXQtY29udGVudDsgfVxuXG4vKiBIZWlnaHQgdXRpbGl0aWVzICovXG4uaC1mdWxsIHsgaGVpZ2h0OiAxMDAlOyB9XG4uaC1zY3JlZW4geyBoZWlnaHQ6IDEwMHZoOyB9XG4uaC1taW4geyBoZWlnaHQ6IG1pbi1jb250ZW50OyB9XG4uaC1tYXggeyBoZWlnaHQ6IG1heC1jb250ZW50OyB9XG4uaC1maXQgeyBoZWlnaHQ6IGZpdC1jb250ZW50OyB9XG5cbi8qIE1heCB3aWR0aCB1dGlsaXRpZXMgKi9cbi5tYXgtdy1ub25lIHsgbWF4LXdpZHRoOiBub25lOyB9XG4ubWF4LXcteHMgeyBtYXgtd2lkdGg6IDIwcmVtOyB9XG4ubWF4LXctc20geyBtYXgtd2lkdGg6IDI0cmVtOyB9XG4ubWF4LXctbWQgeyBtYXgtd2lkdGg6IDI4cmVtOyB9XG4ubWF4LXctbGcgeyBtYXgtd2lkdGg6IDMycmVtOyB9XG4ubWF4LXcteGwgeyBtYXgtd2lkdGg6IDM2cmVtOyB9XG4ubWF4LXctMnhsIHsgbWF4LXdpZHRoOiA0MnJlbTsgfVxuLm1heC13LTN4bCB7IG1heC13aWR0aDogNDhyZW07IH1cbi5tYXgtdy00eGwgeyBtYXgtd2lkdGg6IDU2cmVtOyB9XG4ubWF4LXctNXhsIHsgbWF4LXdpZHRoOiA2NHJlbTsgfVxuLm1heC13LTZ4bCB7IG1heC13aWR0aDogNzJyZW07IH1cbi5tYXgtdy03eGwgeyBtYXgtd2lkdGg6IDgwcmVtOyB9XG4ubWF4LXctZnVsbCB7IG1heC13aWR0aDogMTAwJTsgfVxuXG4vKiBUZXh0IHV0aWxpdGllcyAqL1xuLnRleHQtbGVmdCB7IHRleHQtYWxpZ246IGxlZnQ7IH1cbi50ZXh0LWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLnRleHQtcmlnaHQgeyB0ZXh0LWFsaWduOiByaWdodDsgfVxuLnRleHQtanVzdGlmeSB7IHRleHQtYWxpZ246IGp1c3RpZnk7IH1cblxuLnVwcGVyY2FzZSB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbi5sb3dlcmNhc2UgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOyB9XG4uY2FwaXRhbGl6ZSB7IHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG4ubm9ybWFsLWNhc2UgeyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4udHJ1bmNhdGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogQ29sb3IgdXRpbGl0aWVzICovXG4udGV4dC1wcmltYXJ5IHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7IH1cbi50ZXh0LXNlY29uZGFyeSB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7IH1cbi50ZXh0LWhlcml0YWdlIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTsgfVxuLnRleHQtbXV0ZWQgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTsgfVxuLnRleHQtc3VjY2VzcyB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpOyB9XG4udGV4dC13YXJuaW5nIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7IH1cbi50ZXh0LWVycm9yIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1lcnJvcikpOyB9XG5cbi5iZy1wcmltYXJ5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTsgfVxuLmJnLXNlY29uZGFyeSB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1zZWNvbmRhcnkpKTsgfVxuLmJnLWhlcml0YWdlIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpOyB9XG4uYmctbXV0ZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKTsgfVxuLmJnLXN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpOyB9XG4uYmctd2FybmluZyB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7IH1cbi5iZy1lcnJvciB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1lcnJvcikpOyB9XG5cbi8qIEJvcmRlciB1dGlsaXRpZXMgKi9cbi5ib3JkZXIgeyBib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci13aWR0aCk7IH1cbi5ib3JkZXItMCB7IGJvcmRlci13aWR0aDogMDsgfVxuLmJvcmRlci0yIHsgYm9yZGVyLXdpZHRoOiAycHg7IH1cbi5ib3JkZXItNCB7IGJvcmRlci13aWR0aDogNHB4OyB9XG4uYm9yZGVyLTggeyBib3JkZXItd2lkdGg6IDhweDsgfVxuXG4uYm9yZGVyLXNvbGlkIHsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuLmJvcmRlci1kYXNoZWQgeyBib3JkZXItc3R5bGU6IGRhc2hlZDsgfVxuLmJvcmRlci1kb3R0ZWQgeyBib3JkZXItc3R5bGU6IGRvdHRlZDsgfVxuLmJvcmRlci1ub25lIHsgYm9yZGVyLXN0eWxlOiBub25lOyB9XG5cbi5yb3VuZGVkLW5vbmUgeyBib3JkZXItcmFkaXVzOiAwOyB9XG4ucm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH1cbi5yb3VuZGVkIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTsgfVxuLnJvdW5kZWQtbWQgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9XG4ucm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IH1cbi5yb3VuZGVkLWZ1bGwgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7IH1cblxuLyogU2hhZG93IHV0aWxpdGllcyAqL1xuLnNoYWRvdy1zbSB7IGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7IH1cbi5zaGFkb3cgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cpOyB9XG4uc2hhZG93LW1kIHsgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTsgfVxuLnNoYWRvdy1sZyB7IGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7IH1cbi5zaGFkb3cteGwgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpOyB9XG4uc2hhZG93LTJ4bCB7IGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy0yeGwpOyB9XG4uc2hhZG93LW5vbmUgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbm9uZSk7IH1cbi5zaGFkb3ctaGVyaXRhZ2UgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpOyB9XG5cbi8qIE9wYWNpdHkgdXRpbGl0aWVzICovXG4ub3BhY2l0eS0wIHsgb3BhY2l0eTogMDsgfVxuLm9wYWNpdHktMjUgeyBvcGFjaXR5OiAwLjI1OyB9XG4ub3BhY2l0eS01MCB7IG9wYWNpdHk6IDAuNTsgfVxuLm9wYWNpdHktNzUgeyBvcGFjaXR5OiAwLjc1OyB9XG4ub3BhY2l0eS0xMDAgeyBvcGFjaXR5OiAxOyB9XG5cbi8qIEN1cnNvciB1dGlsaXRpZXMgKi9cbi5jdXJzb3ItcG9pbnRlciB7IGN1cnNvcjogcG9pbnRlcjsgfVxuLmN1cnNvci1kZWZhdWx0IHsgY3Vyc29yOiBkZWZhdWx0OyB9XG4uY3Vyc29yLW5vdC1hbGxvd2VkIHsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuLmN1cnNvci13YWl0IHsgY3Vyc29yOiB3YWl0OyB9XG4uY3Vyc29yLW1vdmUgeyBjdXJzb3I6IG1vdmU7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEwLiBJQ09OIFNZU1RFTSBDTEFTU0VTIC0gQlJBTkQgR1VJREUgQ09NUExJQU5UXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBJY29uIHNpemluZyBjbGFzc2VzIHdpdGggcHJvZmVzc2lvbmFsIGNvbnRhaW5lcnMgLSBSRU0tYmFzZWQgcmVzcG9uc2l2ZSBkZXNpZ24gKi9cbi5pY29uLXh4cyB7XG4gIC8qIElubGluZSBpY29uIGJlaGF2aW9yIGZvciBidXR0b25zIGFuZCBuYXZpZ2F0aW9uICovXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogVmVyeSBzbWFsbCBpbmxpbmUgc2l6aW5nICovXG4gIHdpZHRoOiAxcmVtOyAgICAgICAgLyogMTZweCBjb250YWluZXIgLSBpbmxpbmUgd2l0aCB0ZXh0ICovXG4gIGhlaWdodDogMXJlbTtcbiAgLyogTWluaW1hbCBzdHlsaW5nIGZvciBpbmxpbmUgdXNhZ2UgKi9cbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBpbnNpZGUgLmljb24teHhzIGNvbnRhaW5lciAqL1xuLmljb24teHhzID4gKiB7XG4gIHdpZHRoOiAwLjc1cmVtOyAgICAgLyogMTJweCBpY29uIGluc2lkZSAqL1xuICBoZWlnaHQ6IDAuNzVyZW07XG59XG5cbi5pY29uLXhzIHtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBiZWhhdmlvciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogUkVNLWJhc2VkIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IDJyZW07ICAgICAgICAvKiAzMnB4IGNvbnRhaW5lciAqL1xuICBoZWlnaHQ6IDJyZW07XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgc3R5bGluZyAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gaW5zaWRlIC5pY29uLXhzIGNvbnRhaW5lciAqL1xuLmljb24teHMgPiAqIHtcbiAgd2lkdGg6IDFyZW07ICAgICAgICAvKiAxNnB4IGljb24gaW5zaWRlICovXG4gIGhlaWdodDogMXJlbTtcbn1cblxuLmljb24tc20ge1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIGJlaGF2aW9yICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBSRU0tYmFzZWQgY29udGFpbmVyIHNpemluZyAqL1xuICB3aWR0aDogMi41cmVtOyAgICAgIC8qIDQwcHggY29udGFpbmVyICovXG4gIGhlaWdodDogMi41cmVtO1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIHN0eWxpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBJY29uIGluc2lkZSAuaWNvbi1zbSBjb250YWluZXIgKi9cbi5pY29uLXNtID4gKiB7XG4gIHdpZHRoOiAxLjI1cmVtOyAgICAgLyogMjBweCBpY29uIGluc2lkZSAqL1xuICBoZWlnaHQ6IDEuMjVyZW07XG59XG5cbi5pY29uLWJhc2Uge1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIGJlaGF2aW9yICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBSRU0tYmFzZWQgY29udGFpbmVyIHNpemluZyAqL1xuICB3aWR0aDogM3JlbTsgICAgICAgIC8qIDQ4cHggY29udGFpbmVyIC0gdG91Y2ggdGFyZ2V0IGNvbXBsaWFudCAqL1xuICBoZWlnaHQ6IDNyZW07XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgc3R5bGluZyAqL1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIHRyYW5zaXRpb246IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIEljb24gaW5zaWRlIC5pY29uLWJhc2UgY29udGFpbmVyICovXG4uaWNvbi1iYXNlID4gKiB7XG4gIHdpZHRoOiAxLjVyZW07ICAgICAgLyogMjRweCBpY29uIGluc2lkZSAqL1xuICBoZWlnaHQ6IDEuNXJlbTtcbn1cblxuLmljb24tbWQge1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIGJlaGF2aW9yICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAvKiBSRU0tYmFzZWQgY29udGFpbmVyIHNpemluZyAqL1xuICB3aWR0aDogMy41cmVtOyAgICAgIC8qIDU2cHggY29udGFpbmVyICovXG4gIGhlaWdodDogMy41cmVtO1xuICAvKiBQcm9mZXNzaW9uYWwgY29udGFpbmVyIHN0eWxpbmcgKi9cbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBJY29uIGluc2lkZSAuaWNvbi1tZCBjb250YWluZXIgKi9cbi5pY29uLW1kID4gKiB7XG4gIHdpZHRoOiAxLjc1cmVtOyAgICAgLyogMjhweCBpY29uIGluc2lkZSAqL1xuICBoZWlnaHQ6IDEuNzVyZW07XG59XG5cbi5pY29uLWxnIHtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBiZWhhdmlvciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgLyogUkVNLWJhc2VkIGNvbnRhaW5lciBzaXppbmcgKi9cbiAgd2lkdGg6IDRyZW07ICAgICAgICAvKiA2NHB4IGNvbnRhaW5lciAtIHByaW1hcnkgZmVhdHVyZSBzaXplICovXG4gIGhlaWdodDogNHJlbTtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBzdHlsaW5nICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBpbnNpZGUgLmljb24tbGcgY29udGFpbmVyICovXG4uaWNvbi1sZyA+ICoge1xuICB3aWR0aDogMnJlbTsgICAgICAgIC8qIDMycHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAycmVtO1xufVxuXG4uaWNvbi14bCB7XG4gIC8qIFByb2Zlc3Npb25hbCBjb250YWluZXIgYmVoYXZpb3IgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIC8qIFJFTS1iYXNlZCBjb250YWluZXIgc2l6aW5nICovXG4gIHdpZHRoOiA1cmVtOyAgICAgICAgLyogODBweCBjb250YWluZXIgLSBoZXJvIGVsZW1lbnRzICovXG4gIGhlaWdodDogNXJlbTtcbiAgLyogUHJvZmVzc2lvbmFsIGNvbnRhaW5lciBzdHlsaW5nICovXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgdHJhbnNpdGlvbjogdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogSWNvbiBpbnNpZGUgLmljb24teGwgY29udGFpbmVyICovXG4uaWNvbi14bCA+ICoge1xuICB3aWR0aDogMi41cmVtOyAgICAgIC8qIDQwcHggaWNvbiBpbnNpZGUgKi9cbiAgaGVpZ2h0OiAyLjVyZW07XG59XG5cbi8qIEljb24gY29sb3IgdmFyaWFudHMgd2l0aCBwcm9mZXNzaW9uYWwgYmFja2dyb3VuZHMgLSBmb2xsb3dzIGJyYW5kIHBhbGV0dGUgKi9cbi5pY29uLWRlZmF1bHQge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG59XG5cbi5pY29uLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbn1cblxuLyogSGVyaXRhZ2UgcmVkIGljb24gLSBtYXhpbXVtIDEtMiBwZXIgdmlld3BvcnQgd2l0aCBzdHJhdGVnaWMgc3BhY2luZyAqL1xuLmljb24taGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIC8qIEhlcml0YWdlIGljb25zIG5lZWQgZXh0cmEgdmlzdWFsIHNwYWNlICgyNS0zNSUgbW9yZSkgKi9cbiAgbWFyZ2luLWJvdHRvbTogMnJlbTsgIC8qIHZzIHN0YW5kYXJkIDEuNXJlbSAqL1xuICAvKiBTdWJ0bGUgaGVyaXRhZ2Ugc2hhZG93IGZvciBlbXBoYXNpcyAqL1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4xKTtcbn1cblxuLmljb24tc3VjY2VzcyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpO1xufVxuXG4uaWNvbi13YXJuaW5nIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG59XG5cbi5pY29uLW11dGVkIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLW11dGVkKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQtZm9yZWdyb3VuZCkpO1xufVxuXG4uaWNvbi1vdXRsaW5lIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG59XG5cbi5pY29uLXdoaXRlIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gMC4xKTtcbn1cblxuLyogSWNvbiBiYWNrZ3JvdW5kcyAtIGVuaGFuY2VkIHByb2Zlc3Npb25hbCBjb250YWluZXJzICovXG4uaWNvbi1iZyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7IC8qIDEycHggKi9cbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi5pY29uLWJnLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5pY29uLWJnLWhlcml0YWdlIHtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkpO1xuICBjb2xvcjogd2hpdGU7XG4gIC8qIEV4dHJhIHBhZGRpbmcgZm9yIGhlcml0YWdlIGJhY2tncm91bmRzIChSRU0tYmFzZWQpICovXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpOyAvKiAxNnB4ICovXG4gIC8qIEVuaGFuY2VkIGhlcml0YWdlIHNwYWNpbmcgKi9cbiAgbWFyZ2luLWJvdHRvbTogMnJlbTsgIC8qIDI1LTM1JSBtb3JlIHRoYW4gc3RhbmRhcmQgKi9cbiAgLyogU3VidGxlIHNoYWRvdyBmb3IgZW1waGFzaXMgKi9cbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLWNvbG9yLWFjY2VudC1oZXJpdGFnZSkgLyAwLjIpO1xufVxuXG4uaWNvbi1iZy1tdXRlZCB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLWZvcmVncm91bmQpKTtcbn1cblxuLmljb24tYmctc3VjY2VzcyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmljb24tYmctd2FybmluZyB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmljb24tYmctb3V0bGluZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItZm9yZWdyb3VuZCkpO1xufVxuXG4vKiBJY29uIGFuaW1hdGlvbnMgLSBzdWJ0bGUgYW5kIHB1cnBvc2VmdWwgKi9cbi5pY29uLWludGVyYWN0aXZlIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIHZhcigtLWVhc2Utc21vb3RoKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uaWNvbi1pbnRlcmFjdGl2ZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogUm90YXRpb24gZm9yIGxvYWRpbmcvcHJvY2Vzc2luZyAqL1xuLmljb24tc3BpbiB7XG4gIGFuaW1hdGlvbjogaWNvbi1zcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBpY29uLXNwaW4ge1xuICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbi8qIFB1bHNlIGZvciBhdHRlbnRpb24gKGhlcml0YWdlIGljb25zIG9ubHkpICovXG4uaWNvbi1wdWxzZSB7XG4gIGFuaW1hdGlvbjogaWNvbi1wdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBpY29uLXB1bHNlIHtcbiAgMCUsIDEwMCUgeyBvcGFjaXR5OiAxOyB9XG4gIDUwJSB7IG9wYWNpdHk6IDAuNjsgfVxufVxuXG4vKiBIZXJpdGFnZSBidXR0b24gcHVsc2UgYW5pbWF0aW9uICovXG5Aa2V5ZnJhbWVzIGhlcml0YWdlLXB1bHNlIHtcbiAgMCUsIDEwMCUgeyBcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctaGVyaXRhZ2UpO1xuICB9XG4gIDUwJSB7IFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1oZXJpdGFnZSksIDAgMCAyMHB4IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpIC8gMC4zKTtcbiAgfVxufVxuXG4vKiBNb2JpbGUgUkVNLXJlc3BvbnNpdmUgYWRqdXN0bWVudHMgLSBUb3VjaC1mcmllbmRseSBzY2FsaW5nICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLyogRW5oYW5jZWQgY29udGFpbmVyIHNpemVzIGZvciBtb2JpbGUgdG91Y2ggdGFyZ2V0cyAqL1xuICAuaWNvbi14eHMge1xuICAgIHdpZHRoOiAxcmVtOyAgICAgIC8qIDE2cHggLSBzYW1lIGFzIGRlc2t0b3AgZm9yIGlubGluZSB1c2FnZSAqL1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxuICBcbiAgLmljb24teHMge1xuICAgIHdpZHRoOiAxLjVyZW07ICAgLyogMjRweCAqL1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG4gIFxuICAuaWNvbi1zbSB7XG4gICAgd2lkdGg6IDJyZW07ICAgICAvKiAzMnB4ICovXG4gICAgaGVpZ2h0OiAycmVtO1xuICB9XG4gIFxuICAuaWNvbi1iYXNlIHtcbiAgICB3aWR0aDogMi41cmVtOyAgIC8qIDQwcHggKi9cbiAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgfVxuICBcbiAgLmljb24tbWQge1xuICAgIHdpZHRoOiAzcmVtOyAgICAgLyogNDhweCAtIHRvdWNoIHRhcmdldCBjb21wbGlhbnQgKi9cbiAgICBoZWlnaHQ6IDNyZW07XG4gIH1cbiAgXG4gIC5pY29uLWxnIHtcbiAgICB3aWR0aDogMy41cmVtOyAgIC8qIDU2cHggKi9cbiAgICBoZWlnaHQ6IDMuNXJlbTtcbiAgfVxuICBcbiAgLmljb24teGwge1xuICAgIHdpZHRoOiA0cmVtOyAgICAgLyogNjRweCAqL1xuICAgIGhlaWdodDogNHJlbTtcbiAgfVxuICBcbiAgLyogSWNvbiBzaXplcyBpbnNpZGUgbW9iaWxlIGNvbnRhaW5lcnMgKi9cbiAgLmljb24teHhzID4gKiB7XG4gICAgd2lkdGg6IDAuNjI1cmVtOyAgLyogMTBweCAtIHZlcnkgc21hbGwgZm9yIG1vYmlsZSBpbmxpbmUgKi9cbiAgICBoZWlnaHQ6IDAuNjI1cmVtO1xuICB9XG4gIFxuICAuaWNvbi14cyA+ICoge1xuICAgIHdpZHRoOiAwLjc1cmVtOyAgIC8qIDEycHggKi9cbiAgICBoZWlnaHQ6IDAuNzVyZW07XG4gIH1cbiAgXG4gIC5pY29uLXNtID4gKiB7XG4gICAgd2lkdGg6IDFyZW07ICAgICAgLyogMTZweCAqL1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxuICBcbiAgLmljb24tYmFzZSA+ICoge1xuICAgIHdpZHRoOiAxLjI1cmVtOyAgIC8qIDIwcHggKi9cbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgc3Ryb2tlLXdpZHRoOiAyLjU7IC8qIEJvbGRlciBpY29ucyBmb3IgbW9iaWxlIGNsYXJpdHkgKi9cbiAgfVxuICBcbiAgLmljb24tbWQgPiAqIHtcbiAgICB3aWR0aDogMS41cmVtOyAgICAvKiAyNHB4ICovXG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cbiAgXG4gIC5pY29uLWxnID4gKiB7XG4gICAgd2lkdGg6IDEuNzVyZW07ICAgLyogMjhweCAqL1xuICAgIGhlaWdodDogMS43NXJlbTtcbiAgfVxuICBcbiAgLmljb24teGwgPiAqIHtcbiAgICB3aWR0aDogMnJlbTsgICAgICAvKiAzMnB4ICovXG4gICAgaGVpZ2h0OiAycmVtO1xuICB9XG4gIFxuICAvKiBFbmhhbmNlZCBjb250cmFzdCBmb3IgbW9iaWxlIHZpc2liaWxpdHkgKi9cbiAgLmljb24tcHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpIC8gMC4xNSk7ICAvKiBTbGlnaHRseSBoaWdoZXIgb3BhY2l0eSAqL1xuICB9XG4gIFxuICAuaWNvbi1zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykgLyAwLjE1KTtcbiAgfVxuICBcbiAgLmljb24td2FybmluZyB7XG4gICAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xNSk7XG4gIH1cbiAgXG4gIC8qIEFkanVzdGVkIGhlcml0YWdlIHNwYWNpbmcgZm9yIG1vYmlsZSAqL1xuICAuaWNvbi1oZXJpdGFnZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTsgIC8qIFJlZHVjZWQgZnJvbSAycmVtIGZvciBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLyogTGVnYWN5IHRvdWNoIHRhcmdldCBzdXBwb3J0ICovXG4gIC5pY29uLXRvdWNoIHtcbiAgICB3aWR0aDogM3JlbTsgICAgICAvKiBFbnN1cmUgbWluaW11bSB0b3VjaCB0YXJnZXQgKi9cbiAgICBoZWlnaHQ6IDNyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIFxuICAuaWNvbi10b3VjaDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IC0xMnB4OyAgICAgLyogNDhweCB0b3RhbCB0b3VjaCBhcmVhICovXG4gICAgei1pbmRleDogMTtcbiAgfVxufVxuXG4vKiBEZXNrdG9wIGVuaGFuY2VtZW50cyBhbmQgaG92ZXIgZWZmZWN0cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDEyODBweCkge1xuICAvKiBFbmhhbmNlZCBob3ZlciBlZmZlY3RzIG9uIGRlc2t0b3AgKi9cbiAgLmljb24teHhzOmhvdmVyLFxuICAuaWNvbi14czpob3ZlcixcbiAgLmljb24tc206aG92ZXIsXG4gIC5pY29uLWJhc2U6aG92ZXIsXG4gIC5pY29uLW1kOmhvdmVyLFxuICAuaWNvbi1sZzpob3ZlcixcbiAgLmljb24teGw6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgfVxuICBcbiAgLmljb24taGVyaXRhZ2U6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMjRweCByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMjUpO1xuICB9XG4gIFxuICAuaWNvbi1iZzpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICB9XG4gIFxuICAuaWNvbi1iZy1oZXJpdGFnZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTJweCAyNHB4IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMyk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDExLiBBQ0NFU1NJQklMSVRZIEZFQVRVUkVTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTY3JlZW4gcmVhZGVyIG9ubHkgY29udGVudCAqL1xuLnNyLW9ubHkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cblxuLyogU2tpcCB0byBjb250ZW50IGxpbmsgc3R5bGVzIG1vdmVkIHRvIGhlYWRlci5jc3MgdG8gYXZvaWQgZHVwbGljYXRpb24gKi9cblxuLyogRm9jdXMgdmlzaWJsZSBpbXByb3ZlbWVudHMgKi9cbi5mb2N1cy12aXNpYmxlOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogQWNjZXNzaWJpbGl0eSBhbmQgcmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmljb24teHhzLFxuICAuaWNvbi14cyxcbiAgLmljb24tc20sXG4gIC5pY29uLWJhc2UsXG4gIC5pY29uLW1kLFxuICAuaWNvbi1sZyxcbiAgLmljb24teGwsXG4gIC5pY29uLWJnIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG4gIFxuICAuaWNvbi14eHM6aG92ZXIsXG4gIC5pY29uLXhzOmhvdmVyLFxuICAuaWNvbi1zbTpob3ZlcixcbiAgLmljb24tYmFzZTpob3ZlcixcbiAgLmljb24tbWQ6aG92ZXIsXG4gIC5pY29uLWxnOmhvdmVyLFxuICAuaWNvbi14bDpob3ZlcixcbiAgLmljb24taGVyaXRhZ2U6aG92ZXIsXG4gIC5pY29uLWJnOmhvdmVyLFxuICAuaWNvbi1iZy1oZXJpdGFnZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgLmljb24tcHJpbWFyeSxcbiAgLmljb24taGVyaXRhZ2UsXG4gIC5pY29uLXN1Y2Nlc3MsXG4gIC5pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICB9XG4gIFxuICAuaWNvbi1tdXRlZCB7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLW11dGVkLWZvcmVncm91bmQpKTtcbiAgfVxuICBcbiAgLmljb24tb3V0bGluZSB7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIH1cbiAgXG4gIC5pY29uLWJnLXByaW1hcnksXG4gIC5pY29uLWJnLWhlcml0YWdlLFxuICAuaWNvbi1iZy1zdWNjZXNzLFxuICAuaWNvbi1iZy13YXJuaW5nIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAgIFBXQSBTQ1JPTEwgQU5JTUFUSU9OIFNZU1RFTSAtIFNJTkdMRSBTT1VSQ0UgT0YgVFJVVEhcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBcbiAqIElNUE9SVEFOVDogVGhpcyBjb2RlYmFzZSB1c2VzIE9ORSBvcHRpbWl6ZWQgUFdBIGFuaW1hdGlvbiBzeXN0ZW06XG4gKiBcbiAqIFBXQSBTQ1JPTEwgU1lTVEVNIChVU0UgVEhJUyk6IC5wd2Etc2Nyb2xsLSogY2xhc3Nlc1xuICogICAgLSBIaWdoLXBlcmZvcm1hbmNlIDYwZnBzIGFuaW1hdGlvbnMgd2l0aCBHUFUgYWNjZWxlcmF0aW9uXG4gKiAgICAtIEhhcmR3YXJlIGFjY2VsZXJhdGVkIHdpdGggdHJhbnNsYXRlWigwKSBhbmQgd2lsbC1jaGFuZ2VcbiAqICAgIC0gTXVsdGlwbGUgYW5pbWF0aW9uIHR5cGVzOiBmYWRlLCBzbGlkZS1sZWZ0LCBzbGlkZS1yaWdodCwgc2NhbGVcbiAqICAgIC0gVXNlcyAnYWN0aXZlJyBjbGFzcyB0cmlnZ2VyIGZvciByZWxpYWJsZSBjcm9zcy1icm93c2VyIHBlcmZvcm1hbmNlXG4gKiAgICAtIFJlcXVpcmVkIGZvciBBTEwgY29tcG9uZW50cyBwZXIgUFdBIHBlcmZvcm1hbmNlIHN0YW5kYXJkc1xuICogXG4gKiBBTklNQVRJT04gVFlQRVMgQVZBSUxBQkxFOlxuICogLSAucHdhLXNjcm9sbC1zZWN0aW9uOiBTZWN0aW9uIGNvbnRhaW5lciAoZm9yIGFwcC1saWtlIGJlaGF2aW9yKVxuICogLSAucHdhLXNjcm9sbC1mYWRlOiBTdGFuZGFyZCBmYWRlLWluIGFuaW1hdGlvblxuICogLSAucHdhLXNjcm9sbC1zbGlkZS1sZWZ0OiBTbGlkZSBpbiBmcm9tIGxlZnRcbiAqIC0gLnB3YS1zY3JvbGwtc2xpZGUtcmlnaHQ6IFNsaWRlIGluIGZyb20gcmlnaHQgIFxuICogLSAucHdhLXNjcm9sbC1zY2FsZTogU2NhbGUtaW4gYW5pbWF0aW9uXG4gKiBcbiAqIFRSSUdHRVI6IEFsbCBhbmltYXRpb25zIGFjdGl2YXRlIHdpdGggLmFjdGl2ZSBjbGFzcyBhZGRpdGlvblxuICovXG5cbi8qIFBXQSBTY3JvbGwgQ29udGFpbmVyIC0gQXBwLWxpa2UgYmVoYXZpb3IgKi9cbi5wd2Etc2Nyb2xsLWNvbnRhaW5lciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICB3aWxsLWNoYW5nZTogc2Nyb2xsLXBvc2l0aW9uO1xuICBjb250YWluOiBsYXlvdXQgc3R5bGUgcGFpbnQ7XG59XG5cbi8qIFBXQSBTY3JvbGwgU2VjdGlvbnMgLSA2MGZwcyBvcHRpbWl6ZWQgZm9yIHNlY3Rpb24gY29udGFpbmVycyAqL1xuLnB3YS1zY3JvbGwtc2VjdGlvbiB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgc2Nyb2xsLXNuYXAtc3RvcDogbm9ybWFsO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IC8qIEdQVSBhY2NlbGVyYXRpb24gKi9cbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwZXJzcGVjdGl2ZTogMTAwMHB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogICBQV0EgT1BUSU1JWkVEIEFOSU1BVElPTiBDTEFTU0VTIC0gSElHSCBQRVJGT1JNQU5DRSA2MEZQU1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIENSSVRJQ0FMOiBSZXF1aXJlZCBmb3IgQUxMIGNvbXBvbmVudHMgcGVyIFBXQSBwZXJmb3JtYW5jZSBzdGFuZGFyZHMgKi9cblxuLyogUFdBIEZhZGUgQW5pbWF0aW9uIC0gU3RhbmRhcmQgZmFkZS1pbiBmcm9tIGJvdHRvbSAqL1xuLnB3YS1zY3JvbGwtZmFkZSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSB0cmFuc2xhdGVaKDApO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXRpbWluZy1mYXN0KSB2YXIoLS1lYXNpbmctc21vb3RoKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogY2FsYyh2YXIoLS1zdGFnZ2VyLWluZGV4LCAwKSAqIHZhcigtLXB3YS1zdGFnZ2VyLWRlbGF5LCAxMDBtcykpO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIGNvbnRhaW46IGxheW91dCBzdHlsZTtcbn1cblxuLnB3YS1zY3JvbGwtZmFkZS5hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWigwKTtcbn1cblxuLnB3YS1zY3JvbGwtc2xpZGUtbGVmdCB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCkgdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCksXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS10aW1pbmctZmFzdCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0tc3RhZ2dlci1pbmRleCwgMCkgKiB2YXIoLS1wd2Etc3RhZ2dlci1kZWxheSwgMTAwbXMpKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG59XG5cbi5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQuYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVooMCk7XG59XG5cbi5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0IHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpIHRyYW5zbGF0ZVooMCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm0gdmFyKC0tdGltaW5nLWZhc3QpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICB0cmFuc2l0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogdmFyKC0tcHdhLXN0YWdnZXItZGVsYXksIDEwMG1zKSk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlO1xufVxuXG4ucHdhLXNjcm9sbC1zbGlkZS1yaWdodC5hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWigwKTtcbn1cblxuLnB3YS1zY3JvbGwtc2NhbGUge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOSkgdHJhbnNsYXRlWigwKTtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aW1pbmctbm9ybWFsKSB2YXIoLS1lYXNpbmctc21vb3RoKSxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXRpbWluZy1ub3JtYWwpIHZhcigtLWVhc2luZy1zbW9vdGgpO1xuICB0cmFuc2l0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogdmFyKC0tcHdhLXN0YWdnZXItZGVsYXksIDEwMG1zKSk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgY29udGFpbjogbGF5b3V0IHN0eWxlO1xufVxuXG4ucHdhLXNjcm9sbC1zY2FsZS5hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVooMCk7XG59XG5cbi8qIFBXQSBTdGFnZ2VyIFN5c3RlbSAtIEVuaGFuY2VkIHdpdGggcGVyZm9ybWFuY2UgaXNvbGF0aW9uIGZvciBlbGVtZW50IHNlcXVlbmNpbmcgKi9cbi5wd2Etc2Nyb2xsLXN0YWdnZXIge1xuICB0cmFuc2l0aW9uLWRlbGF5OiBjYWxjKHZhcigtLXN0YWdnZXItaW5kZXgsIDApICogdmFyKC0tcHdhLXN0YWdnZXItZGVsYXksIDEwMG1zKSk7XG4gIGNvbnRhaW46IGxheW91dDtcbn1cblxuXG4vKiBDbGVhbiB1cCB3aWxsLWNoYW5nZSBhZnRlciBhbmltYXRpb25zIGNvbXBsZXRlICovXG4ucHdhLXNjcm9sbC1mYWRlLmFjdGl2ZSxcbi5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQuYWN0aXZlLFxuLnB3YS1zY3JvbGwtc2xpZGUtcmlnaHQuYWN0aXZlLFxuLnB3YS1zY3JvbGwtc2NhbGUuYWN0aXZlIHtcbiAgd2lsbC1jaGFuZ2U6IGF1dG87XG59XG5cbi8qIFBXQSBBY2Nlc3NpYmlsaXR5IFN1cHBvcnQgLSBSZXNwZWN0IHJlZHVjZWQgbW90aW9uIHByZWZlcmVuY2VzICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAvKiBEaXNhYmxlIGFsbCBQV0Egc2Nyb2xsIGFuaW1hdGlvbnMgd2hpbGUgcHJlc2VydmluZyBmdW5jdGlvbmFsaXR5ICovXG4gIC5wd2Etc2Nyb2xsLWZhZGUsXG4gIC5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQsXG4gIC5wd2Etc2Nyb2xsLXNsaWRlLXJpZ2h0LFxuICAucHdhLXNjcm9sbC1zY2FsZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB3aWxsLWNoYW5nZTogYXV0bztcbiAgfVxuICBcbiAgLnB3YS1zY3JvbGwtZmFkZS5hY3RpdmUsXG4gIC5wd2Etc2Nyb2xsLXNsaWRlLWxlZnQuYWN0aXZlLFxuICAucHdhLXNjcm9sbC1zbGlkZS1yaWdodC5hY3RpdmUsXG4gIC5wd2Etc2Nyb2xsLXNjYWxlLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgXG4gIC8qIERpc2FibGUgUFdBIHBlcmZvcm1hbmNlIGZlYXR1cmVzIGZvciBhY2Nlc3NpYmlsaXR5ICovXG4gIC5wd2Etc2Nyb2xsLWNvbnRhaW5lcixcbiAgLnB3YS1zY3JvbGwtc2VjdGlvbiB7XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogbm9uZTtcbiAgICB3aWxsLWNoYW5nZTogYXV0bztcbiAgfVxufVxuXG5cblxuXG4vKiBMb2FkaW5nIHN0YXRlcyAqL1xuLnNrZWxldG9uIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIDkwZGVnLFxuICAgIHJnYih2YXIoLS1jb2xvci1tdXRlZCkpIDI1JSxcbiAgICByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC41KSA1MCUsXG4gICAgcmdiKHZhcigtLWNvbG9yLW11dGVkKSkgNzUlXG4gICk7XG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBza2VsZXRvbi1sb2FkaW5nIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgMDtcbiAgfVxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwJSAwO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxMy4gREFUQSBWSVNVQUxJWkFUSU9OIEZPVU5EQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBDaGFydCBjb2xvciBzZXF1ZW5jZXMgKi9cbi5jaGFydC1jb2xvci0xIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7IH1cbi5jaGFydC1jb2xvci0yIHsgY29sb3I6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UpKTsgfVxuLmNoYXJ0LWNvbG9yLTMgeyBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpOyB9XG4uY2hhcnQtY29sb3ItNCB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3Itc3VjY2VzcykpOyB9XG4uY2hhcnQtY29sb3ItNSB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpOyB9XG4uY2hhcnQtY29sb3ItNiB7IGNvbG9yOiByZ2IodmFyKC0tY29sb3ItaW5mbykpOyB9XG5cbi5jaGFydC1iZy0xIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXByaW1hcnkpKTsgfVxuLmNoYXJ0LWJnLTIgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7IH1cbi5jaGFydC1iZy0zIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpOyB9XG4uY2hhcnQtYmctNCB7IGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1zdWNjZXNzKSk7IH1cbi5jaGFydC1iZy01IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTsgfVxuLmNoYXJ0LWJnLTYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItaW5mbykpOyB9XG5cbi8qIERhdGEgdGFibGUgc3R5bGVzIC0gRW5oYW5jZWQgKi9cbi50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG4udGFibGUgdGgge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgcmdiKHZhcigtLWNvbG9yLWJvcmRlcikpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4zKTtcbn1cblxuLnRhYmxlIHRkIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjAwbXMgZWFzZTtcbn1cblxuLnRhYmxlIHRyIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyMDBtcyBlYXNlO1xufVxuXG4udGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC41KTtcbn1cblxuLyogWmVicmEgc3RyaXBpbmcgKi9cbi50YWJsZS16ZWJyYSB0Ym9keSB0cjpudGgtY2hpbGQoZXZlbikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItbXV0ZWQpIC8gMC4yKTtcbn1cblxuLnRhYmxlLXplYnJhIHRib2R5IHRyOm50aC1jaGlsZChldmVuKTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZCkgLyAwLjYpO1xufVxuXG4vKiBSZXNwb25zaXZlIHRhYmxlIHdyYXBwZXIgKi9cbi50YWJsZS1yZXNwb25zaXZlIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4vKiBNZXRyaWMgZGlzcGxheSBjbGFzc2VzICovXG4ubWV0cmljIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLm1ldHJpYy12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogMi41cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1mb3JlZ3JvdW5kKSk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBIZXJpdGFnZSBtZXRyaWMgLSBmb2xsb3dzIDEwJSBydWxlICovXG4ubWV0cmljLXZhbHVlLm1ldHJpYy1oZXJpdGFnZSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IC8qIFJlcXVpcmVkIGZvciByZWQgdGV4dCAqL1xufVxuXG4ubWV0cmljLWxhYmVsIHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1tdXRlZC1mb3JlZ3JvdW5kKSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi8qIFN1Y2Nlc3MgbWV0cmljcyBjb250YWluZXIgKi9cbi5zdWNjZXNzLW1ldHJpY3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uc3VjY2Vzcy1tZXRyaWNzIHNwYW4ge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8qIFN1Y2Nlc3MgbWV0cmljIHZhcmlhbnRzICovXG4ubWV0cmljLWFjY2VudC1oZXJpdGFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSAvIDAuMSk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG59XG5cbi5tZXRyaWMtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY29sb3Itc3VjY2VzcykgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbn1cblxuLm1ldHJpYy1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXNlY29uZGFyeSkgLyAwLjEpO1xuICBjb2xvcjogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xufVxuXG4ubWV0cmljLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXdhcm5pbmcpIC8gMC4xKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nKSk7XG59XG5cbi8qIFN0ZXAgbnVtYmVyIHN0eWxpbmcgZm9yIHByb2Nlc3MgZmxvd3MgKi9cbi5zdGVwLW51bWJlciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNwYWNlLTE2KTtcbiAgaGVpZ2h0OiB2YXIoLS1zcGFjZS0xNik7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uc3RlcC1udW1iZXItaGVyaXRhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgLyogRXh0cmEgc3BhY2luZyBmb3IgaGVyaXRhZ2UgcmVkICgyNS0zNSUgbW9yZSkgKi9cbiAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS00KSAqIDEuMyk7XG59XG5cbi5zdGVwLW51bWJlci1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5KSk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnN0ZXAtbnVtYmVyLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tY29sb3Itd2FybmluZykpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5zdGVwLW51bWJlci1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLWNvbG9yLXN1Y2Nlc3MpKTtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4vKiBEYXRhIHZpc3VhbGl6YXRpb24gaGVscGVycyAqL1xuLmRhdGEtY2FyZCB7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYih2YXIoLS1jb2xvci1ib3JkZXIpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gIHRyYW5zaXRpb246IGFsbCAyMDBtcyBlYXNlO1xufVxuXG4uZGF0YS1jYXJkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4uZGF0YS1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZGF0YS1ncmlkIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICB9XG59XG5cbi8qIERhdGEgaGlnaGxpZ2h0IGZvciBpbXBvcnRhbnQgdmFsdWVzICovXG4uZGF0YS1oaWdobGlnaHQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIGNvbG9yOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS03MDApKTtcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLmRhdGEtaGlnaGxpZ2h0OjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogMnB4O1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS0zMDApKTtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTQuIE1PQklMRS1GSVJTVCBBTklNQVRJT05TICYgVE9VQ0ggRkVFREJBQ0tcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRvdWNoIEZlZWRiYWNrIEJhc2UgKi9cbi50b3VjaC1zY2FsZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1pbnN0YW50KSBlYXNlLW91dDtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRvdWNoLXNjYWxlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG59XG5cbi8qIE1hdGVyaWFsIERlc2lnbiBSaXBwbGUgRWZmZWN0ICovXG4udG91Y2gtcmlwcGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4udG91Y2gtcmlwcGxlOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZS1vdXQsXG4gICAgICAgICAgICAgIGhlaWdodCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2Utb3V0O1xufVxuXG4udG91Y2gtcmlwcGxlOmFjdGl2ZTo6YmVmb3JlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuXG4vKiBNb2JpbGUgUGFnZSBUcmFuc2l0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5wYWdlLWVudGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICBcbiAgLnBhZ2UtZW50ZXItYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZS1vdXQsXG4gICAgICAgICAgICAgICAgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLW91dDtcbiAgfVxuICBcbiAgLnBhZ2UtZXhpdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgXG4gIC5wYWdlLWV4aXQtYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwJSk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZS1pbixcbiAgICAgICAgICAgICAgICBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UtaW47XG4gIH1cbn1cblxuLyogTW9iaWxlIFNjcm9sbCBPcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnNjcm9sbC1yZXZlYWwge1xuICAgIC0tc2Nyb2xsLXJldmVhbC1kaXN0YW5jZTogMTBweDsgLyogUmVkdWNlZCBkaXN0YW5jZSBvbiBtb2JpbGUgKi9cbiAgfVxuICBcbiAgLyogRGlzYWJsZSBwYXJhbGxheCBvbiBtb2JpbGUgZm9yIHBlcmZvcm1hbmNlICovXG4gIC5wYXJhbGxheCB7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogRGVza3RvcCBBbmltYXRpb24gRW5oYW5jZW1lbnRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIDpyb290IHtcbiAgICAvKiBVc2UgZGVza3RvcCB0aW1pbmcgKi9cbiAgICAtLWR1cmF0aW9uLWluc3RhbnQ6IHZhcigtLWR1cmF0aW9uLWluc3RhbnQtZGVza3RvcCk7XG4gICAgLS1kdXJhdGlvbi1mYXN0OiB2YXIoLS1kdXJhdGlvbi1mYXN0LWRlc2t0b3ApO1xuICAgIC0tZHVyYXRpb24tbm9ybWFsOiB2YXIoLS1kdXJhdGlvbi1ub3JtYWwtZGVza3RvcCk7XG4gICAgLS1kdXJhdGlvbi1zbG93OiB2YXIoLS1kdXJhdGlvbi1zbG93LWRlc2t0b3ApO1xuICAgIC0tZHVyYXRpb24tc2xvd2VyOiB2YXIoLS1kdXJhdGlvbi1zbG93ZXItZGVza3RvcCk7XG4gIH1cbiAgXG4gIC8qIEVuaGFuY2VkIHNjcm9sbCByZXZlYWxzIG9uIGRlc2t0b3AgKi9cbiAgLnNjcm9sbC1yZXZlYWwge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgdmFyKC0tZWFzaW5nLWV4cG8pLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1zbG93KSB2YXIoLS1lYXNpbmctZXhwbyk7XG4gIH1cbiAgXG4gIC8qIFN0YWdnZXJlZCBhbmltYXRpb25zIG9uIGRlc2t0b3Agb25seSAqL1xuICAuc2Nyb2xsLXJldmVhbDpudGgtY2hpbGQoMSkgeyB0cmFuc2l0aW9uLWRlbGF5OiAwbXM7IH1cbiAgLnNjcm9sbC1yZXZlYWw6bnRoLWNoaWxkKDIpIHsgdHJhbnNpdGlvbi1kZWxheTogNzVtczsgfVxuICAuc2Nyb2xsLXJldmVhbDpudGgtY2hpbGQoMykgeyB0cmFuc2l0aW9uLWRlbGF5OiAxNTBtczsgfVxuICAuc2Nyb2xsLXJldmVhbDpudGgtY2hpbGQoNCkgeyB0cmFuc2l0aW9uLWRlbGF5OiAyMjVtczsgfVxuICAuc2Nyb2xsLXJldmVhbDpudGgtY2hpbGQoNSkgeyB0cmFuc2l0aW9uLWRlbGF5OiAzMDBtczsgfVxufVxuXG4vKiBUb3VjaCB2cyBIb3ZlciBEZXRlY3Rpb24gKi9cbkBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgLyogVG91Y2ggZGV2aWNlcyAqL1xuICAuaW50ZXJhY3RpdmU6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgfVxufVxuXG5AbWVkaWEgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSB7XG4gIC8qIERldmljZXMgd2l0aCBwcmVjaXNlIHBvaW50ZXJzICovXG4gIC5pbnRlcmFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2Utb3V0LFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQ7XG4gIH1cbiAgXG4gIC5pbnRlcmFjdGl2ZTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBNb3Rpb24gU3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgOnJvb3Qge1xuICAgIC0tZHVyYXRpb24taW5zdGFudDogMG1zO1xuICAgIC0tZHVyYXRpb24tZmFzdDogMG1zO1xuICAgIC0tZHVyYXRpb24tbm9ybWFsOiAwbXM7XG4gICAgLS1kdXJhdGlvbi1zbG93OiAwbXM7XG4gICAgLS1kdXJhdGlvbi1zbG93ZXI6IDBtcztcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTUuIERBSVNZVUkgVEhFTUUgQ09ORklHVVJBVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQXBwbHkgYm91bmRsZXNzIHRoZW1lIGZyb20gdGFpbHdpbmQuY29uZmlnLmpzICovXG5bZGF0YS10aGVtZT1cImJvdW5kbGVzc1wiXSB7XG4gIGNvbG9yLXNjaGVtZTogbGlnaHQ7XG59XG5cbi8qIE1vYmlsZS1GaXJzdCBNZWRpYSBRdWVyaWVzIGZvciBUeXBvZ3JhcGh5ICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgOnJvb3Qge1xuICAgIC8qIFVzZSBtb2JpbGUgZm9udCB3ZWlnaHRzICovXG4gICAgLS1mb250LXdlaWdodC1oZXJvOiB2YXIoLS1mb250LXdlaWdodC1oZXJvLW1vYmlsZSk7XG4gICAgLS1mb250LXdlaWdodC1oZWFkaW5nOiB2YXIoLS1mb250LXdlaWdodC1oZWFkaW5nLW1vYmlsZSk7XG4gICAgLS1mb250LXdlaWdodC1ib2xkOiB2YXIoLS1mb250LXdlaWdodC1ib2xkLW1vYmlsZSk7XG4gICAgLS1mb250LXdlaWdodC1oZXJpdGFnZTogdmFyKC0tZm9udC13ZWlnaHQtaGVyaXRhZ2UtbW9iaWxlKTtcbiAgICBcbiAgICAvKiBNb2JpbGUgbGluZSBoZWlnaHRzICovXG4gICAgLS1saW5lLWhlaWdodC10aWdodDogdmFyKC0tbGluZS1oZWlnaHQtdGlnaHQtbW9iaWxlKTtcbiAgICAtLWxpbmUtaGVpZ2h0LW5vcm1hbDogdmFyKC0tbGluZS1oZWlnaHQtYmFzZS1tb2JpbGUpO1xuICAgIC0tbGluZS1oZWlnaHQtbG9vc2U6IHZhcigtLWxpbmUtaGVpZ2h0LWxvb3NlLW1vYmlsZSk7XG4gIH1cbiAgXG4gIC8qIEFkanVzdCBoZXJvIHR5cG9ncmFwaHkgZm9yIG1vYmlsZSAqL1xuICAudGl0bGUtaGVybyB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWhlcm8tbW9iaWxlKTtcbiAgfVxuICBcbiAgLnRpdGxlLXNlY3Rpb24sXG4gIC50aXRsZS1kaXNwbGF5IHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtaGVhZGluZy1tb2JpbGUpO1xuICB9XG4gIFxuICAvKiBNaW5pbXVtIDE2cHggZm9yIGFsbCB0ZXh0IG9uIG1vYmlsZSAqL1xuICAuZGVzY3JpcHRpb24sXG4gIC50ZXh0LXNtIHtcbiAgICBmb250LXNpemU6IG1heCh2YXIoLS1mb250LXNpemUtYmFzZSksIDE2cHgpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgOnJvb3Qge1xuICAgIC8qIFVzZSBkZXNrdG9wIGZvbnQgd2VpZ2h0cyAqL1xuICAgIC0tZm9udC13ZWlnaHQtaGVybzogdmFyKC0tZm9udC13ZWlnaHQtaGVyby1kZXNrdG9wKTtcbiAgICAtLWZvbnQtd2VpZ2h0LWhlYWRpbmc6IHZhcigtLWZvbnQtd2VpZ2h0LWhlYWRpbmctZGVza3RvcCk7XG4gICAgLS1mb250LXdlaWdodC1ib2xkOiB2YXIoLS1mb250LXdlaWdodC1ib2xkLWRlc2t0b3ApO1xuICAgIC0tZm9udC13ZWlnaHQtaGVyaXRhZ2U6IHZhcigtLWZvbnQtd2VpZ2h0LWhlcml0YWdlLWRlc2t0b3ApO1xuICB9XG4gIFxuICAvKiBSZWZpbmVkIGRlc2t0b3AgdHlwb2dyYXBoeSAqL1xuICAudGl0bGUtaGVybyB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWhlcm8tZGVza3RvcCk7XG4gIH1cbiAgXG4gIC50aXRsZS1zZWN0aW9uLFxuICAudGl0bGUtZGlzcGxheSB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWhlYWRpbmctZGVza3RvcCk7XG4gIH1cbn1cblxuLyogRGFpc3lVSSBjb21wb25lbnQgb3ZlcnJpZGVzIGZvciBicmFuZCBjb25zaXN0ZW5jeSAqL1xuLmRhaXN5LXByaW1hcnkge1xuICAtLXByaW1hcnk6IHJnYih2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG4gIC0tcHJpbWFyeS1jb250ZW50OiByZ2IodmFyKC0tY29sb3ItcHJpbWFyeS1mb3JlZ3JvdW5kKSk7XG59XG5cbi5kYWlzeS1zZWNvbmRhcnkge1xuICAtLXNlY29uZGFyeTogcmdiKHZhcigtLWNvbG9yLXNlY29uZGFyeSkpO1xuICAtLXNlY29uZGFyeS1jb250ZW50OiByZ2IodmFyKC0tY29sb3Itc2Vjb25kYXJ5LWZvcmVncm91bmQpKTtcbn1cblxuLmRhaXN5LWFjY2VudCB7XG4gIC0tYWNjZW50OiByZ2IodmFyKC0tY29sb3ItYWNjZW50LWhlcml0YWdlKSk7XG4gIC0tYWNjZW50LWNvbnRlbnQ6IHJnYih2YXIoLS1jb2xvci1hY2NlbnQtaGVyaXRhZ2UtZm9yZWdyb3VuZCkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTUuIE1PQklMRSBQRVJGT1JNQU5DRSBPUFRJTUlaQVRJT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBDU1MgQ29udGFpbm1lbnQgZm9yIHBlcmZvcm1hbmNlICovXG4uY29udGFpbi1sYXlvdXQge1xuICBjb250YWluOiBsYXlvdXQ7XG59XG5cbi5jb250YWluLXN0eWxlIHtcbiAgY29udGFpbjogc3R5bGU7XG59XG5cbi5jb250YWluLXBhaW50IHtcbiAgY29udGFpbjogcGFpbnQ7XG59XG5cbi5jb250YWluLXN0cmljdCB7XG4gIGNvbnRhaW46IHN0cmljdDtcbn1cblxuLyogV2lsbC1jaGFuZ2Ugb3B0aW1pemF0aW9uIGhpbnRzICovXG4ud2lsbC1jaGFuZ2UtdHJhbnNmb3JtIHtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbn1cblxuLndpbGwtY2hhbmdlLW9wYWNpdHkge1xuICB3aWxsLWNoYW5nZTogb3BhY2l0eTtcbn1cblxuLyogUmVtb3ZlIHdpbGwtY2hhbmdlIGFmdGVyIGFuaW1hdGlvbiAqL1xuLndpbGwtY2hhbmdlLWF1dG8ge1xuICB3aWxsLWNoYW5nZTogYXV0bztcbn1cblxuLyogR1BVIGFjY2VsZXJhdGlvbiBoaW50cyAqL1xuLmdwdS1hY2NlbGVyYXRlZCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwZXJzcGVjdGl2ZTogMTAwMHB4O1xufVxuXG4vKiBPcHRpbWl6ZSBpbWFnZXMgZm9yIG1vYmlsZSAqL1xuLmltYWdlLXJlbmRlcmluZy1hdXRvIHtcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xufVxuXG4uaW1hZ2UtcmVuZGVyaW5nLWNyaXNwIHtcbiAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xuICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzO1xufVxuXG4vKiBQcmV2ZW50IGxheW91dCBzaGlmdCAqL1xuLmFzcGVjdC1zcXVhcmUge1xuICBhc3BlY3QtcmF0aW86IDEgLyAxO1xufVxuXG4uYXNwZWN0LXZpZGVvIHtcbiAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG59XG5cbi5hc3BlY3QtNC0zIHtcbiAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbn1cblxuLyogUFdBIE1vYmlsZSBTY3JvbGwgRm91bmRhdGlvbiAtIEVuaGFuY2VkICovXG4uc2Nyb2xsLXNtb290aCB7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zY3JvbGwtc21vb3RoIHtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG87XG4gIH1cbn1cblxuLyogUFdBIE92ZXJzY3JvbGwgQ29udHJvbCAtIEFwcC1saWtlIGJlaGF2aW9yICovXG4ub3ZlcnNjcm9sbC1ub25lIHtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogbm9uZTtcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvci14OiBub25lO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IG5vbmU7XG59XG5cbi5vdmVyc2Nyb2xsLWNvbnRhaW4ge1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXg6IGNvbnRhaW47XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjtcbn1cblxuLm92ZXJzY3JvbGwtYXV0byB7XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGF1dG87XG59XG5cbi8qIFBXQSBUb3VjaCBTY3JvbGxpbmcgLSA2MGZwcyBvcHRpbWl6ZWQgKi9cbi50b3VjaC1zY3JvbGwge1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5O1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xufVxuXG4vKiBQV0EgU2Nyb2xsIFNuYXAgTmF2aWdhdGlvbiAqL1xuLnNjcm9sbC1zbmFwLW1hbmRhdG9yeSB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xufVxuXG4uc2Nyb2xsLXNuYXAtcHJveGltaXR5IHtcbiAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7XG59XG5cbi5zY3JvbGwtc25hcC1ub25lIHtcbiAgc2Nyb2xsLXNuYXAtdHlwZTogbm9uZTtcbn1cblxuLnNjcm9sbC1zbmFwLXN0YXJ0IHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xufVxuXG4uc2Nyb2xsLXNuYXAtY2VudGVyIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNjcm9sbC1zbmFwLWVuZCB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBlbmQ7XG59XG5cbi5zY3JvbGwtc25hcC1zdG9wIHtcbiAgc2Nyb2xsLXNuYXAtc3RvcDogYWx3YXlzO1xufVxuXG4vKiBQV0EgU2Nyb2xsIFBlcmZvcm1hbmNlIENsYXNzZXMgKi9cbi5zY3JvbGwtZ3B1IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHBlcnNwZWN0aXZlOiAxMDAwcHg7XG4gIHdpbGwtY2hhbmdlOiBzY3JvbGwtcG9zaXRpb247XG59XG5cbi5zY3JvbGwtY29udGFpbiB7XG4gIGNvbnRhaW46IGxheW91dCBzdHlsZSBwYWludDtcbn1cblxuLnNjcm9sbC1jb250YWluLXN0cmljdCB7XG4gIGNvbnRhaW46IHN0cmljdDtcbn1cblxuLyogUFdBLW9wdGltaXplZCBib2R5IHNjcm9sbCBmb3IgYXBwLWxpa2UgZXhwZXJpZW5jZSAqL1xuYm9keS5wd2EtYm9keSB7XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIGJvZHkucHdhLWJvZHkge1xuICAgIHNjcm9sbC1iZWhhdmlvcjogYXV0bztcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTYuIFBXQS1SRUFEWSBDT05GSUdVUkFUSU9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogUFdBIEluc3RhbGwgQmFubmVyICovXG4ucHdhLWluc3RhbGwtYmFubmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBsZWZ0OiB2YXIoLS1zcGFjZS00KTtcbiAgcmlnaHQ6IHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiByZ2IodmFyKC0tY29sb3ItYmFja2dyb3VuZCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICB6LWluZGV4OiB2YXIoLS16LXRvYXN0KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEyMCUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi5wd2EtaW5zdGFsbC1iYW5uZXIudmlzaWJsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogT2ZmbGluZSBpbmRpY2F0b3IgKi9cbi5vZmZsaW5lLWluZGljYXRvciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLXdhcm5pbmcpKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci13YXJuaW5nLWZvcmVncm91bmQpKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICB6LWluZGV4OiB2YXIoLS16LWFsZXJ0KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgdmFyKC0tZWFzaW5nLXNtb290aCk7XG59XG5cbi5vZmZsaW5lLWluZGljYXRvci52aXNpYmxlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBVcGRhdGUgYXZhaWxhYmxlIG5vdGlmaWNhdGlvbiAqL1xuLnVwZGF0ZS1ub3RpZmljYXRpb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIHJpZ2h0OiB2YXIoLS1zcGFjZS00KTtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWluZm8pKTtcbiAgY29sb3I6IHJnYih2YXIoLS1jb2xvci1pbmZvLWZvcmVncm91bmQpKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gIHotaW5kZXg6IHZhcigtLXotdG9hc3QpO1xuICBtYXgtd2lkdGg6IDMyMHB4O1xufVxuXG4vKiBMb2FkaW5nIHNwbGFzaCBzY3JlZW4gKi9cbi5wd2Etc3BsYXNoIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogcmdiKHZhcigtLWNvbG9yLWJhY2tncm91bmQpKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHotaW5kZXg6IHZhcigtLXotbG9hZGVyKTtcbn1cblxuLyogTW9iaWxlIGFwcC1saWtlIHRyYW5zaXRpb25zICovXG4uYXBwLXRyYW5zaXRpb24tZW50ZXIge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG59XG5cbi5hcHAtdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZS1vdXQsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2Utb3V0O1xufVxuXG4uYXBwLXRyYW5zaXRpb24tZXhpdCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG5cbi5hcHAtdHJhbnNpdGlvbi1leGl0LWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UtaW4sXG4gICAgICAgICAgICAgIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UtaW47XG59XG5cbi8qIEJvdHRvbSBtb2JpbGUgbmF2aWdhdGlvbiAoUFdBKSAqL1xuLm1vYmlsZS1ib3R0b20tbmF2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IHZhcigtLXRvdWNoLXRhcmdldC1sYXJnZSk7XG4gIGJhY2tncm91bmQ6IHJnYih2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSk7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IodmFyKC0tY29sb3ItYm9yZGVyKSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FmZS1hcmVhLWJvdHRvbSk7XG4gIHotaW5kZXg6IHZhcigtLXotc3RpY2t5KTtcbn1cblxuLyogUFdBIFN0YXR1cyBiYXIgdGhlbWluZyAqL1xuQG1lZGlhIChkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpIHtcbiAgLnB3YS1zdGF0dXMtcGFkZGluZyB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNhZmUtYXJlYS10b3ApO1xuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxNy4gQ09NUE9ORU5UIFNUWUxFIElNUE9SVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENvbXBvbmVudCBzdHlsZXMgYXJlIGltcG9ydGVkIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlIGFmdGVyIFRhaWx3aW5kIGFuZCBmb250c1xuICAgdG8gZW5zdXJlIHByb3BlciBDU1MgY2FzY2FkZSBvcmRlciBhbmQgYXZvaWQgUG9zdENTUyBpbXBvcnQgd2FybmluZ3MgKi8iXX0= */