/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[3]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[4]!./assets/scss/app.scss ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * SolidInvoice Main Application Stylesheet
 *
 * This is the main entry point for all application styles.
 * It imports Bootstrap, the design system, components, and layouts.
 */
/**
 * SolidInvoice Design System - Main Index
 *
 * Imports all design system foundation files.
 * This file should be imported early in app.scss,
 * after Bootstrap functions/variables but before components.
 */
/**
 * SolidInvoice Design System - Design Tokens
 *
 * Core design tokens defining colors, spacing, shadows, border radius,
 * and transitions. All values are exposed as CSS custom properties.
 *
 * These are Tabler's own tokens, not a parallel namespace. Tabler 1.5 removed the `$prefix`
 * Sass variable, so there is no way to compile it under a name of ours; a token declared here
 * with a name Tabler also uses — `--tblr-primary`, the grey ramp, the shadows — overwrites
 * Tabler's and carries the brand through every component built on it. Tokens with no Tabler
 * counterpart sit in the same namespace rather than a private one, so there is a single answer
 * to "where does this value come from".
 */
:root {
  --tblr-primary: #2e963a;
  --tblr-primary-rgb: 46, 150, 58;
  --tblr-primary-hover: #268032;
  --tblr-primary-dark: #1f6c29;
  --tblr-primary-light: #e8f5e9;
  --tblr-primary-lighter: #f1f9f2;
  --tblr-accent: #f0a015;
  --tblr-accent-rgb: 240, 160, 21;
  --tblr-accent-hover: #d89012;
  --tblr-accent-dark: #c8820e;
  --tblr-accent-light: #fff8e1;
  --tblr-accent-lighter: #fffcf0;
  --tblr-gray-50: #f8fafc;
  --tblr-gray-100: #f1f5f9;
  --tblr-gray-200: #e2e8f0;
  --tblr-gray-300: #cbd5e1;
  --tblr-gray-400: #94a3b8;
  --tblr-gray-500: #64748b;
  --tblr-gray-600: #475569;
  --tblr-gray-700: #334155;
  --tblr-gray-800: #1e293b;
  --tblr-gray-900: #0f172a;
  --tblr-success: #10b981;
  --tblr-success-rgb: 16, 185, 129;
  --tblr-success-hover: #059669;
  --tblr-success-dark: #047857;
  --tblr-success-light: #d1fae5;
  --tblr-success-lighter: #ecfdf5;
  --tblr-danger: #ef4444;
  --tblr-danger-rgb: 239, 68, 68;
  --tblr-danger-hover: #dc2626;
  --tblr-danger-dark: #b91c1c;
  --tblr-danger-light: #fee2e2;
  --tblr-danger-lighter: #fef2f2;
  --tblr-warning: #f59e0b;
  --tblr-warning-rgb: 245, 158, 11;
  --tblr-warning-hover: #d97706;
  --tblr-warning-dark: #92400e;
  --tblr-warning-light: #fef3c7;
  --tblr-warning-lighter: #fffbeb;
  --tblr-info: #3b82f6;
  --tblr-info-rgb: 59, 130, 246;
  --tblr-info-hover: #2563eb;
  --tblr-info-dark: #1d4ed8;
  --tblr-info-light: #dbeafe;
  --tblr-info-lighter: #eff6ff;
  --tblr-body-bg: #f4f6f8;
  --tblr-surface: #ffffff;
  --tblr-surface-hover: #f8fafc;
  --tblr-surface-elevated: #ffffff;
  --tblr-surface-overlay: rgb(15 23 42 / 50%);
  --tblr-body-color: var(--tblr-text-primary);
  --tblr-text-primary: #1e293b;
  --tblr-text-secondary: #475569;
  --tblr-text-muted: #64748b;
  --tblr-text-light: #94a3b8;
  --tblr-text-inverse: #ffffff;
  --tblr-border: #e2e8f0;
  --tblr-border-light: #f1f5f9;
  --tblr-border-dark: #cbd5e1;
  --tblr-link-color: var(--tblr-primary);
  --tblr-link-hover-color: var(--tblr-primary-dark);
}

:root {
  --tblr-space-0: 0;
  --tblr-space-px: 1px;
  --tblr-space-0-5: 0.125rem;
  --tblr-space-1: 0.25rem;
  --tblr-space-1-5: 0.375rem;
  --tblr-space-2: 0.5rem;
  --tblr-space-2-5: 0.625rem;
  --tblr-space-3: 0.75rem;
  --tblr-space-3-5: 0.875rem;
  --tblr-space-4: 1rem;
  --tblr-space-5: 1.25rem;
  --tblr-space-6: 1.5rem;
  --tblr-space-7: 1.75rem;
  --tblr-space-8: 2rem;
  --tblr-space-9: 2.25rem;
  --tblr-space-10: 2.5rem;
  --tblr-space-11: 2.75rem;
  --tblr-space-12: 3rem;
  --tblr-space-14: 3.5rem;
  --tblr-space-16: 4rem;
  --tblr-space-20: 5rem;
  --tblr-space-24: 6rem;
}

:root {
  --tblr-radius-none: 0;
  --tblr-radius-sm: 0.375rem;
  --tblr-radius-md: 0.5rem;
  --tblr-radius-lg: 0.75rem;
  --tblr-radius-xl: 1rem;
  --tblr-radius-2xl: 1.5rem;
  --tblr-radius-full: 9999px;
}

:root {
  --tblr-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 5%);
  --tblr-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
  --tblr-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
  --tblr-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
  --tblr-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
  --tblr-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 25%);
  --tblr-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 5%);
  --tblr-shadow-primary: 0 4px 14px 0 rgb(46 150 58 / 25%);
  --tblr-shadow-primary-lg: 0 8px 20px 0 rgb(46 150 58 / 30%);
  --tblr-shadow-danger: 0 4px 14px 0 rgb(239 68 68 / 25%);
  --tblr-shadow-danger-lg: 0 8px 20px 0 rgb(239 68 68 / 30%);
  --tblr-ring-primary: 0 0 0 3px rgb(46 150 58 / 15%);
  --tblr-ring-danger: 0 0 0 3px rgb(239 68 68 / 15%);
  --tblr-ring-offset: 0 0 0 2px var(--tblr-surface);
}

:root {
  --tblr-duration-fast: 150ms;
  --tblr-duration-base: 200ms;
  --tblr-duration-slow: 300ms;
  --tblr-duration-slower: 400ms;
  --tblr-ease-linear: linear;
  --tblr-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --tblr-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --tblr-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --tblr-transition-fast: var(--tblr-duration-fast) var(--tblr-ease-in-out);
  --tblr-transition-base: var(--tblr-duration-base) var(--tblr-ease-in-out);
  --tblr-transition-slow: var(--tblr-duration-slow) var(--tblr-ease-in-out);
  --tblr-transition-colors: color var(--tblr-transition-fast),
                           background-color var(--tblr-transition-fast),
                           border-color var(--tblr-transition-fast);
  --tblr-transition-shadow: box-shadow var(--tblr-transition-base);
  --tblr-transition-transform: transform var(--tblr-transition-base);
  --tblr-transition-all: all var(--tblr-transition-base);
}

:root {
  --tblr-z-dropdown: 1000;
  --tblr-z-sticky: 1020;
  --tblr-z-fixed: 1030;
  --tblr-z-modal-backdrop: 1040;
  --tblr-z-modal: 1050;
  --tblr-z-popover: 1060;
  --tblr-z-tooltip: 1070;
  --tblr-z-toast: 1080;
}

:root {
  --tblr-card-bg: var(--tblr-surface);
  --tblr-card-border: var(--tblr-border-light);
  --tblr-card-radius: var(--tblr-radius-lg);
  --tblr-card-shadow: var(--tblr-shadow-sm);
  --tblr-card-padding: var(--tblr-space-6);
  --tblr-card-header-padding: var(--tblr-space-4) var(--tblr-space-6);
  --tblr-card-footer-padding: var(--tblr-space-4) var(--tblr-space-6);
  --tblr-input-bg: var(--tblr-surface);
  --tblr-input-border: var(--tblr-border);
  --tblr-input-radius: var(--tblr-radius-md);
  --tblr-input-padding-y: var(--tblr-space-2-5);
  --tblr-input-padding-x: var(--tblr-space-4);
  --tblr-input-focus-border: var(--tblr-primary);
  --tblr-input-focus-ring: var(--tblr-ring-primary);
  --tblr-btn-radius: var(--tblr-radius-md);
  --tblr-btn-padding-y: var(--tblr-space-2-5);
  --tblr-btn-padding-x: var(--tblr-space-4);
  --tblr-btn-font-weight: 500;
  --tblr-modal-bg: var(--tblr-surface);
  --tblr-modal-radius: var(--tblr-radius-xl);
  --tblr-modal-shadow: var(--tblr-shadow-xl);
  --tblr-modal-padding: var(--tblr-space-6);
  --tblr-table-bg: var(--tblr-surface);
  --tblr-table-border: var(--tblr-border-light);
  --tblr-table-header-bg: var(--tblr-gray-50);
  --tblr-table-row-hover-bg: var(--tblr-gray-50);
  --tblr-table-cell-padding: var(--tblr-space-4) var(--tblr-space-6);
  --tblr-alert-radius: var(--tblr-radius-md);
  --tblr-alert-padding: var(--tblr-space-4);
  --tblr-money-currency: var(--tblr-text-secondary);
  --tblr-money-neutral: var(--tblr-text-primary);
  --tblr-money-paid: var(--tblr-success-dark);
  --tblr-money-overdue: var(--tblr-danger-dark);
  --tblr-money-total-scale: 1.125;
  --tblr-money-currency-scale: 0.75em;
}

/**
 * SolidInvoice Design System - Typography
 *
 * Typography scale, font families, weights, and line heights.
 * Uses system fonts for optimal performance and native feel.
 */
:root {
  --tblr-font-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
                   'Helvetica Neue', arial, 'Noto Sans', sans-serif,
                   'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
                   'Noto Color Emoji';
  --tblr-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --tblr-font-family: var(--tblr-font-sans);
}

:root {
  --tblr-text-xs: 0.75rem;
  --tblr-text-sm: 0.8125rem;
  --tblr-text-base: 0.9375rem;
  --tblr-text-md: 1rem;
  --tblr-text-lg: 1.125rem;
  --tblr-text-xl: 1.25rem;
  --tblr-text-2xl: 1.5rem;
  --tblr-text-3xl: 1.875rem;
  --tblr-text-4xl: 2.25rem;
  --tblr-text-5xl: 3rem;
}

:root {
  --tblr-leading-none: 1;
  --tblr-leading-tight: 1.25;
  --tblr-leading-snug: 1.375;
  --tblr-leading-normal: 1.5;
  --tblr-leading-relaxed: 1.625;
  --tblr-leading-loose: 2;
}

:root {
  --tblr-font-thin: 100;
  --tblr-font-extralight: 200;
  --tblr-font-light: 300;
  --tblr-font-normal: 400;
  --tblr-font-medium: 500;
  --tblr-font-semibold: 600;
  --tblr-font-bold: 700;
  --tblr-font-extrabold: 800;
  --tblr-font-black: 900;
}

:root {
  --tblr-tracking-tighter: -0.05em;
  --tblr-tracking-tight: -0.025em;
  --tblr-tracking-normal: 0;
  --tblr-tracking-wide: 0.025em;
  --tblr-tracking-wider: 0.05em;
  --tblr-tracking-widest: 0.1em;
}

.text-page-title {
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-semibold);
  line-height: var(--tblr-leading-tight);
  color: var(--tblr-text-primary);
  letter-spacing: var(--tblr-tracking-tight);
}

.text-page-subtitle {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-normal);
  line-height: var(--tblr-leading-normal);
  color: var(--tblr-text-muted);
}

.text-card-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  line-height: var(--tblr-leading-snug);
  color: var(--tblr-text-primary);
}

.text-card-subtitle {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-normal);
  line-height: var(--tblr-leading-normal);
  color: var(--tblr-text-muted);
}

.text-section-title {
  font-size: var(--tblr-text-md);
  font-weight: var(--tblr-font-semibold);
  line-height: var(--tblr-leading-snug);
  color: var(--tblr-text-primary);
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}
.text-section-title svg,
.text-section-title i {
  color: var(--tblr-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.text-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  line-height: var(--tblr-leading-normal);
  color: var(--tblr-text-secondary);
}

.text-body {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-normal);
  line-height: var(--tblr-leading-relaxed);
  color: var(--tblr-body-color);
}

.text-help {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-normal);
  line-height: var(--tblr-leading-normal);
  color: var(--tblr-text-muted);
}

.text-mono {
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-sm);
}

.text-table-header {
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  line-height: var(--tblr-leading-normal);
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--tblr-tracking-wider);
}

.text-emphasis {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

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

.text-link {
  color: var(--tblr-link-color);
  text-decoration: none;
  transition: color var(--tblr-transition-fast);
}
.text-link:hover {
  color: var(--tblr-link-hover-color);
  text-decoration: underline;
}

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

.text-line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.text-line-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/**
 * SolidInvoice Design System - Component Index
 *
 * Custom component styles that extend Bootstrap/Tabler.
 * Only add styles here that provide functionality beyond what Bootstrap/Tabler offer.
 *
 * Note: Most component styling comes from Bootstrap 5 and Tabler.
 * This file imports only custom extensions, not replacements.
 */
/**
 * SolidInvoice - Shared Form Page Styles
 *
 * Consolidated form-page layout pattern used across TaxBundle, ClientBundle,
 * UserBundle (Profile, Invite, ChangePassword) and similar form pages.
 *
 * Template structure:
 *   .form-page > .form-page-container[--narrow|--medium|--wide] >
 *     .form-page-header > .form-page-header-content >
 *       .form-page-icon[--security] + div(.form-page-title + .form-page-subtitle)
 *     .form-page-sections > .form-page-section >
 *       .section-header > .section-icon[--security] + .section-header-text
 *         (.section-title + .section-description)
 *       .section-content > .form-grid > .form-field[.form-field-wide]
 *     .form-page-actions > .form-page-actions-inner[--medium]
 */
.form-page {
  min-height: 100%;
}

.form-page-container {
  margin: 0 auto;
  padding-bottom: var(--tblr-space-24);
}
.form-page-container--narrow {
  max-width: 800px;
}
.form-page-container--medium {
  max-width: 900px;
}
.form-page-container--wide {
  max-width: 1100px;
}

.form-page-header {
  margin-bottom: var(--tblr-space-8);
  padding: var(--tblr-space-6) 0;
}

.form-page-header-content {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
}

.form-page-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-primary);
  flex-shrink: 0;
}
.form-page-icon--security {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.2) 0%, rgba(var(--tblr-success-rgb), 0.1) 100%);
  color: var(--tblr-success);
}

.form-page-title {
  font-size: 1.75rem;
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.form-page-subtitle {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-muted);
  margin: var(--tblr-space-1) 0 0 0;
}

.form-page-sections {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-6);
}

.form-page-section {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--tblr-transition-base), border-color var(--tblr-transition-base);
}
.form-page-section:hover {
  border-color: var(--tblr-border-dark);
}
.form-page-section:focus-within {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}

.section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-5) var(--tblr-space-6) var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border);
}

.section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.1) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
  flex-shrink: 0;
}
.section-icon--security {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.15) 0%, rgba(var(--tblr-success-rgb), 0.05) 100%);
  color: var(--tblr-success);
}

.section-header-text {
  flex: 1;
  padding-top: var(--tblr-space-1);
}

.section-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-1);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
}

.section-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin: 0;
  line-height: 1.5;
}

.section-content {
  padding: var(--tblr-space-6);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-3);
  }
}

.form-field {
  display: flex;
  flex-direction: column;
}

.form-field-wide {
  grid-column: 1/-1;
}

.form-page-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--tblr-surface);
  border-top: 1px solid var(--tblr-border);
  padding: var(--tblr-space-4) 0;
  margin-top: var(--tblr-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.form-page-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--tblr-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

.btn-save,
.btn-save-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-3) var(--tblr-space-6);
  font-weight: var(--tblr-font-semibold);
  box-shadow: var(--tblr-shadow-primary);
}
.btn-save:hover,
.btn-save-primary:hover {
  box-shadow: var(--tblr-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-save:active,
.btn-save-primary:active {
  transform: translateY(0);
}

@media (width <= 767.98px) {
  .form-page {
    padding: var(--tblr-space-4);
  }
  .form-page-header {
    padding: var(--tblr-space-4) 0;
    margin-bottom: var(--tblr-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--tblr-space-3);
  }
  .form-page-icon {
    width: 48px;
    height: 48px;
  }
  .form-page-title {
    font-size: 1.5rem;
  }
  .section-header {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--tblr-space-4) var(--tblr-space-4) var(--tblr-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--tblr-space-4);
  }
  .form-page-actions-inner {
    gap: var(--tblr-space-3);
  }
  .form-page-actions-inner .btn {
    flex: 1;
  }
}
@media print {
  .form-page-actions {
    display: none !important;
  }
  .form-page {
    padding: 0;
  }
  .form-page-container {
    max-width: none;
  }
}
/**
 * SolidInvoice - Document View Shared Styles
 *
 * Shared layout and component styles for Invoice and Quote view pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Both invoice-view.scss and quote-view.scss use these classes directly.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--tblr-space-6);
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-4) var(--tblr-space-6);
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-sm);
  margin-bottom: var(--tblr-space-6);
}
@media (width <= 768px) {
  .doc-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

.doc-view-header-left {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
}

.doc-view-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, var(--tblr-primary-lighter) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-primary);
}

.doc-view-title-group {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
}

.doc-view-title {
  font-size: var(--tblr-text-xl, 1.25rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
  margin: 0;
  line-height: 1.3;
}

.doc-view-meta {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex-wrap: wrap;
}

.doc-view-meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-muted);
}
.doc-view-meta-item svg {
  opacity: 0.7;
}

.doc-view-header-actions {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1);
}

.doc-view-header .dropdown-menu {
  min-width: 200px;
  padding: var(--tblr-space-2);
  border: 1px solid var(--tblr-border-light);
  box-shadow: var(--tblr-shadow-lg);
  border-radius: var(--tblr-radius-lg);
}
.doc-view-header .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  border-radius: var(--tblr-radius-sm);
  font-size: var(--tblr-text-sm, 0.875rem);
}
.doc-view-header .dropdown-menu .dropdown-item:hover {
  background: var(--tblr-gray-50);
}
.doc-view-header .dropdown-menu .dropdown-item.text-danger:hover {
  background: var(--tblr-danger-lighter);
}
.doc-view-header .dropdown-menu .dropdown-item svg {
  opacity: 0.7;
}
.doc-view-header .dropdown-menu .dropdown-divider {
  margin: var(--tblr-space-2) 0;
  border-color: var(--tblr-border-light);
}

.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-3) var(--tblr-space-5);
  font-weight: var(--tblr-font-semibold, 600);
  font-size: var(--tblr-text-base, 1rem);
  box-shadow: var(--tblr-shadow-primary);
  transition: all var(--tblr-transition-base);
}
.btn-hero:hover {
  transform: translateY(-1px);
  box-shadow: var(--tblr-shadow-primary-lg);
}
.btn-hero:active {
  transform: translateY(0);
}

.btn-hero-urgent {
  background: linear-gradient(135deg, var(--tblr-danger) 0%, var(--tblr-danger-hover) 100%);
  border-color: var(--tblr-danger);
  box-shadow: var(--tblr-shadow-danger);
}
.btn-hero-urgent:hover {
  background: linear-gradient(135deg, var(--tblr-danger-hover) 0%, var(--tblr-danger) 100%);
  box-shadow: var(--tblr-shadow-danger-lg);
}

.doc-view-content {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--tblr-space-6);
}
@media (width <= 1024px) {
  .doc-view-content {
    grid-template-columns: 1fr;
  }
}

.doc-view-document {
  min-width: 0;
}

.doc-card {
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-sm);
  overflow: hidden;
}

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--tblr-radius-full);
  padding: 2px 10px;
  font-weight: var(--tblr-font-medium, 500);
  letter-spacing: 0;
}
.doc-card .badge.bg-gray.text-gray-fg,
.doc-page-header .badge.bg-gray.text-gray-fg,
.doc-view-header .badge.bg-gray.text-gray-fg,
.doc-view-sidebar .badge.bg-gray.text-gray-fg {
  background-color: var(--tblr-gray-100);
  color: var(--tblr-text-secondary);
}

.doc-header-from-to {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--tblr-space-8);
  padding: var(--tblr-space-6);
  background: linear-gradient(180deg, var(--tblr-gray-50) 0%, var(--tblr-surface) 100%);
  border-bottom: 1px solid var(--tblr-border-light);
}
@media (width <= 640px) {
  .doc-header-from-to {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-6);
  }
}

.doc-party {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.doc-party-label {
  font-size: var(--tblr-text-xs, 0.75rem);
  font-weight: var(--tblr-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
}

.doc-party-name {
  font-size: var(--tblr-text-lg, 1.125rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-2) 0;
}

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-secondary);
  line-height: 1.5;
}
.doc-party-detail svg {
  flex-shrink: 0;
  margin-top: 2px;
  opacity: 0.6;
}
.doc-party-detail .detail-label {
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--tblr-space-1);
}
.doc-party-detail .detail-value {
  color: var(--tblr-text-secondary);
}
.doc-party-detail a.detail-value {
  color: var(--tblr-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--tblr-primary-dark);
  text-decoration: underline;
}

.doc-items {
  padding: var(--tblr-space-6);
}
@media (width <= 640px) {
  .doc-items {
    padding: var(--tblr-space-4);
  }
}

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  font-size: var(--tblr-text-xs, 0.75rem);
  font-weight: var(--tblr-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
  background: var(--tblr-gray-50);
  border-bottom: 2px solid var(--tblr-border);
  text-align: left;
}
.doc-items-table thead th.column-price, .doc-items-table thead th.column-qty, .doc-items-table thead th.column-tax, .doc-items-table thead th.column-total {
  text-align: right;
}
@media (width <= 640px) {
  .doc-items-table thead {
    display: none;
  }
}
.doc-items-table tbody tr {
  transition: background-color var(--tblr-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--tblr-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--tblr-space-4);
    margin-bottom: var(--tblr-space-3);
    background: var(--tblr-gray-50);
    border-radius: var(--tblr-radius-md);
    border: 1px solid var(--tblr-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--tblr-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--tblr-space-4);
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-secondary);
  border-bottom: 1px solid var(--tblr-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--tblr-text-primary);
  font-weight: var(--tblr-font-medium, 500);
}
.doc-items-table tbody td.column-price, .doc-items-table tbody td.column-qty, .doc-items-table tbody td.column-tax, .doc-items-table tbody td.column-total {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-items-table tbody td.column-total {
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--tblr-space-2) 0;
    border-bottom: 1px solid var(--tblr-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--tblr-text-xs, 0.75rem);
    font-weight: var(--tblr-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--tblr-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--tblr-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--tblr-space-3);
    margin-bottom: var(--tblr-space-2);
    border-bottom: 2px solid var(--tblr-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--tblr-space-1);
  }
  .doc-items-table tbody td.column-total {
    border-bottom: none;
    padding-bottom: 0;
  }
}
@media (width >= 641px) {
  .doc-items-table .column-description {
    width: auto;
  }
  .doc-items-table .column-price {
    width: 120px;
  }
  .doc-items-table .column-qty {
    width: 80px;
  }
  .doc-items-table .column-tax {
    width: 100px;
  }
  .doc-items-table .column-total {
    width: 120px;
  }
}

.doc-totals {
  display: flex;
  justify-content: flex-end;
  padding: var(--tblr-space-6);
  padding-top: 0;
}

.doc-totals-grid {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
  min-width: 280px;
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-md);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-2) 0;
}
.totals-row .totals-label {
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-secondary);
}
.totals-row .totals-value {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.totals-row-payment .totals-value {
  color: var(--tblr-success);
}

.totals-row-discount .totals-value {
  color: var(--tblr-text-muted);
}

.totals-row-final {
  margin-top: var(--tblr-space-2);
  padding-top: var(--tblr-space-3);
  border-top: 1px solid var(--tblr-border-dark);
}
.totals-row-final .totals-label {
  font-size: var(--tblr-text-base, 1rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
}
.totals-row-final .totals-value {
  font-size: var(--tblr-text-lg, 1.125rem);
  font-weight: var(--tblr-font-bold, 700);
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}

.doc-footer {
  padding: var(--tblr-space-6);
  border-top: 1px solid var(--tblr-border-light);
  background: var(--tblr-gray-50);
}

.doc-footer-section + .doc-footer-section {
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px solid var(--tblr-border-light);
}

.doc-footer-title {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-2) 0;
}

.doc-footer-text {
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-secondary);
  margin: 0;
  line-height: 1.6;
  white-space: pre-wrap;
}

.doc-view-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}
@media (width <= 1024px) {
  .doc-view-sidebar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }
}

.doc-sidebar-card {
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-sm);
  overflow: hidden;
}

.doc-sidebar-card-muted {
  background: var(--tblr-gray-50);
}

.doc-sidebar-card-success {
  border-left: 4px solid var(--tblr-success);
}

.doc-sidebar-card-highlight {
  border-left: 4px solid var(--tblr-primary);
}

.doc-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  border-bottom: 1px solid var(--tblr-border-light);
}

.doc-sidebar-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--tblr-primary-light);
  border-radius: var(--tblr-radius-sm);
  color: var(--tblr-primary);
}

.doc-sidebar-card-success .doc-sidebar-card-icon {
  background: var(--tblr-success-lighter);
  color: var(--tblr-success);
}

.doc-sidebar-card-title {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-text-primary);
  margin: 0;
}

.doc-sidebar-card-body {
  padding: var(--tblr-space-4);
}

.doc-summary-grid {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--tblr-space-3);
}
.summary-item .summary-label {
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-muted);
}
.summary-item .summary-value {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}
.summary-item .summary-value-amount {
  font-size: var(--tblr-text-base, 1rem);
  font-weight: var(--tblr-font-bold, 700);
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}
.summary-item .summary-value-balance {
  font-weight: var(--tblr-font-bold, 700);
  color: var(--tblr-warning);
}

.summary-item-overdue {
  padding: var(--tblr-space-2);
  margin: calc(-1 * var(--tblr-space-2));
  background: var(--tblr-danger-lighter);
  border-radius: var(--tblr-radius-sm);
}
.summary-item-overdue .summary-value {
  color: var(--tblr-danger);
}

.summary-item-paid .summary-value {
  color: var(--tblr-success);
}

.client-info {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.client-name {
  font-size: var(--tblr-text-base, 1rem);
  font-weight: var(--tblr-font-semibold, 600);
  color: var(--tblr-primary);
  text-decoration: none;
}
.client-name:hover {
  color: var(--tblr-primary-dark);
  text-decoration: underline;
}

.client-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.client-contact {
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-sm);
}

.contact-name {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-primary);
  margin-bottom: var(--tblr-space-1);
}

.contact-email,
.contact-detail {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-size: var(--tblr-text-xs, 0.75rem);
  color: var(--tblr-text-muted);
}
.contact-email svg,
.contact-detail svg {
  opacity: 0.6;
}

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

.payment-card {
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-md);
  border-left: 3px solid var(--tblr-gray-300);
  transition: all var(--tblr-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--tblr-success);
  background: var(--tblr-success-lighter);
}

.payment-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--tblr-space-2);
}

.payment-amount {
  font-size: var(--tblr-text-base, 1rem);
  font-weight: var(--tblr-font-bold, 700);
  color: var(--tblr-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
}

.payment-method,
.payment-date {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-size: var(--tblr-text-xs, 0.75rem);
  color: var(--tblr-text-muted);
}
.payment-method svg,
.payment-date svg {
  opacity: 0.6;
}

.payment-message {
  font-size: var(--tblr-text-xs, 0.75rem);
  color: var(--tblr-text-secondary);
  font-style: italic;
  margin-top: var(--tblr-space-1);
}

.related-quote-link,
.related-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-primary);
  text-decoration: none;
}
.related-quote-link:hover,
.related-invoice-link:hover {
  color: var(--tblr-primary-dark);
  text-decoration: underline;
}

.related-invoice-status {
  margin-top: var(--tblr-space-2);
}

@media print {
  .doc-view-page {
    max-width: 100%;
    padding: 0;
    margin: 0;
  }
  .doc-view-content {
    display: block;
  }
  .doc-view-document {
    width: 100%;
  }
  .doc-card {
    box-shadow: none;
    border: none;
  }
  .doc-header-from-to {
    background: none;
    padding: 20px 0;
  }
  .doc-items-table thead th {
    background: var(--tblr-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--tblr-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--tblr-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .no-print {
    display: none !important;
  }
}
/**
 * External Document View - Shared Styles
 *
 * Shared styles for public-facing invoice and quote views.
 * Invoice-specific: external-invoice-view.scss
 * Quote-specific: external-quote-view.scss
 */
.ext-doc-page {
  min-height: 100vh;
  background: var(--tblr-gray-50, #f8fafc);
}

.app-branding-header {
  padding: 1.5rem 0;
  border-bottom: 2px solid var(--tblr-border-color-light, #e2e8f0);
}
.app-branding-header .app-logo img {
  max-height: 40px;
  width: auto;
  display: block;
}
.app-branding-header .app-brand-name {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}
.app-branding-header .app-brand-tagline {
  font-size: 0.875rem;
  color: var(--tblr-secondary, #64748b);
  opacity: 0.8;
  line-height: 1.3;
}

.ext-doc-action-bar {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-action-bar .card-body {
  padding: 0.75rem 1.5rem;
}
.ext-doc-action-bar .btn {
  font-weight: 500;
}

.ext-doc-company-name {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.3;
}

.ext-doc-number {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ext-doc-number-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-vat-number {
  font-size: 0.9375rem;
  opacity: 0.75;
}

.ext-doc-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.ext-doc-metadata-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease;
}
.ext-doc-metadata-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ext-doc-metadata-card .card-body {
  padding: 1.5rem;
}

.ext-doc-metadata-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-bottom: 0.375rem;
  opacity: 0.6;
}

.ext-doc-metadata-value {
  font-size: 1rem;
  color: var(--tblr-body-color, #1e293b);
}

.ext-doc-metadata-total {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-money-neutral, #1e293b);
  line-height: 1.2;
}

.ext-doc-parties-section {
  margin-bottom: 2rem;
}

.ext-doc-party-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-party-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.4;
}

.ext-doc-party-detail {
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.6;
  margin-bottom: 0.375rem;
  font-size: 0.9375rem;
}

.ext-doc-items-table {
  margin-bottom: 2rem;
}
.ext-doc-items-table thead th {
  border-bottom: 2px solid var(--tblr-border-color, #cbd5e1);
  padding: 0.875rem 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
  opacity: 0.6;
}
.ext-doc-items-table tbody tr {
  border-bottom: 1px solid var(--tblr-border-color-light, #e2e8f0);
  transition: background-color 0.15s ease;
}
.ext-doc-items-table tbody tr:last-child {
  border-bottom: none;
}
.ext-doc-items-table tbody tr:hover {
  background-color: var(--tblr-gray-50, #f8fafc);
}
.ext-doc-items-table tbody td {
  padding: 1rem 0.75rem;
  color: var(--tblr-body-color, #1e293b);
  vertical-align: top;
}
.ext-doc-items-table .item-description {
  font-weight: 500;
  line-height: 1.5;
  color: var(--tblr-body-color, #1e293b);
}
.ext-doc-items-table .item-amount {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-totals-card .card-body {
  padding: 1.5rem;
}

.ext-doc-totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.625rem 0;
}
.ext-doc-totals-row:not(:last-child) {
  margin-bottom: 0.375rem;
}

.ext-doc-totals-label {
  font-size: 0.9375rem;
  color: var(--tblr-body-color, #1e293b);
  font-weight: 500;
}

.ext-doc-totals-value {
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-final {
  border-top: 2px solid var(--tblr-border-color-dark, #94a3b8);
  padding-top: 1rem;
  margin-top: 0.75rem;
}
.ext-doc-totals-final .ext-doc-totals-row {
  padding: 0.5rem 0 0;
  margin-bottom: 0;
}
.ext-doc-totals-final .ext-doc-totals-label {
  font-size: 1.25rem;
  font-weight: 600;
}
.ext-doc-totals-final .ext-doc-totals-value {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-money-neutral, #1e293b);
  line-height: 1;
}

.ext-doc-footer .card {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-footer .btn-sm {
  font-weight: 500;
  padding: 0.5rem 1rem;
}
.ext-doc-footer .app-logo img {
  max-height: 24px;
  width: auto;
  display: block;
}

.badge {
  font-weight: 600;
  letter-spacing: 0.025em;
}

hr {
  border-color: var(--tblr-border-color-light, #e2e8f0);
  opacity: 1;
}

.btn:focus-visible {
  outline: 2px solid var(--tblr-primary, #2e963a);
  outline-offset: 2px;
}

.card-lg {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
}
.card-lg .card-body {
  padding: 2.5rem;
}

@media (width <= 991px) {
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1.25rem;
  }
  .card-lg .card-body {
    padding: 2rem;
  }
}
@media (width <= 767px) {
  .ext-doc-number {
    font-size: 1.75rem;
  }
  .ext-doc-metadata-total {
    font-size: 1.5rem;
  }
  .ext-doc-totals-final .ext-doc-totals-value {
    font-size: 1.75rem;
  }
  .ext-doc-parties-section .col-sm-6:first-child {
    margin-bottom: 1.5rem;
  }
}
@media (width <= 576px) {
  .container-xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1rem;
  }
  .app-branding-header {
    padding: 1rem 0;
  }
  .app-branding-header .d-flex {
    flex-direction: column;
    text-align: center;
  }
  .app-branding-header .app-brand-name {
    font-size: 1.25rem;
  }
  .app-branding-header .app-brand-tagline {
    font-size: 0.8125rem;
  }
  .ext-doc-footer .btn-sm {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .ext-doc-footer .btn-sm:last-child {
    margin-bottom: 0;
  }
  .ext-doc-metadata-card .col-sm-4,
  .ext-doc-metadata-card .col-sm-6 {
    margin-bottom: 1rem;
  }
  .ext-doc-metadata-card .col-sm-4:last-child,
  .ext-doc-metadata-card .col-sm-6:last-child {
    margin-bottom: 0;
  }
  .ext-doc-action-bar .d-flex.justify-content-between {
    flex-direction: column;
    gap: 0.75rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 {
    flex-direction: column;
    width: 100%;
    gap: 0.5rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 .btn {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .btn-primary,
  .ext-doc-action-bar .d-flex.justify-content-between .btn-danger {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-items-table {
    font-size: 0.875rem;
  }
  .ext-doc-items-table thead th {
    padding: 0.75rem 0.5rem;
  }
  .ext-doc-items-table tbody td {
    padding: 0.875rem 0.5rem;
  }
}
@media print {
  .no-print,
  .d-print-none {
    display: none !important;
    visibility: hidden !important;
  }
  @page {
    margin: 1cm;
  }
  html,
  body {
    background: #ffffff !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ext-doc-page,
  .page-wrapper,
  .page-body {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    overflow: visible !important;
    width: 100% !important;
    background: #ffffff !important;
  }
  .container-xl {
    max-width: 100% !important;
    padding: 0.5cm !important;
    margin: 0 !important;
  }
  .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .card,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    box-shadow: none !important;
    border: 1px solid #dee2e6;
    break-inside: avoid;
    display: block !important;
    visibility: visible !important;
  }
  .card-body {
    display: block !important;
    visibility: visible !important;
    break-inside: avoid;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  table {
    break-inside: auto;
  }
  tr {
    break-inside: avoid;
    break-after: auto;
  }
  thead {
    display: table-header-group;
  }
  .bg-light,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    background-color: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bg-danger {
    background-color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #1e293b !important; /* money is neutral in print too */
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-primary {
    color: #1f6c29 !important; /* 6.49:1 on paper - brand text only */
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #b91c1c !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #047857 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-items-table tbody tr:hover {
    background-color: transparent !important;
  }
  .ext-doc-metadata-card:hover {
    box-shadow: none !important;
  }
  hr {
    border-color: #cbd5e1 !important;
    opacity: 1 !important;
  }
}
/**
 * SolidInvoice - Shared Marketplace Styles
 *
 * Common styles shared between PaymentBundle and NotificationBundle marketplace pages.
 * Page-specific styles remain in payment-marketplace.scss and notification-marketplace.scss.
 */
.marketplace-panel {
  position: sticky;
  top: var(--tblr-space-4);
  max-height: calc(100vh - var(--tblr-space-16));
  overflow-y: auto;
  padding: var(--tblr-space-6);
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  border: 1px solid var(--tblr-border-light);
  box-shadow: var(--tblr-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--tblr-gray-100);
  border-radius: var(--tblr-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--tblr-gray-300);
  border-radius: var(--tblr-radius-full);
  transition: var(--tblr-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--tblr-gray-400);
}

.marketplace-header h5 {
  font-size: var(--tblr-text-lg);
  font-weight: 600;
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}
.marketplace-header p {
  line-height: 1.5;
}
.marketplace-header .input-group {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: var(--tblr-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--tblr-text-muted);
  background: var(--tblr-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--tblr-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb), 0.1);
  border-color: var(--tblr-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--tblr-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--tblr-primary);
}

.delete-confirmation-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1060;
  animation: marketplace-fade-in 0.15s ease;
  backdrop-filter: blur(4px);
}

.delete-confirmation-modal {
  position: fixed;
  inset: 0;
  z-index: 1070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

.delete-confirmation-container {
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 480px;
  animation: marketplace-scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.delete-confirmation-header {
  padding: var(--tblr-space-6);
  border-bottom: 1px solid var(--tblr-border);
}
.delete-confirmation-header h4 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-text-primary);
}
.delete-confirmation-header .delete-icon-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--tblr-radius-md);
  background: var(--tblr-danger-light);
  flex-shrink: 0;
}

.delete-confirmation-body {
  padding: var(--tblr-space-6);
  color: var(--tblr-text-secondary);
  line-height: 1.6;
}

.delete-confirmation-footer {
  padding: var(--tblr-space-4) var(--tblr-space-6);
  border-top: 1px solid var(--tblr-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-bottom-left-radius: var(--tblr-radius-lg);
  border-bottom-right-radius: var(--tblr-radius-lg);
}

@keyframes marketplace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes marketplace-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes marketplace-scale-in {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.5rem;
  font-weight: 500;
  border-radius: var(--tblr-radius-sm);
}

.marketplace-search-clear {
  z-index: 10;
  right: 8px !important;
}

/**
 * Global Search - Top navigation search bar with live results dropdown
 */
.global-search {
  position: relative;
  max-width: 600px;
}
.global-search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.global-search-icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--tblr-swp-text-muted);
  pointer-events: none;
  display: flex;
  align-items: center;
  line-height: 1;
  z-index: 1;
}
.global-search-input {
  box-sizing: border-box;
  width: 100%;
  padding: 0 6.5rem 0 2.5rem;
  height: 38px;
  line-height: 38px;
  background-color: var(--tblr-swp-surface);
  border: 1px solid var(--tblr-swp-input-border);
  border-radius: var(--tblr-swp-radius-sm);
  font-size: 0.875rem;
  color: var(--tblr-swp-text-primary);
  appearance: none;
  transition: border-color var(--tblr-swp-duration-fast) ease-in-out, box-shadow var(--tblr-swp-duration-fast) ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: var(--tblr-swp-primary);
  box-shadow: var(--tblr-swp-ring-primary);
  background-color: var(--tblr-swp-surface);
  outline: none;
}
.global-search-input::placeholder {
  color: var(--tblr-swp-text-muted);
}
.global-search-actions {
  position: absolute;
  right: 0.625rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 6px;
}
.global-search-shortcut {
  display: flex;
  gap: 3px;
  pointer-events: none;
}
.global-search-shortcut kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1rem 0.35rem;
  font-size: 0.7rem;
  font-family: var(--tblr-font-monospace);
  color: var(--tblr-swp-text-muted);
  background-color: var(--tblr-swp-gray-50);
  border: 1px solid var(--tblr-swp-border);
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid var(--tblr-swp-border);
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--tblr-swp-text-muted);
  transition: color var(--tblr-swp-duration-fast) ease, border-color var(--tblr-swp-duration-fast) ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: var(--tblr-swp-text-primary);
  border-color: var(--tblr-swp-text-muted);
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--tblr-swp-text-muted);
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: var(--tblr-swp-gray-50);
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: var(--tblr-swp-text-primary);
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: var(--tblr-swp-gray-50);
  border-radius: var(--tblr-swp-radius-sm);
  border-left: 3px solid var(--tblr-swp-primary);
}
.search-help-example code {
  font-size: 0.8rem;
  color: var(--tblr-swp-info-dark);
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: var(--tblr-swp-text-muted);
}

#searchHelpModal .modal-body {
  padding: 0;
}

.search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  min-width: 520px;
  margin-left: -60px;
  margin-right: -60px;
  background-color: var(--tblr-swp-surface);
  border: 1px solid var(--tblr-swp-border);
  border-radius: var(--tblr-swp-radius-md);
  box-shadow: var(--tblr-swp-shadow-lg);
  isolation: isolate;
  z-index: 9999;
}
.search-dropdown.is-open {
  display: block;
  animation: search-dropdown-in 0.12s ease-out;
}

@keyframes search-dropdown-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.search-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.25rem;
  color: var(--tblr-swp-text-muted);
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: var(--tblr-swp-surface);
  border-radius: var(--tblr-swp-radius-md);
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: var(--tblr-swp-border);
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid var(--tblr-swp-border-light);
}
.search-group:last-child {
  padding-bottom: 0.25rem;
}
.search-group-label {
  padding: 0.625rem 0.875rem 0.25rem;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--tblr-swp-text-muted);
}

.search-result-item.is-active .search-result-link {
  background-color: var(--tblr-swp-surface-hover);
}
.search-result-item:hover .search-result-link {
  background-color: var(--tblr-swp-surface-hover);
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: var(--tblr-swp-text-primary);
  text-decoration: none;
  transition: background-color 0.08s ease;
}

.search-result-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  padding: 6px;
  border-radius: var(--tblr-swp-radius-md);
}
.search-result-icon svg {
  display: block;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.search-result-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--tblr-swp-text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: var(--tblr-swp-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}

.search-result-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 0.5rem;
}

.search-result-badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.15rem 0.45rem;
}

.search-result-meta {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--tblr-swp-text-primary);
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: var(--tblr-swp-text-muted);
  background-color: var(--tblr-swp-surface);
}
.search-empty-icon {
  margin-bottom: 0.625rem;
  opacity: 0.4;
  display: flex;
}
.search-empty-text {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
}

.search-error {
  padding: 1.25rem;
  font-size: 0.875rem;
  color: var(--tblr-swp-danger-dark);
  text-align: center;
  background-color: var(--tblr-swp-surface);
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: var(--tblr-swp-info-light);
  color: var(--tblr-swp-info-dark);
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.search-chip-remove {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
  font-size: 0.9rem;
  line-height: 1;
}
.search-chip-remove:hover {
  opacity: 1;
}

.search-chips-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-bottom: 1px solid var(--tblr-swp-border-light);
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: var(--tblr-swp-surface);
  border: 1px solid var(--tblr-swp-border);
  border-radius: var(--tblr-swp-radius-sm);
  box-shadow: var(--tblr-swp-shadow-md);
  z-index: 10000;
  padding: 0.25rem 0;
  display: none;
}
.search-suggestions.is-open {
  display: block;
}
.search-suggestions-header {
  padding: 0.25rem 0.75rem 0.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--tblr-swp-text-muted);
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: var(--tblr-swp-text-primary);
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: var(--tblr-swp-surface-hover);
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: var(--tblr-swp-text-muted);
  margin-left: 0.5rem;
}

/**
 * SolidInvoice DataGrid Component Styles
 *
 * Modern, clean data grid styling following the SolidInvoice design system.
 * Uses design tokens from _tokens.scss for consistency.
 */
.datagrid-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-4) var(--tblr-space-6);
  background: var(--tblr-surface);
  border-bottom: 1px solid var(--tblr-border-light);
}
@media (width <= 768px) {
  .datagrid-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
}

.datagrid-toolbar-start {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex: 1;
  min-width: 0;
}

.datagrid-toolbar-end {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-shrink: 0;
}

.datagrid-search {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.datagrid-search .datagrid-search-icon {
  position: absolute;
  left: var(--tblr-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--tblr-text-muted);
  pointer-events: none;
  width: 18px;
  height: 18px;
}
.datagrid-search .datagrid-search-input {
  width: 100%;
  padding: var(--tblr-space-2) var(--tblr-space-4) var(--tblr-space-2) var(--tblr-space-10);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-50);
  border: 1px solid transparent;
  border-radius: var(--tblr-radius-md);
  transition: background-color var(--tblr-transition-fast), border-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.datagrid-search .datagrid-search-input::placeholder {
  color: var(--tblr-text-muted);
}
.datagrid-search .datagrid-search-input:hover {
  background: var(--tblr-gray-100);
}
.datagrid-search .datagrid-search-input:focus {
  background: var(--tblr-surface);
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
  outline: none;
}

.datagrid-active-filters {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
}

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  padding: var(--tblr-space-1) var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-100);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--tblr-danger-lighter);
  border-color: var(--tblr-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--tblr-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--tblr-space-1);
}
.datagrid-active-filter .datagrid-active-filter-value {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.datagrid-active-filter .datagrid-active-filter-remove {
  width: 14px;
  height: 14px;
  margin-left: var(--tblr-space-1);
  color: var(--tblr-text-muted);
  transition: color var(--tblr-transition-fast);
}

.datagrid-filter-dropdown {
  position: relative;
}

.datagrid-filter-panel {
  width: 320px;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-lg);
  overflow: hidden;
}
.datagrid-filter-panel .dropdown-menu,
.datagrid-filter-panel .select2-container--open {
  z-index: 1060 !important;
}

.datagrid-filter-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.datagrid-filter-panel-title {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin: 0;
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}
.datagrid-filter-panel-title svg {
  width: 16px;
  height: 16px;
  color: var(--tblr-text-muted);
}

.datagrid-filter-panel-body {
  padding: var(--tblr-space-4);
  max-height: calc(100vh - 350px);
  overflow-y: auto;
}

.datagrid-filter-form {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}
.datagrid-filter-field .form-select,
.datagrid-filter-field select {
  position: relative;
  z-index: 1;
}
.datagrid-filter-field .row {
  --bs-gutter-x: 0.5rem;
}

.datagrid-filter-label {
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.datagrid-filter-widget > div:has(> div > input[type=date]) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--tblr-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div .form-label {
  display: block;
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-1);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div input[type=date] {
  width: 100%;
}
.datagrid-filter-widget .form-check {
  display: flex !important;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  margin: 0;
  border-radius: var(--tblr-radius-sm);
  transition: background-color var(--tblr-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--tblr-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--tblr-space-3);
}
.datagrid-filter-widget .form-check .form-check-input {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px;
  margin: 0 !important;
  flex-shrink: 0;
  border-radius: 3px !important;
  border: 1px solid var(--tblr-border-dark);
  background-color: var(--tblr-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--tblr-primary);
  border-color: var(--tblr-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--tblr-ring-primary);
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox] {
  border-radius: 3px !important;
  background-image: none;
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e");
}
.datagrid-filter-widget .form-check .form-check-label {
  display: inline-block !important;
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-normal);
  color: var(--tblr-text-primary);
  cursor: pointer;
  margin-left: var(--tblr-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--tblr-space-1);
}

.datagrid-filter-panel-footer {
  padding-top: var(--tblr-space-4);
  margin-top: var(--tblr-space-2);
  border-top: 1px solid var(--tblr-border-light);
}

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--tblr-text-sm);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  border-radius: var(--tblr-radius-md);
  border-color: var(--tblr-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}
.datagrid-filter-panel .datagrid-filter-field > .form-label {
  display: none;
}
.datagrid-filter-panel .datagrid-filter-field .row .form-label {
  display: block;
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-normal);
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--tblr-space-1);
  padding-right: var(--tblr-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div:first-child {
  padding-left: 0;
}
.datagrid-filter-panel .datagrid-filter-field .row > div:last-child {
  padding-right: 0;
}
.datagrid-filter-panel .form-check {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-1-5) var(--tblr-space-2);
  margin: 0;
  border-radius: var(--tblr-radius-sm);
  transition: background-color var(--tblr-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--tblr-gray-50);
}
.datagrid-filter-panel .form-check .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
}
.datagrid-filter-panel .form-check .form-check-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--tblr-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--tblr-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--tblr-space-2);
  border-radius: var(--tblr-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--tblr-primary-lighter);
  color: var(--tblr-primary-dark);
}

.datagrid-export-dropdown {
  position: relative;
}

.datagrid-export-menu {
  width: 280px;
  padding: 0 !important;
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-lg);
  overflow: hidden;
}

.datagrid-export-menu-header {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.datagrid-export-menu-title {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin: 0;
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}
.datagrid-export-menu-title svg {
  width: 16px;
  height: 16px;
  color: var(--tblr-text-muted);
}

.datagrid-export-menu-subtitle {
  margin: var(--tblr-space-1) 0 0;
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
}

.datagrid-export-menu-body {
  display: flex;
  flex-direction: column;
  padding: var(--tblr-space-2);
  gap: var(--tblr-space-1);
}

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-text-primary);
  text-decoration: none;
  transition: background-color var(--tblr-transition-fast), color var(--tblr-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--tblr-gray-50);
  color: var(--tblr-text-primary);
  outline: none;
}

.datagrid-export-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  color: var(--tblr-text-secondary);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--tblr-primary);
  border-color: var(--tblr-primary-light);
  background: var(--tblr-primary-lighter);
}

.datagrid-export-option-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.datagrid-export-option-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  letter-spacing: 0.02em;
}

.datagrid-export-option-hint {
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
}

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--tblr-text-secondary);
  background: transparent;
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: color var(--tblr-transition-fast), background-color var(--tblr-transition-fast), border-color var(--tblr-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-50);
  border-color: var(--tblr-border-dark);
}
.datagrid-column-picker .dropdown-toggle::after {
  display: none;
}
.datagrid-column-picker .dropdown-menu {
  min-width: 200px;
  max-height: 320px;
  overflow-y: auto;
  padding: var(--tblr-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--tblr-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--tblr-primary);
}

.datagrid-table-wrapper {
  overflow-x: auto;
}

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--tblr-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--tblr-border-light);
}
.datagrid-table th {
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--tblr-gray-50);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--tblr-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--tblr-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--tblr-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--tblr-primary-light);
}
.datagrid-table .col-checkbox {
  width: 40px;
  text-align: center;
}
.datagrid-table th.col-checkbox {
  text-align: center;
}
.datagrid-table .col-id {
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
}
.datagrid-table .col-date {
  white-space: nowrap;
}
.datagrid-table .col-amount,
.datagrid-table .col-money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: var(--tblr-font-medium);
}
.datagrid-table th.col-amount,
.datagrid-table th.col-money {
  text-align: right;
}
.datagrid-table th.col-amount .datagrid-sort-link,
.datagrid-table th.col-money .datagrid-sort-link {
  justify-content: flex-end;
}
.datagrid-table .col-status {
  white-space: nowrap;
}
.datagrid-table .col-actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.datagrid-table tbody .badge {
  border-radius: var(--tblr-radius-full);
  padding: 2px 10px;
  font-weight: var(--tblr-font-medium);
  letter-spacing: 0;
}
.datagrid-table tbody .badge.bg-gray.text-gray-fg {
  background-color: var(--tblr-gray-100);
  color: var(--tblr-text-secondary);
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  color: var(--tblr-text-muted);
  text-decoration: none;
  transition: color var(--tblr-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--tblr-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--tblr-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--tblr-transition-fast);
}
.datagrid-sort-link .datagrid-sort-icon.is-active {
  opacity: 1;
}
.datagrid-sort-link:hover .datagrid-sort-icon {
  opacity: 1;
}

.datagrid-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--tblr-space-1);
}

.datagrid-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--tblr-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--tblr-radius-md);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
}
.datagrid-action-btn svg {
  width: 18px;
  height: 18px;
}
.datagrid-action-btn:hover {
  color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}
.datagrid-action-btn.action-view:hover {
  color: var(--tblr-info);
  background: var(--tblr-info-lighter);
}
.datagrid-action-btn.action-edit:hover {
  color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}
.datagrid-action-btn.action-delete:hover {
  color: var(--tblr-danger);
  background: var(--tblr-danger-lighter);
}

.datagrid-more-btn {
  opacity: 0.6;
  transition: opacity var(--tblr-transition-fast), color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
}
.datagrid-more-btn:hover, .datagrid-more-btn[aria-expanded=true] {
  opacity: 1;
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-100);
}

.datagrid-more-menu .dropdown-menu {
  min-width: 160px;
  padding: var(--tblr-space-1);
  border-radius: var(--tblr-radius-md);
  box-shadow: var(--tblr-shadow-md);
}
.datagrid-more-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
}
.datagrid-more-menu .dropdown-item svg {
  width: 16px;
  height: 16px;
  color: var(--tblr-text-muted);
}
.datagrid-more-menu .dropdown-item:hover {
  background: var(--tblr-gray-50);
}
.datagrid-more-menu .dropdown-item.text-danger {
  color: var(--tblr-danger);
}
.datagrid-more-menu .dropdown-item.text-danger svg {
  color: var(--tblr-danger);
}
.datagrid-more-menu .dropdown-item.text-danger:hover {
  background: var(--tblr-danger-lighter);
}
.datagrid-more-menu .dropdown-divider {
  margin: var(--tblr-space-1) 0;
}

tbody tr:not(:hover) .datagrid-more-btn {
  opacity: 0;
}

tbody tr:hover .datagrid-more-btn,
.datagrid-more-menu.show .datagrid-more-btn {
  opacity: 0.6;
}

.datagrid-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
}
.datagrid-checkbox input[type=checkbox] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--tblr-primary);
  cursor: pointer;
}

.datagrid-empty {
  padding: var(--tblr-space-16) var(--tblr-space-6);
  text-align: center;
}

.datagrid-empty-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto var(--tblr-space-6);
  color: var(--tblr-gray-300);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-full);
}
.datagrid-empty-icon svg {
  width: 40px;
  height: 40px;
}

.datagrid-empty-title {
  margin: 0 0 var(--tblr-space-2);
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

.datagrid-empty-message {
  margin: 0 0 var(--tblr-space-6);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
}

.datagrid-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s 300ms;
}
.datagrid-bulk-bar.visible {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s;
}

.datagrid-bulk-bar-inner {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-3) var(--tblr-space-4) var(--tblr-space-3) var(--tblr-space-6);
  background: var(--tblr-gray-900);
  border-radius: var(--tblr-radius-xl);
  box-shadow: var(--tblr-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-inverse);
  white-space: nowrap;
}
.datagrid-bulk-count .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--tblr-space-2);
  margin-right: var(--tblr-space-1);
  font-size: var(--tblr-text-xs);
  color: var(--tblr-gray-900);
  background: var(--tblr-gray-100);
  border-radius: var(--tblr-radius-full);
}

.datagrid-bulk-actions {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-4);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: background-color var(--tblr-transition-fast);
}
.datagrid-bulk-btn svg {
  width: 16px;
  height: 16px;
}
.datagrid-bulk-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.datagrid-bulk-btn.btn-danger {
  color: var(--tblr-danger-light);
}
.datagrid-bulk-btn.btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
}

.datagrid-bulk-divider {
  width: 1px;
  height: 24px;
  background: rgba(255, 255, 255, 0.2);
}

.datagrid-bulk-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--tblr-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--tblr-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

.datagrid-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-4) var(--tblr-space-6);
  border-top: 1px solid var(--tblr-border-light);
  background: var(--tblr-surface);
}
@media (width <= 768px) {
  .datagrid-footer {
    flex-direction: column;
    gap: var(--tblr-space-3);
  }
}

.datagrid-footer-info {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
}

.datagrid-per-page {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
}
.datagrid-per-page select {
  padding: var(--tblr-space-1-5) var(--tblr-space-3);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
}
.datagrid-per-page select:focus {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
  outline: none;
}

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.datagrid-pagination .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--tblr-radius-md);
  text-decoration: none;
  transition: color var(--tblr-transition-fast), background-color var(--tblr-transition-fast), border-color var(--tblr-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-50);
  border-color: var(--tblr-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
  border-color: var(--tblr-primary-light);
  font-weight: var(--tblr-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--tblr-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

.datagrid-status {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  padding: var(--tblr-space-0-5) var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
  border-radius: var(--tblr-radius-sm);
}
.datagrid-status.status-success {
  color: #065f46;
  background: var(--tblr-success-lighter);
}
.datagrid-status.status-danger {
  color: #991b1b;
  background: var(--tblr-danger-lighter);
}
.datagrid-status.status-warning {
  color: #92400e;
  background: var(--tblr-warning-lighter);
}
.datagrid-status.status-info {
  color: #1e40af;
  background: var(--tblr-info-lighter);
}
.datagrid-status.status-primary {
  color: var(--tblr-primary-dark);
  background: var(--tblr-primary-lighter);
}
.datagrid-status.status-secondary {
  color: var(--tblr-gray-700);
  background: var(--tblr-gray-100);
}

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--tblr-border-dark);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.datagrid-loading {
  position: relative;
}
.datagrid-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.7);
  z-index: 10;
}

.datagrid-loading-indicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 11;
}

@media (width <= 768px) {
  .datagrid-header {
    flex-direction: column;
    align-items: stretch;
  }
  .datagrid-search {
    max-width: none;
  }
  .datagrid-table th,
  .datagrid-table td {
    padding: var(--tblr-space-2) var(--tblr-space-3);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--tblr-space-3);
    padding: var(--tblr-space-4);
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--tblr-space-2);
}

.datagrid-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--tblr-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
  transition: color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
}
.datagrid-expand-btn span {
  display: inline-flex;
  transition: transform 200ms ease;
}
.datagrid-expand-btn:hover {
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-100);
}

.datagrid-detail-row {
  display: none;
  background: var(--tblr-gray-50);
}
.datagrid-detail-row.visible {
  display: table-row;
}
.datagrid-detail-row td {
  padding: 0;
  border-bottom: none;
}

.datagrid-detail-content {
  padding: var(--tblr-space-4) var(--tblr-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--tblr-border-light);
}

@keyframes datagrid-slide-down {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.api-token-history h4 {
  font-size: 1rem;
  font-weight: var(--tblr-font-weight-semibold);
  color: var(--tblr-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--tblr-white);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--tblr-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--tblr-text-muted);
  background: var(--tblr-gray-50);
  border-bottom: 2px solid var(--tblr-border-light);
  padding: var(--tblr-space-2) var(--tblr-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--tblr-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--tblr-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--tblr-space-2) var(--tblr-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--tblr-border-light);
}
.api-token-history .table tbody tr:last-child td {
  border-bottom: none;
}
.api-token-history .badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: var(--tblr-font-weight-medium);
}

/**
 * SolidInvoice - Client Form Styles
 *
 * Client-specific styles for the client creation/edit form.
 * Outer form-page layout uses shared classes from _form-page.scss.
 */
.client-form-section-optional {
  background: var(--tblr-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

.section-icon-required {
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.2) 100%);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.contact-card {
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  transition: border-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.contact-card:focus-within {
  border-color: rgba(var(--tblr-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb), 0.08);
}

.contact-card-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: var(--tblr-surface);
  border-bottom: 1px solid var(--tblr-border-light);
}

.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--tblr-primary-light);
  border-radius: var(--tblr-radius-full);
  color: var(--tblr-primary);
}

.contact-card-title {
  flex: 1;
}

.contact-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

.contact-card-actions {
  display: flex;
  gap: var(--tblr-space-2);
}

.contact-card-body {
  padding: var(--tblr-space-4);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-3);
}
@media (width <= 576px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }
}

.contact-field-email {
  grid-column: 1/-1;
}

.additional-details-section {
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px dashed var(--tblr-border);
}

.additional-details-header {
  margin-bottom: var(--tblr-space-3);
}

.additional-details-label {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
}

.additional-details-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.additional-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: var(--tblr-space-2);
  align-items: start;
}
@media (width <= 576px) {
  .additional-detail-row {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-2);
  }
  .additional-detail-row .additional-detail-action {
    justify-self: end;
  }
}

.additional-detail-action {
  display: flex;
  align-items: center;
  padding-top: var(--tblr-space-1);
}

.additional-details-add {
  margin-top: var(--tblr-space-3);
}

.add-detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-size: var(--tblr-text-sm);
}

.addresses-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.address-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  overflow: hidden;
  transition: border-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.address-card:focus-within {
  border-color: rgba(var(--tblr-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb), 0.08);
}

.address-card-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.address-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--tblr-info-light);
  border-radius: var(--tblr-radius-full);
  color: var(--tblr-info);
}

.address-card-title {
  flex: 1;
}

.address-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

.address-card-actions {
  display: flex;
  gap: var(--tblr-space-2);
}

.address-card-body {
  padding: var(--tblr-space-4);
}

.address-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-3);
}
@media (width <= 576px) {
  .address-form-grid {
    grid-template-columns: 1fr;
  }
}

.add-item-action {
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px dashed var(--tblr-border);
}

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2-5) var(--tblr-space-4);
  font-weight: var(--tblr-font-medium);
  border-style: dashed;
  transition: all var(--tblr-transition-fast);
}
.add-item-btn:hover {
  background: var(--tblr-primary-lighter);
  border-style: solid;
}
.add-item-btn::before {
  content: "+";
  font-size: 1.25em;
  font-weight: 300;
}

@keyframes client-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.contact-card,
.address-card {
  animation: client-slide-in 0.2s ease-out;
}

.contacts-list:empty::before,
.addresses-list:empty::before {
  content: "";
  display: none;
}

.empty-contacts-hint,
.empty-addresses-hint {
  padding: var(--tblr-space-6);
  text-align: center;
  background: var(--tblr-surface);
  border: 2px dashed var(--tblr-border);
  border-radius: var(--tblr-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--tblr-text-sm);
}

/**
 * SolidInvoice - Billing Form Styles
 *
 * Modern, clean invoice creation form with 2-column layout,
 * sticky totals sidebar, and collapsible sections.
 * Uses design system tokens for consistent styling.
 */
.billing-form-page {
  min-height: 100%;
}

.billing-form-container {
  max-width: 1100px;
  margin: 0 auto;
  padding-bottom: var(--tblr-space-24);
}

.billing-form-header {
  margin-bottom: var(--tblr-space-6);
  padding: var(--tblr-space-6) 0;
}

.billing-form-header-content {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
}

.billing-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-primary);
}

.billing-form-title {
  font-size: 1.75rem;
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.billing-form-subtitle {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-muted);
  margin: var(--tblr-space-1) 0 0 0;
}

.billing-details-section {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  padding: var(--tblr-space-6);
  margin-bottom: var(--tblr-space-6);
  transition: box-shadow var(--tblr-transition-base);
}
.billing-details-section:focus-within {
  border-color: rgba(var(--tblr-primary-rgb), 0.3);
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb), 0.08);
}

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--tblr-space-6);
}
@media (width <= 768px) {
  .billing-details-grid {
    grid-template-columns: 1fr;
  }
}
.billing-details-grid--no-dates .billing-details-right {
  justify-content: flex-start;
  padding-top: var(--tblr-space-2);
}

.billing-details-left {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.billing-details-right {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  font-family: var(--tblr-font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.billing-id-display .billing-id-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--tblr-radius-sm);
  color: var(--tblr-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--tblr-primary);
  background: var(--tblr-primary-light);
}

.billing-id-form {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}
.billing-id-form .form-control {
  max-width: 200px;
}
.billing-id-form .btn {
  padding: var(--tblr-space-2);
}

.invoice-dates-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--tblr-space-4);
}
@media (width <= 576px) {
  .invoice-dates-row {
    grid-template-columns: 1fr;
  }
}

.client-selection {
  margin-bottom: var(--tblr-space-4);
}

.selected-client-card {
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-4);
  animation: billing-slide-in 0.2s ease-out;
}

.selected-client-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--tblr-space-3);
}

.selected-client-name {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}

.selected-client-change {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-primary);
  text-decoration: none;
}
.selected-client-change:hover {
  text-decoration: underline;
}

.selected-client-contacts {
  border-top: 1px dashed var(--tblr-border);
  padding-top: var(--tblr-space-3);
  margin-top: var(--tblr-space-3);
}

.contacts-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  margin-bottom: var(--tblr-space-2);
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.contact-checkbox {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-sm);
  transition: background var(--tblr-transition-fast);
}
.contact-checkbox:hover {
  background: var(--tblr-gray-100);
}
.contact-checkbox .form-check-input {
  margin: 0;
}
.contact-checkbox .contact-name {
  font-weight: var(--tblr-font-medium);
}
.contact-checkbox .contact-email {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
}

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--tblr-space-6);
  align-items: start;
}
@media (width <= 1100px) {
  .billing-form-main {
    grid-template-columns: 1fr 280px;
  }
}
@media (width <= 900px) {
  .billing-form-main {
    grid-template-columns: 1fr;
  }
}

.billing-items-section {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}

.billing-items-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.billing-items-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.2) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
}

.billing-items-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.billing-items-body {
  padding: var(--tblr-space-4);
}

.billing-items-list {
  margin-bottom: var(--tblr-space-4);
}

.billing-items-header-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-3);
  border-bottom: 1px solid var(--tblr-border);
}
.billing-items-header-row > div {
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
  white-space: nowrap;
}
.billing-items-header-row .column-total {
  text-align: right;
}
.billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-header-row {
    display: none;
  }
}

.billing-items-list:not(:has(.column-tax)) .billing-items-header-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-3);
  border-bottom: 1px solid var(--tblr-border-light);
  align-items: start;
  transition: background var(--tblr-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--tblr-gray-50);
}
.billing-item-row:last-child {
  border-bottom: none;
}
.billing-item-row .column-description {
  min-width: 0;
  overflow: hidden;
}
.billing-item-row .column-description textarea {
  min-height: 60px;
  resize: vertical;
  width: 100%;
  max-width: 100%;
}
.billing-item-row .line-description {
  margin-top: 0.25rem;
}
.billing-item-row .line-description > summary {
  color: var(--tblr-secondary);
  cursor: pointer;
  font-size: 0.75rem;
  list-style: none;
  width: fit-content;
}
.billing-item-row .line-description > summary::-webkit-details-marker {
  display: none;
}
.billing-item-row .line-description > summary::before {
  content: "+";
  margin-right: 0.25rem;
}
.billing-item-row .line-description > summary:hover {
  color: var(--tblr-primary);
}
.billing-item-row .line-description[open] > summary {
  margin-bottom: 0.25rem;
}
.billing-item-row .line-description[open] > summary::before {
  content: "−";
}
.billing-item-row .column-price input,
.billing-item-row .column-price select,
.billing-item-row .column-qty input,
.billing-item-row .column-qty select,
.billing-item-row .column-tax input,
.billing-item-row .column-tax select {
  width: 100%;
}
.billing-item-row .column-price .input-group-text {
  padding: 0.25rem 0.4rem;
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-muted);
  background: var(--tblr-gray-50);
  border-color: var(--tblr-border-light);
}
.billing-item-row .column-price input {
  min-width: 0;
}
.billing-item-row .column-qty input {
  text-align: center;
}
.billing-item-row .column-total {
  text-align: right;
  padding-top: var(--tblr-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.billing-item-row .column-actions {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 0;
}
.billing-item-row .column-drag {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: var(--tblr-space-2);
}
.billing-item-row .line-drag-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: var(--tblr-radius-sm);
  background: none;
  color: var(--tblr-text-muted);
  cursor: grab;
  opacity: 0;
  transition: opacity var(--tblr-transition-fast), background var(--tblr-transition-fast), color var(--tblr-transition-fast);
}
.billing-item-row .line-drag-handle:hover {
  background: var(--tblr-gray-100);
  color: var(--tblr-text-primary);
}
.billing-item-row .line-drag-handle:active {
  cursor: grabbing;
}
.billing-item-row .line-drag-handle:focus-visible {
  opacity: 1;
  outline: 2px solid var(--tblr-primary);
  outline-offset: 1px;
}
.billing-item-row:hover .line-drag-handle {
  opacity: 1;
}
.billing-item-row .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    position: relative;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--tblr-space-3);
    padding: var(--tblr-space-4);
    margin-bottom: var(--tblr-space-3);
    background: var(--tblr-gray-50);
    border: 1px solid var(--tblr-border);
    border-radius: var(--tblr-radius-md);
  }
  .billing-item-row:hover {
    background: var(--tblr-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--tblr-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--tblr-text-xs);
    font-weight: var(--tblr-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--tblr-text-muted);
    margin-bottom: var(--tblr-space-1);
  }
  .billing-item-row .column-description {
    grid-area: desc;
  }
  .billing-item-row .column-description textarea {
    width: 100%;
    min-height: 80px;
  }
  .billing-item-row .column-price {
    grid-area: price;
  }
  .billing-item-row .column-price input {
    width: 100%;
  }
  .billing-item-row .column-qty {
    grid-area: qty;
  }
  .billing-item-row .column-qty input {
    width: 100%;
  }
  .billing-item-row .column-tax {
    grid-area: tax;
  }
  .billing-item-row .column-tax select {
    width: 100%;
  }
  .billing-item-row .column-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: var(--tblr-space-3);
    border-top: 1px dashed var(--tblr-border);
  }
  .billing-item-row .column-drag {
    position: absolute;
    top: var(--tblr-space-2);
    right: var(--tblr-space-2);
    padding-top: 0;
  }
  .billing-item-row .line-drag-handle {
    opacity: 1;
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--tblr-space-2);
    padding-top: var(--tblr-space-3);
    border-top: 1px dashed var(--tblr-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--tblr-text-lg);
    font-weight: var(--tblr-font-semibold);
    color: var(--tblr-primary);
  }
}

.remove-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  border: 1px solid var(--tblr-border);
  background: var(--tblr-surface);
  color: var(--tblr-text-muted);
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.remove-item-btn svg {
  width: 12px;
  height: 12px;
}
.remove-item-btn:hover {
  color: var(--tblr-danger);
  background: var(--tblr-danger-lighter);
  border-color: var(--tblr-danger);
}
.remove-item-btn:focus {
  outline: 2px solid var(--tblr-primary);
  outline-offset: 2px;
}

.add-item-action {
  padding-top: var(--tblr-space-4);
  border-top: 1px dashed var(--tblr-border);
}

.add-item-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: var(--tblr-space-2);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-primary);
  background: transparent;
  border: 2px dashed var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.add-item-btn:hover {
  background: var(--tblr-primary-lighter);
  border-color: var(--tblr-primary);
  border-style: solid;
}

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
  min-width: 0;
}

.line-tax-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.line-tax-row {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1);
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.line-tax-field-tax {
  flex: 1 1 auto;
  min-width: 0;
}
.line-tax-field-tax select,
.line-tax-field-tax .form-select {
  width: 100%;
  min-width: 0;
  padding: 4px 22px 4px 8px;
  font-size: var(--tblr-text-xs);
  line-height: 1.2;
  background-position: right 6px center;
  background-size: 12px;
}

.line-tax-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.line-tax-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  color: var(--tblr-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
  transition: color var(--tblr-transition-fast), background var(--tblr-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--tblr-danger);
  background: rgba(var(--tblr-danger-rgb), 0.08);
}

.line-tax-add-btn {
  align-self: flex-start;
  padding: 2px 8px;
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  line-height: 1.4;
  color: var(--tblr-primary);
  background: transparent;
  border: 1px dashed var(--tblr-border);
  border-radius: var(--tblr-radius-sm);
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.line-tax-add-btn:hover {
  color: var(--tblr-primary-dark);
  border-color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}

.billing-invoice-taxes {
  margin-top: var(--tblr-space-4);
  padding: var(--tblr-space-4) var(--tblr-space-6) var(--tblr-space-6);
  border-top: 1px solid var(--tblr-border-light);
  background: var(--tblr-gray-50);
}

.billing-invoice-taxes-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--tblr-space-3);
  margin-bottom: var(--tblr-space-3);
}

.billing-invoice-taxes-title {
  font-size: var(--tblr-text-md);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.billing-invoice-taxes-subtitle {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--tblr-text-sm);
}

.billing-invoice-taxes-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
  margin-bottom: var(--tblr-space-3);
}

.billing-invoice-tax-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(10rem, 1fr) minmax(0, 3fr) auto;
  gap: var(--tblr-space-3);
  align-items: start;
  padding: var(--tblr-space-3);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
}
@media (width <= 768px) {
  .billing-invoice-tax-row {
    grid-template-columns: 1fr;
  }
}

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--tblr-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--tblr-text-muted);
}
@media (width <= 768px) {
  .invoice-tax-field .mobile-label {
    display: block;
  }
}

.invoice-tax-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.billing-totals-sidebar {
  position: sticky;
  top: var(--tblr-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

.billing-totals-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}

.billing-totals-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-5);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.billing-totals-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--tblr-success-light) 0%, rgba(var(--tblr-success-rgb), 0.2) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-success);
}

.billing-totals-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.billing-totals-body {
  padding: var(--tblr-space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--tblr-space-3) 0;
}
.totals-row:not(:last-child) {
  border-bottom: 1px solid var(--tblr-border-light);
}

.totals-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
}

.totals-value {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}

.totals-row-discount .totals-value {
  color: var(--tblr-text-muted);
}

.totals-row-total {
  padding-top: var(--tblr-space-4);
  margin-top: var(--tblr-space-2);
  border-top: 1px solid var(--tblr-border-dark);
}
.totals-row-total .totals-label {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}
.totals-row-total .totals-value {
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.discount-field {
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px dashed var(--tblr-border);
}
.discount-field .form-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
}

.billing-terms-section {
  margin-top: var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border: 1px dashed var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}
.billing-terms-section[open] {
  background: var(--tblr-surface);
  border-style: solid;
}
.billing-terms-section[open] .terms-summary {
  border-bottom: 1px solid var(--tblr-border-light);
}
.billing-terms-section[open] .terms-summary-icon {
  transform: rotate(90deg);
}

.terms-summary {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-5);
  cursor: pointer;
  list-style: none;
  transition: background var(--tblr-transition-fast);
}
.terms-summary::-webkit-details-marker {
  display: none;
}
.terms-summary:hover {
  background: var(--tblr-gray-100);
}

.terms-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--tblr-text-muted);
  transition: transform var(--tblr-transition-fast);
}

.terms-summary-text {
  flex: 1;
}

.terms-summary-title {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
}

.terms-content {
  padding: var(--tblr-space-6);
}

.terms-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--tblr-space-4);
}
@media (width <= 768px) {
  .terms-grid {
    grid-template-columns: 1fr;
  }
}

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--tblr-surface);
  border-top: 1px solid var(--tblr-border);
  padding: var(--tblr-space-4) 0;
  margin-top: var(--tblr-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.billing-form-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--tblr-space-4);
}

.save-button-group {
  box-shadow: var(--tblr-shadow-primary);
  border-radius: var(--tblr-radius-md);
}
.save-button-group .btn-save-primary {
  box-shadow: none;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.save-button-group .btn-save-primary:hover {
  box-shadow: none;
  transform: none;
}
.save-button-group .dropdown-toggle-split {
  padding: var(--tblr-space-3) var(--tblr-space-3);
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.save-button-group .dropdown-toggle-split::after {
  vertical-align: middle;
}
.save-button-group .dropdown-menu {
  min-width: 180px;
  padding: var(--tblr-space-2);
  border-radius: var(--tblr-radius-md);
  box-shadow: var(--tblr-shadow-lg);
  border: 1px solid var(--tblr-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2-5) var(--tblr-space-3);
  border-radius: var(--tblr-radius-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  transition: all var(--tblr-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--tblr-text-muted);
  transition: color var(--tblr-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--tblr-primary-lighter);
  color: var(--tblr-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--tblr-primary);
}
.save-button-group:hover {
  box-shadow: var(--tblr-shadow-primary-lg);
}

@media (width <= 768px) {
  .billing-items-table {
    display: none;
  }
  .billing-items-cards {
    display: flex;
    flex-direction: column;
    gap: var(--tblr-space-4);
  }
}
@media (width >= 769px) {
  .billing-items-cards {
    display: none;
  }
}
.billing-item-card {
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-4);
  animation: billing-slide-in 0.2s ease-out;
}
.billing-item-card:focus-within {
  border-color: rgba(var(--tblr-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb), 0.08);
}

.billing-item-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--tblr-space-3);
}

.billing-item-card-number {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-muted);
}

.billing-item-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.billing-item-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--tblr-space-3);
}

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--tblr-space-3);
  margin-top: var(--tblr-space-3);
  border-top: 1px dashed var(--tblr-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-primary);
}

@keyframes billing-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (width <= 768px) {
  .billing-form-container {
    padding: 0 var(--tblr-space-4);
    padding-bottom: var(--tblr-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--tblr-space-4);
    padding: var(--tblr-space-4) 0;
  }
  .billing-form-icon {
    width: 48px;
    height: 48px;
  }
  .billing-form-title {
    font-size: 1.5rem;
  }
  .billing-details-section,
  .billing-items-section,
  .billing-totals-card {
    border-radius: var(--tblr-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--tblr-space-3);
  }
  .billing-form-actions-inner .btn {
    flex: 1;
  }
  .billing-id-display {
    flex-wrap: wrap;
  }
  .billing-id-display .billing-id-label,
  .billing-id-display .billing-id-value {
    font-size: var(--tblr-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--tblr-space-6);
  padding: var(--tblr-space-5);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  margin-block-end: var(--tblr-space-5);
  padding-block-end: var(--tblr-space-4);
  border-block-end: 1px solid var(--tblr-border-light);
}
.recurring-schedule-section .section-header .section-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--tblr-radius-md);
  background: linear-gradient(135deg, var(--tblr-primary) 0%, var(--tblr-primary-dark) 100%);
  color: #ffffff;
  flex-shrink: 0;
}
.recurring-schedule-section .section-header .section-header-content {
  flex: 1;
}
.recurring-schedule-section .section-header .section-header-content .section-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--tblr-space-3);
  margin-block-start: var(--tblr-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
    grid-template-columns: repeat(2, 1fr);
  }
}
.recurring-options-wrapper [id$=_type] .form-check-label.required::after, .recurring-options-wrapper [id$=_endType] .form-check-label.required::after {
  display: none;
}
.recurring-options-wrapper [id$=_type] > .form-check, .recurring-options-wrapper [id$=_endType] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio], .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check label, .recurring-options-wrapper [id$=_endType] > .form-check label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-1);
  padding: var(--tblr-space-3);
  border: 2px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  background: var(--tblr-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  text-align: center;
}
.recurring-options-wrapper [id$=_type] > .form-check:hover label, .recurring-options-wrapper [id$=_endType] > .form-check:hover label {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio]:checked + label, .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio]:checked + label {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary);
  color: #ffffff;
}
.recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
}
.recurring-options-wrapper [id$=_days] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
  gap: var(--tblr-space-2);
  margin-block-start: var(--tblr-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_days] {
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
  }
}
.recurring-options-wrapper [id$=_days] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-3) var(--tblr-space-2);
  border: 2px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  background: var(--tblr-surface);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary) !important;
  transition: all 0.2s ease;
  min-height: 44px;
  text-align: center;
  cursor: pointer;
  margin: 0;
  opacity: 1 !important;
  visibility: visible !important;
}
.recurring-options-wrapper [id$=_days] > .form-check label::before, .recurring-options-wrapper [id$=_days] > .form-check label::after {
  content: none !important;
}
.recurring-options-wrapper [id$=_days] > .form-check:hover label {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary);
  color: #ffffff !important;
}

.recurring-frequency-display {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: linear-gradient(135deg, var(--tblr-primary-lighter) 0%, rgba(var(--tblr-primary-rgb), 0.05) 100%);
  border: 1px solid rgba(var(--tblr-primary-rgb), 0.2);
  border-radius: var(--tblr-radius-md);
}
.recurring-frequency-display .recurring-frequency-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--tblr-primary-light);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
  flex-shrink: 0;
}
.recurring-frequency-display .recurring-frequency-text {
  flex: 1;
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-primary);
}
.recurring-frequency-display .recurring-frequency-text strong {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-primary);
}

.recurring-variables-help {
  margin-block-start: var(--tblr-space-3);
  padding: var(--tblr-space-3);
  border: 1px solid var(--tblr-info-border-subtle);
  border-radius: var(--tblr-radius-md);
  background: var(--tblr-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-info);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.recurring-variables-help .variables-summary::-webkit-details-marker {
  display: none;
}
.recurring-variables-help .variables-summary svg {
  flex-shrink: 0;
}
.recurring-variables-help .variables-summary:hover {
  color: var(--tblr-info-text-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--tblr-space-3);
  padding-block-start: var(--tblr-space-3);
  border-block-start: 1px solid var(--tblr-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  margin-block-end: var(--tblr-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--tblr-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) 0;
  font-size: var(--tblr-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-sm);
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-xs);
  color: var(--tblr-primary);
  font-weight: var(--tblr-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--tblr-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--tblr-space-3);
  background: var(--tblr-surface);
  border-inline-start: 3px solid var(--tblr-info);
  border-radius: var(--tblr-radius-sm);
  font-size: var(--tblr-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--tblr-text-primary);
  font-weight: var(--tblr-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--tblr-space-2);
  color: var(--tblr-text-secondary);
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

.invoice-sidebar-card-highlight {
  border-left: 3px solid var(--tblr-primary);
  background: linear-gradient(to right, rgba(var(--tblr-primary-rgb), 0.03), transparent);
}

.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.recurring-schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--tblr-space-2) 0;
}
.recurring-schedule-item:not(:last-child) {
  border-bottom: 1px solid var(--tblr-border-light);
}

.recurring-schedule-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-secondary);
}

.recurring-schedule-value {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  text-align: right;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-md);
  transition: all var(--tblr-transition-fast);
}
.occurrence-item:hover {
  background: var(--tblr-surface);
  border-color: rgba(var(--tblr-primary-rgb), 0.3);
  transform: translateX(2px);
}

.occurrence-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--tblr-primary-lighter);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
  flex-shrink: 0;
}

.occurrence-date {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.generated-invoice-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-md);
  transition: all var(--tblr-transition-fast);
}
.generated-invoice-item:hover {
  background: var(--tblr-surface);
  border-color: rgba(var(--tblr-primary-rgb), 0.3);
}

.generated-invoice-link {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: var(--tblr-text-primary);
  transition: color var(--tblr-transition-fast);
}
.generated-invoice-link:hover {
  color: var(--tblr-primary);
}
.generated-invoice-link:hover .generated-invoice-number {
  color: var(--tblr-primary);
}

.generated-invoice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--tblr-success-lighter);
  border-radius: var(--tblr-radius-sm);
  color: var(--tblr-success);
  flex-shrink: 0;
}

.generated-invoice-number {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  transition: color var(--tblr-transition-fast);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-shrink: 0;
}

.generated-invoice-total {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  white-space: nowrap;
}

.view-all-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-3);
  margin-top: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-primary);
  text-decoration: none;
  background: var(--tblr-primary-lighter);
  border: 1px solid rgba(var(--tblr-primary-rgb), 0.2);
  border-radius: var(--tblr-radius-md);
  transition: all var(--tblr-transition-fast);
}
.view-all-link:hover {
  background: rgba(var(--tblr-primary-rgb), 0.15);
  border-color: var(--tblr-primary);
  transform: translateY(-1px);
}

/**
 * SolidInvoice - Payment Page Styles
 *
 * Modern, clean payment page with two-column layout,
 * card-based payment method selection, and invoice summary.
 * Uses design system tokens for consistent styling.
 */
.payment-page {
  min-height: 100%;
}

.payment-container {
  max-width: 1200px;
  margin: 0 auto;
  padding-bottom: var(--tblr-space-12);
}

.payment-header {
  margin-bottom: var(--tblr-space-6);
  padding: var(--tblr-space-6) 0;
}

.payment-header-content {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
}

.payment-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-primary);
}

.payment-header-title {
  font-size: 1.75rem;
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.payment-header-subtitle {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-muted);
  margin: var(--tblr-space-1) 0 0 0;
}

.payment-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--tblr-space-6);
  align-items: start;
}
@media (width <= 992px) {
  .payment-layout {
    grid-template-columns: 1fr;
  }
}

.payment-invoice-summary {
  position: sticky;
  top: var(--tblr-space-6);
}
@media (width <= 992px) {
  .payment-invoice-summary {
    position: static;
    order: 2;
  }
}

.invoice-summary-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}

.invoice-summary-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-5);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.invoice-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--tblr-info-light) 0%, rgba(var(--tblr-info-rgb), 0.2) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-info);
}

.invoice-summary-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.invoice-summary-body {
  padding: var(--tblr-space-5);
}

.summary-section {
  padding: var(--tblr-space-4) 0;
  border-bottom: 1px solid var(--tblr-border-light);
}
.summary-section:first-child {
  padding-top: 0;
}
.summary-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.summary-section-label {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-3);
}

.summary-client-info {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
}
.summary-client-info .client-name {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

.client-credit-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  padding: var(--tblr-space-1-5) var(--tblr-space-3);
  margin-top: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-success);
  background: var(--tblr-success-lighter);
  border-radius: var(--tblr-radius-full);
}

.invoice-details-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-3);
}

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

.detail-label {
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
}

.detail-value {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
}

.line-items-preview {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.line-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--tblr-space-2) var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-sm);
}

.line-item-desc {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.line-item-amount {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.summary-totals {
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px solid var(--tblr-border);
}

.summary-totals .totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--tblr-space-2) 0;
}

.summary-totals .totals-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
}

.summary-totals .totals-value {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}

.summary-totals .totals-row-discount .totals-value {
  color: var(--tblr-text-muted);
}

.summary-totals .totals-row-payment .totals-value {
  color: var(--tblr-success);
}

.summary-totals .totals-row-balance {
  margin-top: var(--tblr-space-2);
  padding-top: var(--tblr-space-3);
  border-top: 1px solid var(--tblr-border-dark);
}
.summary-totals .totals-row-balance .totals-label {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}
.summary-totals .totals-row-balance .totals-value {
  font-size: var(--tblr-text-xl);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

@media (width <= 992px) {
  .payment-form-section {
    order: 1;
  }
}

.payment-form-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}

.payment-form-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-5);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.payment-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--tblr-success-light) 0%, rgba(var(--tblr-success-rgb), 0.2) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-success);
}

.payment-form-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.payment-form-body {
  padding: var(--tblr-space-5);
}

.payment-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--tblr-space-4) var(--tblr-space-5);
  background: var(--tblr-gray-50);
  border-top: 1px solid var(--tblr-border-light);
}

.payment-form-body .form-label {
  display: block;
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  margin-bottom: var(--tblr-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--tblr-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--tblr-space-2);
}
.payment-form-body .input-group {
  flex-wrap: nowrap;
}
.payment-form-body textarea.form-control {
  min-height: 80px;
  resize: vertical;
}
.payment-form-body .mb-4:last-child {
  margin-bottom: 0 !important;
}

.payment-methods-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--tblr-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: var(--tblr-surface);
  border: 2px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  cursor: pointer;
  transition: all var(--tblr-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--tblr-primary);
  background: var(--tblr-primary-lighter);
  box-shadow: var(--tblr-ring-primary);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-check {
  opacity: 1;
  transform: scale(1);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-icon {
  background: var(--tblr-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--tblr-primary);
  outline-offset: 2px;
}

.payment-method-preferred {
  order: -1;
}

.payment-method-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.payment-method-content {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
  flex: 1;
}

.payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--tblr-gray-100);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-text-secondary);
  transition: all var(--tblr-transition-fast);
}

.payment-method-name {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
}

.payment-method-badge {
  display: inline-flex;
  align-self: flex-start;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
  background: var(--tblr-gray-200);
  border-radius: var(--tblr-radius-full);
}

.payment-method-badge-online {
  color: var(--tblr-info);
  background: var(--tblr-info-light);
}

.payment-method-badge-credit {
  color: var(--tblr-success);
  background: var(--tblr-success-light);
}

.payment-method-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--tblr-primary);
  color: #ffffff;
  border-radius: var(--tblr-radius-full);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--tblr-transition-fast);
}

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-2);
  flex-wrap: wrap;
}
.amount-field-wrapper .form-label,
.amount-field-wrapper .form-section-label {
  margin-bottom: 0;
}

.amount-balance-hint {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  white-space: nowrap;
  padding: var(--tblr-space-1) var(--tblr-space-2);
  background: var(--tblr-primary-lighter);
  border-radius: var(--tblr-radius-sm);
}
.amount-balance-hint strong {
  color: var(--tblr-primary);
  font-weight: var(--tblr-font-semibold);
}

.capture-online-field {
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-2);
  padding-left: 0;
}
.capture-online-field .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
  width: 2.5rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.capture-online-field .form-check-label {
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--tblr-space-2));
}

[data-payment-method-select-target=captureOnline].d-none {
  display: none !important;
}

.client-name-link,
.invoice-id-link {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  color: var(--tblr-primary);
  text-decoration: none;
  font-weight: var(--tblr-font-semibold);
  transition: color var(--tblr-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--tblr-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--tblr-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

.client-name-link {
  font-size: var(--tblr-text-lg);
}

.invoice-id-link {
  font-size: var(--tblr-text-sm);
  font-family: var(--tblr-font-mono, monospace);
}

.payment-history-card {
  margin-top: var(--tblr-space-4);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
}

.payment-history-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-5);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border-light);
}

.payment-history-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, var(--tblr-warning-light, #fef3c7) 0%, rgba(245, 158, 11, 0.2) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-warning, #f59e0b);
}

.payment-history-title {
  flex: 1;
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.payment-history-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-muted);
  background: var(--tblr-gray-200);
  border-radius: var(--tblr-radius-full);
}

.payment-history-body {
  padding: var(--tblr-space-4) var(--tblr-space-5);
}

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

.payment-card {
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-md);
  border-left: 3px solid var(--tblr-gray-300);
  transition: all var(--tblr-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--tblr-success);
  background: var(--tblr-success-lighter, rgba(16, 185, 129, 0.05));
}

.payment-card-failed {
  border-left-color: var(--tblr-danger);
  background: var(--tblr-danger-lighter, rgba(239, 68, 68, 0.05));
}

.payment-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--tblr-space-2);
}

.payment-amount {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
}

.payment-detail {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
}
.payment-detail svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.payment-message {
  margin-top: var(--tblr-space-2);
  padding-top: var(--tblr-space-2);
  border-top: 1px solid var(--tblr-border-light);
  font-size: var(--tblr-text-xs);
  font-style: italic;
  color: var(--tblr-text-secondary);
}

.btn-pay {
  padding: var(--tblr-space-3) var(--tblr-space-6);
  font-weight: var(--tblr-font-semibold);
  box-shadow: var(--tblr-shadow-primary);
}
.btn-pay:hover {
  box-shadow: var(--tblr-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-pay:active {
  transform: translateY(0);
}

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--tblr-space-4);
    padding-bottom: var(--tblr-space-16);
  }
  .payment-header {
    margin-bottom: var(--tblr-space-4);
    padding: var(--tblr-space-4) 0;
  }
  .payment-header-icon {
    width: 48px;
    height: 48px;
  }
  .payment-header-title {
    font-size: 1.5rem;
  }
  .payment-methods-grid {
    grid-template-columns: 1fr;
  }
  .invoice-details-grid {
    grid-template-columns: 1fr;
  }
  .payment-form-footer {
    flex-direction: column-reverse;
    gap: var(--tblr-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--tblr-space-1);
  }
}
/**
 * Payments List Page Styles
 *
 * Minimal styling for the payments list page with KPI cards.
 * Most styles come from Tabler/Bootstrap - this file only adds specific customizations.
 */
.row-deck .card-sm {
  transition: all 0.2s ease-in-out;
}
.row-deck .card-sm:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/**
 * SolidInvoice - Users Page Styles
 *
 * Modern users list page with KPI cards and tabbed interface.
 * Uses design system tokens for consistent styling.
 */
.users-page {
  min-height: 100%;
}

/**
 * SolidInvoice - Profile Page Styles
 *
 * Styles for the user profile view and sidebar navigation.
 * Form pages (edit, change-password) use shared classes from _form-page.scss.
 * Includes: sidebar navigation, profile view, security status.
 */
.profile-sidebar {
  position: sticky;
  top: var(--tblr-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--tblr-space-4);
  }
}

.profile-nav-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
  box-shadow: var(--tblr-shadow-sm);
}

.profile-nav {
  display: flex;
  flex-direction: column;
}

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3) var(--tblr-space-4);
  color: var(--tblr-text-secondary);
  text-decoration: none;
  transition: all var(--tblr-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--tblr-text-base);
}
.profile-nav-item:hover {
  background: var(--tblr-gray-50);
  color: var(--tblr-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--tblr-primary-lighter);
  color: var(--tblr-primary);
  border-left-color: var(--tblr-primary);
  font-weight: var(--tblr-font-semibold);
}

.profile-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: currentcolor;
}

.profile-nav-text {
  flex: 1;
}

.profile-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-6);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  margin-bottom: var(--tblr-space-6);
  box-shadow: var(--tblr-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--tblr-space-5);
  }
}

.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--tblr-radius-full);
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.2) 100%);
  color: var(--tblr-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: var(--tblr-font-bold);
  flex-shrink: 0;
  letter-spacing: -0.02em;
}

.profile-header-info {
  flex: 1;
}

.profile-name {
  font-size: 1.5rem;
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.025em;
}

.profile-email {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-muted);
  margin: var(--tblr-space-1) 0 0;
}

.profile-section {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  overflow: hidden;
  margin-bottom: var(--tblr-space-6);
  box-shadow: var(--tblr-shadow-sm);
  transition: box-shadow var(--tblr-transition-base), border-color var(--tblr-transition-base);
}
.profile-section:hover {
  border-color: var(--tblr-border-dark);
}

.profile-section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-5) var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border-bottom: 1px solid var(--tblr-border);
}

.profile-section-title {
  flex: 1;
  padding-top: var(--tblr-space-1);
}

.profile-section-body {
  padding: var(--tblr-space-6);
}

.profile-section-footer {
  padding: var(--tblr-space-4) var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border-top: 1px solid var(--tblr-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--tblr-space-3);
}

.profile-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-5);
}
@media (width <= 767.98px) {
  .profile-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-4);
  }
}

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

.detail-item-wide {
  grid-column: 1/-1;
}

.detail-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  font-weight: var(--tblr-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.detail-value {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-primary);
  font-weight: var(--tblr-font-medium);
}

.security-status {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.security-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  transition: border-color var(--tblr-transition-base);
}
.security-item:hover {
  border-color: var(--tblr-border-dark);
}

.security-item-info {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex: 1;
}

.security-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--tblr-radius-md);
  flex-shrink: 0;
}

.security-item-icon-success {
  background: rgba(var(--tblr-success-rgb), 0.1);
  color: var(--tblr-success);
}

.security-item-icon-warning {
  background: rgba(var(--tblr-warning-rgb), 0.1);
  color: var(--tblr-warning);
}

.security-item-content {
  flex: 1;
}

.security-item-title {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-0-5);
}

.security-item-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin: 0;
}

.security-item-action {
  flex-shrink: 0;
  margin-left: var(--tblr-space-3);
}

.google-signin-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  background: var(--tblr-surface);
  border-color: var(--tblr-border);
  color: var(--tblr-text-primary);
  transition: all var(--tblr-transition-base);
}
.google-signin-btn:hover {
  background: var(--tblr-gray-50);
  border-color: var(--tblr-border-dark);
  color: var(--tblr-text-primary);
  box-shadow: var(--tblr-shadow-sm);
}
.google-signin-btn:active {
  transform: translateY(1px);
}
.google-signin-btn svg {
  flex-shrink: 0;
}

.password-requirements {
  background: rgba(var(--tblr-info-rgb), 0.05);
  border: 1px solid rgba(var(--tblr-info-rgb), 0.2);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-4);
  margin-bottom: var(--tblr-space-6);
}

.password-requirements-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-3);
}
.password-requirements-header .section-icon {
  width: 32px;
  height: 32px;
  background: rgba(var(--tblr-info-rgb), 0.15);
  color: var(--tblr-info);
}
.password-requirements-header h3 {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0;
}

.password-requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.password-requirements-list li {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  padding: var(--tblr-space-1) 0 var(--tblr-space-1) var(--tblr-space-6);
  position: relative;
}
.password-requirements-list li::before {
  content: "✓";
  position: absolute;
  left: var(--tblr-space-2);
  color: var(--tblr-info);
  font-weight: var(--tblr-font-bold);
}

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--tblr-space-6);
  }
}
@media (width <= 767.98px) {
  .profile-section-footer {
    flex-direction: column;
  }
  .profile-section-footer .btn {
    width: 100%;
    justify-content: center;
  }
}
@media print {
  .profile-section-footer,
  .profile-sidebar {
    display: none !important;
  }
}
.swp-profile .card-header {
  background: var(--tblr-gray-50);
}

/**
 * SolidInvoice - Two-Factor Authentication Styles
 *
 * Modern 2FA configuration and login pages with elegant design.
 * Matches the profile page patterns and Tabler design system.
 */
.two-factor-settings .form-page-sections {
  gap: var(--tblr-space-5);
}

.two-factor-section-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-5);
}
@media (width <= 767.98px) {
  .two-factor-section-content {
    flex-direction: column;
    align-items: flex-start;
    padding: var(--tblr-space-4);
  }
}

.two-factor-section-info {
  flex: 1;
}

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex-shrink: 0;
}
@media (width <= 767.98px) {
  .two-factor-section-actions {
    width: 100%;
    flex-direction: column;
  }
  .two-factor-section-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

.totp-setup-container {
  padding: var(--tblr-space-4) 0;
}

.setup-steps {
  display: flex;
  justify-content: center;
  gap: var(--tblr-space-3);
  margin-bottom: var(--tblr-space-6);
}
@media (width <= 575.98px) {
  .setup-steps {
    flex-direction: column;
    gap: var(--tblr-space-2);
  }
}

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-4);
  background: var(--tblr-gray-100);
  border-radius: var(--tblr-radius-md);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-muted);
  transition: all var(--tblr-transition-base);
}
.setup-steps .step.active {
  background: var(--tblr-primary-light);
  color: var(--tblr-primary);
  box-shadow: var(--tblr-shadow-sm);
}
.setup-steps .step .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: currentcolor;
  color: #ffffff;
  border-radius: var(--tblr-radius-full);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

.qr-code-container {
  padding: var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-lg);
  margin-bottom: var(--tblr-space-5);
}
@media (width <= 575.98px) {
  .qr-code-container {
    padding: var(--tblr-space-4);
  }
}

.qr-code-image {
  max-width: 300px;
  width: 100%;
  height: auto;
  border: 2px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  background: #ffffff;
  padding: var(--tblr-space-3);
  box-shadow: var(--tblr-shadow-sm);
}

.manual-entry-details {
  text-align: center;
}
.manual-entry-details summary {
  cursor: pointer;
  color: var(--tblr-primary);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  user-select: none;
  list-style: none;
  padding: var(--tblr-space-2);
  border-radius: var(--tblr-radius-md);
  transition: background-color var(--tblr-transition-base);
}
.manual-entry-details summary:hover {
  background: rgba(var(--tblr-primary-rgb), 0.05);
}
.manual-entry-details summary::-webkit-details-marker {
  display: none;
}
.manual-entry-details .manual-entry-content {
  margin-top: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: #ffffff;
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
}
.manual-entry-details .manual-entry-code {
  display: block;
  padding: var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  font-size: var(--tblr-text-lg);
  font-family: var(--tblr-font-mono);
  letter-spacing: 0.1em;
  word-break: break-all;
  color: var(--tblr-text-primary);
}

.verification-form-container {
  padding: var(--tblr-space-4) 0;
}

.verification-code-input {
  font-family: var(--tblr-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--tblr-space-4) !important;
}
.verification-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.5;
}
.verification-code-input:focus {
  letter-spacing: 0.5em !important;
}

.backup-codes-modal-content {
  padding: var(--tblr-space-2) 0;
}

.backup-codes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-lg);
}
@media (width <= 575.98px) {
  .backup-codes-grid {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-2);
  }
}

.backup-code-item code {
  display: block;
  padding: var(--tblr-space-3);
  background: #ffffff;
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  text-align: center;
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-medium);
  font-family: var(--tblr-font-mono);
  letter-spacing: 0.05em;
  transition: all var(--tblr-transition-base);
  color: var(--tblr-text-primary);
}
.backup-code-item code:hover {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
  transform: translateY(-2px);
}

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--tblr-gray-50);
  padding: var(--tblr-space-4);
}

.two-factor-login-card .card {
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
.two-factor-login-card .card-status-top {
  height: 4px;
  background: var(--tblr-primary);
}
.two-factor-login-card .card-body {
  padding: var(--tblr-space-8) var(--tblr-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--tblr-space-6) var(--tblr-space-4);
  }
}

.two-factor-avatar {
  width: 72px;
  height: 72px;
  margin: 0 auto var(--tblr-space-4);
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  border-radius: var(--tblr-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--tblr-primary);
  box-shadow: 0 4px 12px rgba(var(--tblr-primary-rgb), 0.2);
}
.two-factor-avatar.two-factor-avatar-success {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.2) 0%, rgba(var(--tblr-success-rgb), 0.1) 100%);
  color: var(--tblr-success);
  box-shadow: 0 4px 12px rgba(var(--tblr-success-rgb), 0.2);
}

.two-factor-login-title {
  font-size: 1.5rem;
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-primary);
  margin-bottom: var(--tblr-space-2);
  text-align: center;
}

.two-factor-login-description {
  font-size: var(--tblr-text-base);
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-6);
  text-align: center;
}

.two-factor-code-input {
  font-family: var(--tblr-font-mono);
  letter-spacing: 0.5em;
  text-align: center;
  font-size: 1.75rem !important;
  padding: var(--tblr-space-4) var(--tblr-space-3) !important;
  border: 2px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  transition: all var(--tblr-transition-base);
}
.two-factor-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.4;
}
.two-factor-code-input:focus {
  border-color: var(--tblr-primary);
  box-shadow: 0 0 0 4px rgba(var(--tblr-primary-rgb), 0.1);
  letter-spacing: 0.5em !important;
}
@media (width <= 575.98px) {
  .two-factor-code-input {
    font-size: 1.5rem !important;
    padding: var(--tblr-space-3) !important;
  }
}

.two-factor-form-hint {
  text-align: center;
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin-top: var(--tblr-space-2);
}
.two-factor-form-hint a {
  color: var(--tblr-primary);
  text-decoration: none;
  font-weight: var(--tblr-font-medium);
}
.two-factor-form-hint a:hover {
  text-decoration: underline;
}

.trust-device-option {
  padding: var(--tblr-space-3);
  background: rgba(var(--tblr-info-rgb), 0.05);
  border: 1px solid rgba(var(--tblr-info-rgb), 0.2);
  border-radius: var(--tblr-radius-md);
  margin: var(--tblr-space-4) 0;
}
.trust-device-option .form-check {
  margin: 0;
}
.trust-device-option .form-check-input {
  margin-top: 0.15em;
}
.trust-device-option .form-check-label {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-primary);
  font-weight: var(--tblr-font-medium);
  cursor: pointer;
}

.alternative-methods {
  padding-top: var(--tblr-space-4);
  margin-top: var(--tblr-space-4);
  border-top: 1px solid var(--tblr-border);
  text-align: center;
}
.alternative-methods .alternative-methods-title {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-3);
}
.alternative-methods .alternative-methods-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}
.alternative-methods .btn {
  width: 100%;
  justify-content: center;
}

.two-factor-security-notice {
  text-align: center;
  margin-top: var(--tblr-space-4);
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-2);
}

.email-resend-section {
  text-align: center;
  margin-top: var(--tblr-space-4);
  padding: var(--tblr-space-3);
  background: rgba(var(--tblr-info-rgb), 0.05);
  border-radius: var(--tblr-radius-md);
  border: 1px solid rgba(var(--tblr-info-rgb), 0.2);
}
.email-resend-section .resend-text {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-secondary);
  margin-bottom: var(--tblr-space-2);
}
.email-resend-section .resend-link {
  color: var(--tblr-primary);
  text-decoration: none;
  font-weight: var(--tblr-font-medium);
}
.email-resend-section .resend-link:hover {
  text-decoration: underline;
}
.email-resend-section .expiry-warning {
  font-size: var(--tblr-text-xs);
  color: var(--tblr-warning);
  margin-top: var(--tblr-space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-1);
}

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--tblr-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--tblr-space-4);
  }
  .qr-code-container {
    padding: var(--tblr-space-4);
    margin-bottom: var(--tblr-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--tblr-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--tblr-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--tblr-space-6) var(--tblr-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--tblr-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--tblr-primary);
  outline-offset: 2px;
}

@media (prefers-contrast: high) {
  .qr-code-image {
    border-width: 3px;
  }
  .backup-code-item code {
    border-width: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .backup-code-item code,
  .setup-steps .step,
  .manual-entry-details summary,
  .two-factor-code-input {
    transition: none;
  }
}
/**
 * SolidInvoice - Notifications Page Styles
 *
 * Notification preferences page with card-based layout and category grouping.
 * Page container/header/footer use shared form-page-* classes from _form-page.scss.
 * This file contains only notification-specific styles.
 */
.integration-management-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  margin-bottom: var(--tblr-space-6);
  box-shadow: var(--tblr-shadow-sm);
}

.integration-management-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-4);
  padding: var(--tblr-space-5);
}

.integration-management-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(var(--tblr-primary-rgb), 0.15) 0%, rgba(var(--tblr-primary-rgb), 0.05) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
  flex-shrink: 0;
}

.integration-management-info {
  flex: 1;
}

.integration-management-title {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-1);
  line-height: 1.4;
}

.integration-management-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin: 0;
  line-height: 1.5;
}

.integration-management-list {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
  padding: 0 var(--tblr-space-5) var(--tblr-space-5);
  border-top: 1px solid var(--tblr-border);
  padding-top: var(--tblr-space-4);
}

.integration-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1-5);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  white-space: nowrap;
}
.integration-badge svg {
  flex-shrink: 0;
  color: var(--tblr-primary);
}

.notification-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--tblr-space-6);
  margin-bottom: var(--tblr-space-6);
}

.notification-group {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.group-title {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-bold);
  color: var(--tblr-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--tblr-space-2);
}
.group-title svg {
  color: var(--tblr-primary);
  flex-shrink: 0;
}

.notification-cards {
  display: grid;
  gap: var(--tblr-space-3);
}

.notification-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-4);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-4) var(--tblr-space-4);
  transition: all var(--tblr-transition-base);
}
.notification-card:hover {
  border-color: var(--tblr-border-dark);
  box-shadow: var(--tblr-shadow-sm);
}
.notification-card:focus-within {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex: 1;
  min-width: 0;
}

.notification-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.08) 100%);
  border-radius: var(--tblr-radius-md);
  color: var(--tblr-primary);
  flex-shrink: 0;
}

.notification-card-info {
  flex: 1;
  min-width: 0;
}

.notification-title {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-0-5);
  line-height: 1.4;
}

.notification-description {
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
  margin: 0;
  line-height: 1.4;
}

.notification-card-channels {
  flex-shrink: 0;
}

.notification-card-channels .form-check {
  margin: 0;
  padding: 0;
  min-height: auto;
  position: relative;
}
.notification-card-channels .form-check .form-check-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.notification-card-channels .form-check .form-check-input:focus + .form-check-label {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--tblr-space-1-5) var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-sm);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  cursor: pointer;
  transition: all var(--tblr-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--tblr-surface);
  border-color: var(--tblr-primary);
  color: var(--tblr-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--tblr-primary-lighter);
  border-color: var(--tblr-primary);
  color: var(--tblr-primary);
  font-weight: var(--tblr-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--tblr-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--tblr-space-3) var(--tblr-space-4) var(--tblr-space-4);
  }
  .notification-groups {
    gap: var(--tblr-space-5);
  }
  .group-title {
    font-size: var(--tblr-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--tblr-space-3);
    padding: var(--tblr-space-3);
  }
  .notification-card-content {
    gap: var(--tblr-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--tblr-text-sm);
  }
  .notification-description {
    font-size: var(--tblr-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--tblr-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--tblr-space-2-5) var(--tblr-space-3);
    font-size: var(--tblr-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--tblr-space-8) var(--tblr-space-4);
  }
  .notifications-empty-state .empty-state-icon {
    width: 64px;
    height: 64px;
  }
  .notifications-empty-state .empty-state-icon svg {
    width: 48px;
    height: 48px;
  }
  .notifications-empty-state h3 {
    font-size: var(--tblr-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--tblr-text-sm);
  }
  .notifications-empty-state .btn {
    width: 100%;
  }
}
@media (width >= 768px) {
  .notification-groups {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media print {
  .notification-card {
    break-inside: avoid;
  }
}
/**
 * SolidInvoice - Subscription Pages Styles
 *
 * Billing, plan-picker, and subscription-state pages (pricing, overview,
 * change, cancelled, paused, pending, trial expired).
 *
 * All values are `--tblr-*` design tokens. State is carried by a soft icon
 * medallion + heading, never by a decorative accent stripe, a colored glow, or
 * a looping animation. Colour stays on the brand: Trust Green is the only
 * accent; there is no Tabler blue and no amber-by-accident here.
 */
.subscription-page {
  min-height: calc(100vh - var(--tblr-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-12) var(--tblr-space-4);
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--tblr-space-10);
  background: var(--tblr-surface);
  border: none;
  border-radius: var(--tblr-radius-xl);
  box-shadow: var(--tblr-shadow-xl);
  animation: subscription-fade-in 0.3s ease-out;
}

@keyframes subscription-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.subscription-page-header {
  background: var(--tblr-surface);
  border-bottom: 1px solid var(--tblr-border);
  box-shadow: var(--tblr-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--tblr-text-primary);
}

.subscription-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--tblr-radius-xl);
  margin: 0 auto var(--tblr-space-8);
}
.subscription-icon svg {
  width: 32px;
  height: 32px;
}

.subscription-icon-warning {
  background: var(--tblr-warning-light);
  color: var(--tblr-warning);
}

.subscription-icon-danger {
  background: var(--tblr-danger-light);
  color: var(--tblr-danger);
}

.subscription-icon-info {
  background: var(--tblr-info-light);
  color: var(--tblr-info);
}

.subscription-icon-paused {
  background: var(--tblr-gray-100);
  color: var(--tblr-text-secondary);
}

.subscription-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-3);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.subscription-subtitle {
  font-size: var(--tblr-text-lg);
  color: var(--tblr-text-secondary);
  margin: 0 0 var(--tblr-space-10);
  line-height: 1.7;
}

.subscription-benefits {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  padding: var(--tblr-space-6);
  margin-bottom: var(--tblr-space-8);
  text-align: left;
  box-shadow: var(--tblr-shadow-xs);
}
.subscription-benefits h3 {
  font-size: var(--tblr-text-md);
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-4);
}
.subscription-benefits ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.subscription-benefits li {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-2-5) 0;
  color: var(--tblr-text-secondary);
  font-size: var(--tblr-text-base);
}
.subscription-benefits li svg {
  width: 20px;
  height: 20px;
  color: var(--tblr-success);
  flex-shrink: 0;
}

.subscription-cancelled-page .subscription-benefits li svg {
  color: var(--tblr-text-muted);
}

.subscription-actions {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
  margin-bottom: var(--tblr-space-4);
}
.subscription-actions .btn-lg {
  padding: var(--tblr-space-3-5) var(--tblr-space-6);
  font-size: var(--tblr-text-md);
  font-weight: 600;
  box-shadow: var(--tblr-shadow-sm);
  transition: box-shadow var(--tblr-transition-base);
}
.subscription-actions .btn-lg svg {
  width: 20px;
  height: 20px;
}
.subscription-actions .btn-lg:hover {
  box-shadow: var(--tblr-shadow-md);
}
.subscription-actions .btn-lg:focus-visible {
  outline: none;
  box-shadow: var(--tblr-shadow-md), var(--tblr-ring-primary);
}
.subscription-actions .btn-ghost svg {
  width: 18px;
  height: 18px;
}
.subscription-actions .btn-ghost:hover {
  background: var(--tblr-gray-50);
}
.subscription-actions .btn-ghost:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}

.subscription-paused-page .subscription-benefits li svg {
  color: var(--tblr-text-secondary);
}

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--tblr-space-3) var(--tblr-space-4);
}
.alert-banner .d-flex {
  align-items: center;
}
.alert-banner .alert-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.alert-banner .btn-sm {
  white-space: nowrap;
  flex-shrink: 0;
}
.alert-banner.alert-warning {
  background: var(--tblr-warning-lighter);
  border-bottom-color: var(--tblr-warning-light);
  color: var(--tblr-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--tblr-warning);
  color: var(--tblr-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--tblr-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--tblr-danger-lighter);
  border-bottom-color: var(--tblr-danger-light);
  color: var(--tblr-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--tblr-danger);
  color: var(--tblr-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--tblr-danger-hover);
}

.subscription-pricing-page .subscription-container {
  max-width: 1100px;
  text-align: center;
}

.plan-card {
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--tblr-transition-base), border-color var(--tblr-transition-base);
}
.plan-card:hover {
  box-shadow: var(--tblr-shadow-md);
}
.plan-card > .card-body {
  padding-top: var(--tblr-space-9);
}

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--tblr-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--tblr-shadow-xl);
}

.plan-card-banner {
  position: absolute;
  top: 0;
  inset-inline: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-1);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  font-size: var(--tblr-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-inverse);
  background: var(--tblr-primary-dark);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-current .plan-card-banner {
  background: var(--tblr-success-dark);
}

.plan-card-free {
  background: var(--tblr-gray-50);
  border: 1px dashed var(--tblr-border);
  box-shadow: none;
  transition: border-color var(--tblr-transition-base), background var(--tblr-transition-base);
}
.plan-card-free:hover {
  border-color: var(--tblr-primary);
  background: var(--tblr-surface);
}
.plan-card-free .card-body {
  padding: var(--tblr-space-4) var(--tblr-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--tblr-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--tblr-space-1);
}

.plan-card-free-header {
  flex-shrink: 0;
  min-width: 0;
}

.plan-card-free-cta {
  flex-shrink: 0;
}

.plan-card-features-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--tblr-space-2) var(--tblr-space-4);
  font-size: var(--tblr-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  white-space: nowrap;
}

.plan-card-price {
  font-size: var(--tblr-text-4xl);
  line-height: 1.1;
}

.plan-card-interval {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-normal);
}

.plan-card-features {
  text-align: start;
}

.subscription-coupon {
  background: var(--tblr-primary-lighter);
  border: 1px solid var(--tblr-primary-light);
  border-radius: var(--tblr-radius-lg);
}
.subscription-coupon .badge {
  background: var(--tblr-primary);
  color: var(--tblr-text-inverse);
}

.subscription-welcome-page .subscription-container {
  max-width: 720px;
}

.welcome-plan {
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-xs);
}
.welcome-plan .card-body {
  padding: var(--tblr-space-6);
}
.welcome-plan .plan-card-features {
  margin-bottom: 0;
}

.welcome-plan-pricing {
  white-space: nowrap;
}

.welcome-plan-price {
  font-size: var(--tblr-text-2xl);
  font-weight: 700;
  line-height: 1.1;
}

.welcome-reassure-item {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-2-5);
  height: 100%;
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-lg);
}
.welcome-reassure-item svg {
  flex-shrink: 0;
  margin-top: var(--tblr-space-0-5);
  color: var(--tblr-success);
}

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--tblr-space-6) var(--tblr-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--tblr-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--tblr-space-6);
  }
  .subscription-icon {
    width: 48px;
    height: 48px;
  }
  .subscription-icon svg {
    width: 28px;
    height: 28px;
  }
  .subscription-title {
    font-size: 1.375rem;
  }
  .subscription-subtitle {
    font-size: var(--tblr-text-md);
  }
  .subscription-benefits {
    padding: var(--tblr-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--tblr-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--tblr-space-8);
  }
}
@media (prefers-reduced-motion: reduce) {
  .subscription-container {
    animation: none;
  }
  .plan-card,
  .plan-card-free,
  .subscription-actions .btn-lg {
    transition: none;
  }
}
@media print {
  .subscription-page {
    padding: 0;
  }
  .subscription-container {
    box-shadow: none;
    border: 1px solid var(--tblr-border);
  }
  .subscription-actions {
    display: none;
  }
  .alert-banner {
    display: none;
  }
}
/**
 * Onboarding Checklist - Dashboard widget
 *
 * The first component a new user meets. Priorities, in order:
 *   1. Convey state (todo / done / hovered / focused). Never decoration.
 *   2. Stay on the SolidInvoice design system - `--tblr-*` tokens only.
 *   3. Read correctly whether a row is an <a> (actionable) or a <span> (done).
 *
 * Structure comes from Tabler (`card`, `card-stamp`, `card-link-pop`,
 * `offcanvas`, `visually-hidden`). This file only adds what Tabler does not
 * already provide - it does not restate or fight it.
 */
.card.card-active {
  border-color: var(--tblr-success);
  background: var(--tblr-success-lighter);
}

.card-stamp-icon {
  opacity: 0.15;
}

.checklist-items-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2-5);
}

.checklist-item {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border);
  border-radius: var(--tblr-radius-md);
  text-decoration: none;
  color: inherit;
  transition: color var(--tblr-duration-fast) var(--tblr-ease-out), background-color var(--tblr-duration-fast) var(--tblr-ease-out), border-color var(--tblr-duration-fast) var(--tblr-ease-out), box-shadow var(--tblr-duration-fast) var(--tblr-ease-out);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) {
  background: var(--tblr-primary-lighter);
  border-color: var(--tblr-primary);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) .checklist-item-action {
  color: var(--tblr-primary);
}
.checklist-item:not(.completed):focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}
.checklist-item.completed {
  background: var(--tblr-success-lighter);
  border-color: var(--tblr-success-light);
  cursor: default;
}
.checklist-item.completed .item-name {
  color: var(--tblr-text-muted);
  font-weight: var(--tblr-font-normal);
  text-decoration: line-through;
}
.checklist-item.completed .item-icon {
  color: var(--tblr-text-light);
}
.checklist-item.completed .checklist-item-action {
  display: none;
}

.checklist-item-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: var(--tblr-space-0-5);
  color: var(--tblr-success);
}

.checklist-item:not(.completed) .checklist-item-icon {
  color: var(--tblr-gray-400);
}

.checklist-item-content {
  flex: 1;
  min-width: 0;
}

.checklist-item-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-1);
}

.checklist-item .item-icon {
  display: flex;
  align-items: center;
  color: var(--tblr-primary);
}

.checklist-item .item-name {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

.checklist-item-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin: 0;
  line-height: var(--tblr-leading-normal);
}

.checklist-item-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: var(--tblr-space-0-5);
  color: var(--tblr-text-light);
}

.onboarding-offcanvas {
  width: 420px;
  max-width: 100%;
}

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--tblr-border-light);
  background: var(--tblr-primary-lighter);
  box-shadow: var(--tblr-shadow-sm);
}

.onboarding-progress-label {
  min-width: 3rem;
}

@media (prefers-reduced-motion: reduce) {
  .checklist-item {
    transition: none;
  }
}
/**
 * Onboarding Wizard - the first-run flow (/onboarding)
 *
 * This is the first screen every new user meets: post-install and post-signup,
 * a user with no company is redirected here to create their company, an
 * optional first client, and a first invoice.
 *
 * It used to be styled with inline <style> blocks that contradicted the design
 * system wholesale - Bootstrap blue (#066fd1) instead of Trust Green, gradients
 * on the canvas / step icon / badge, a 3px `border-left` side-stripe on the
 * benefits box (a hard ban), and a bounce/elastic celebration with an infinite
 * pulse and no reduced-motion fallback. This file replaces all of it with
 * `--tblr-*` tokens, flat surfaces, and ease-out motion.
 *
 * Everything is scoped under `.onboarding-container` because the class names
 * (`step-icon`, `step-benefits`, `welcome-badge`, ...) are generic and used
 * nowhere else - scoping keeps them from leaking into the rest of the app.
 *
 * Structure (Bootstrap grid, `card`, `btn`, `form-control`, `progress`) comes
 * from Tabler; this file only styles the custom wizard chrome.
 */
.onboarding-container {
  background: var(--tblr-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--tblr-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-gray-100);
  color: var(--tblr-text-muted);
  transition: background-color var(--tblr-duration-slow) var(--tblr-ease-out), color var(--tblr-duration-slow) var(--tblr-ease-out), box-shadow var(--tblr-duration-slow) var(--tblr-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--tblr-primary-light);
  color: var(--tblr-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--tblr-primary);
  color: var(--tblr-text-inverse);
  box-shadow: var(--tblr-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-muted);
  transition: color var(--tblr-duration-slow) var(--tblr-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--tblr-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--tblr-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--tblr-space-4);
  background: var(--tblr-border);
  transition: background-color var(--tblr-duration-slow) var(--tblr-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--tblr-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--tblr-space-12);
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-xl);
  box-shadow: var(--tblr-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--tblr-space-6);
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-primary-light);
  color: var(--tblr-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--tblr-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-4);
  padding: var(--tblr-space-2) var(--tblr-space-4);
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-primary-light);
  color: var(--tblr-primary-dark);
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--tblr-space-6);
  padding: var(--tblr-space-5);
  background: var(--tblr-primary-lighter);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--tblr-space-5);
  color: var(--tblr-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--tblr-space-2);
}
.onboarding-container .celebration-icon {
  display: flex;
  justify-content: center;
}
.onboarding-container .success-checkmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 6rem;
  height: 6rem;
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-success-light);
  color: var(--tblr-success-dark);
  animation: onboarding-celebrate var(--tblr-duration-slow) var(--tblr-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4);
  background: var(--tblr-gray-50);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  text-align: left;
  color: var(--tblr-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--tblr-space-0-5);
  color: var(--tblr-accent-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--tblr-space-8) var(--tblr-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--tblr-space-2);
  }
}

@keyframes onboarding-celebrate {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .onboarding-container .step-number,
  .onboarding-container .step-label,
  .onboarding-container .step-connector {
    transition: none;
  }
  .onboarding-container .success-checkmark {
    animation: none;
  }
}
/**
 * SolidInvoice Design System - Money Display
 *
 * The signature component (DESIGN.md section 5). Every currency value in the
 * application renders through `.money`; it is the single source of truth for
 * money display, and raw `{{ amount }}` rendering is prohibited.
 *
 * Contract:
 *   <span class="money">
 *     <span class="money-currency">USD</span>
 *     <strong class="money-amount">1,234.56</strong>
 *   </span>
 *
 * Modifiers (on the `.money` root, combinable):
 *   .money--paid      Amount in AA-safe success. ONLY valid alongside an
 *                     explicit "Paid" label (the Money-Color Rule).
 *   .money--overdue   Amount in AA-safe danger. Same labelling rule.
 *   .money--total     Weight 600, amount one size step up.
 *   (none)            Neutral - the default and the common case.
 *
 * The component never sets its own font-size. It inherits from context, so the
 * same markup is correct inline in a table cell, in a heading, and at
 * `.stat-value` scale in the dashboard hero tiles. Only `.money--total` steps
 * the amount, and it steps relatively so the result is right at every base.
 */
.money {
  display: inline-flex;
  align-items: baseline;
  gap: var(--tblr-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.money-currency {
  color: var(--tblr-money-currency);
}

.money-amount {
  color: var(--tblr-money-neutral);
  font-weight: var(--tblr-font-medium);
}

.money--paid .money-amount {
  color: var(--tblr-money-paid);
}

.money--overdue .money-amount {
  color: var(--tblr-money-overdue);
}

.money--total .money-amount {
  font-size: calc(1em * var(--tblr-money-total-scale));
  font-weight: var(--tblr-font-semibold);
}

.money--total .money-currency {
  font-size: var(--tblr-money-currency-scale);
}

/**
 * SolidInvoice Design System - Status Chip
 *
 * The one status chip (DESIGN.md section 5). Every status word in the
 * application renders through `.status-chip`, on a five-value semantic set:
 * neutral, info, success, warning, danger.
 *
 * Contract:
 *   <span class="status-chip status-chip--success">Paid</span>
 *
 * Every variant is an AA-safe text colour on its own tint:
 *   neutral   gray-100      / text-secondary   6.92:1
 *   info      info-light    / info-dark        5.49:1
 *   success   success-light / success-dark     4.84:1
 *   warning   warning-light / warning-dark     6.37:1
 *   danger    danger-light  / danger-dark      5.30:1
 *
 * The tint itself measures 1.05-1.22:1 against the page. That is deliberate.
 * The chip's meaning is carried by its text label, so the pill is decoration
 * around legible text, not a control whose boundary must be perceivable.
 *
 * A chip is never interactive: no shadow, no border, no hover, no transition,
 * and it is never a focus target. A chip is also never truncated - a
 * half-shown status is worse than a wider column.
 */
.status-chip {
  display: inline-flex;
  align-items: center;
  padding: var(--tblr-space-0-5) var(--tblr-space-2-5);
  border-radius: var(--tblr-radius-full);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-medium);
  line-height: 1.25;
  letter-spacing: 0;
  white-space: nowrap;
  background-color: var(--tblr-gray-100);
  color: var(--tblr-text-secondary);
}
.status-chip--neutral {
  background-color: var(--tblr-gray-100);
  color: var(--tblr-text-secondary);
}
.status-chip--info {
  background-color: var(--tblr-info-light);
  color: var(--tblr-info-dark);
}
.status-chip--success {
  background-color: var(--tblr-success-light);
  color: var(--tblr-success-dark);
}
.status-chip--warning {
  background-color: var(--tblr-warning-light);
  color: var(--tblr-warning-dark);
}
.status-chip--danger {
  background-color: var(--tblr-danger-light);
  color: var(--tblr-danger-dark);
}

/**
 * SolidInvoice Design System - Layout Index
 *
 * Layout pattern styles that extend Tabler/Bootstrap.
 * Only add layout files for patterns not covered by the frameworks.
 *
 * Note: Most layout styling comes from Tabler (page-wrapper, page-header, etc.)
 * This file imports only custom extensions when needed.
 */
/**
 * SolidInvoice — Vertical Navbar (Sidebar)
 *
 * Tabler ships `.navbar-vertical.navbar-dark` as a heavy slate panel (gray-800)
 * that PRODUCT.md names as the AdminLTE anti-reference the rewrite is escaping.
 * This file recolors the sidebar one shade lighter (gray-700) so it still
 * carries presence, but uses tinted neutrals and a green-tinted active state
 * to differentiate it from generic Tabler admin output.
 *
 * Selector specificity targets `.navbar-vertical` so Tabler's mobile-collapse,
 * drawer, and dropdown rules continue to apply.
 */
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--tblr-gray-700);
  color: var(--tblr-gray-300);
  border-right: 1px solid var(--tblr-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--tblr-gray-50);
  font-weight: var(--tblr-font-semibold);
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .nav-link,
.navbar.navbar-vertical.navbar-dark .nav-link {
  color: var(--tblr-gray-300);
  border-radius: var(--tblr-radius-md);
  transition: background-color var(--tblr-transition-fast), color var(--tblr-transition-fast);
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .nav-link:hover {
  background-color: var(--tblr-gray-600);
  color: var(--tblr-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
  color: var(--tblr-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active {
  background-color: var(--tblr-primary-light);
  color: var(--tblr-primary-dark);
  font-weight: var(--tblr-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .nav-link.active .nav-link-title,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active .nav-link-title {
  color: var(--tblr-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active:hover {
  background-color: var(--tblr-primary-light);
  color: var(--tblr-primary-dark);
}
.navbar.navbar-vertical .nav-subtitle,
.navbar.navbar-vertical .nav-header,
.navbar.navbar-vertical.navbar-dark .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .nav-header {
  color: var(--tblr-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--tblr-tracking-wider);
  font-weight: var(--tblr-font-semibold);
  font-size: var(--tblr-text-xs);
}
.navbar.navbar-vertical .nav-link-toggle,
.navbar.navbar-vertical .dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .nav-link-toggle,
.navbar.navbar-vertical.navbar-dark .dropdown-toggle::after {
  color: var(--tblr-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--tblr-surface);
  border: 1px solid var(--tblr-border-light);
  box-shadow: var(--tblr-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--tblr-text-secondary);
  border-radius: var(--tblr-radius-sm);
  --tblr-nav-link-icon-color: currentcolor;
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:focus {
  background-color: var(--tblr-surface-hover);
  color: var(--tblr-text-primary);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item.active {
  background-color: var(--tblr-primary-light);
  color: var(--tblr-primary-dark);
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--tblr-gray-200);
  border-color: var(--tblr-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--tblr-gray-700);
  }
}

/**
 * SolidInvoice Design System - Form Styles
 *
 * Generic form component styles for the entire application.
 * Uses design system tokens for consistent styling.
 */
.form-control,
.form-select {
  border-radius: var(--tblr-input-radius);
  border-color: var(--tblr-input-border);
  padding: var(--tblr-input-padding-y) var(--tblr-input-padding-x);
  font-size: var(--tblr-text-base);
  transition: border-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--tblr-input-focus-border);
  box-shadow: var(--tblr-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--tblr-text-light);
}

.ts-wrapper.full .ts-control {
  background-color: var(--tblr-surface);
}

:is(.form-page-section, .address-card, .billing-items-section, .billing-terms-section):has(.ts-wrapper.dropdown-active) {
  overflow: visible;
}

.form-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-text-secondary);
  margin-bottom: var(--tblr-space-2);
}
.form-label.required::after {
  content: " *";
  color: var(--tblr-danger);
}

.form-field .form-label {
  font-weight: var(--tblr-font-medium);
  color: var(--tblr-body-color);
  margin-bottom: var(--tblr-space-2);
}
.form-field .form-control,
.form-field .form-select {
  border-color: var(--tblr-border);
  transition: border-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.form-field .form-control:focus,
.form-field .form-select:focus {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}
.form-field .input-group-text {
  background-color: var(--tblr-gray-50);
  border-color: var(--tblr-border);
  color: var(--tblr-text-muted);
}

.form-help,
.form-text,
.form-help-text {
  color: var(--tblr-text-muted);
  font-size: var(--tblr-text-sm);
  line-height: var(--tblr-leading-normal);
  margin-top: var(--tblr-space-1);
}
.form-help small,
.form-text small,
.form-help-text small {
  font-size: inherit;
}

.form-switch-field {
  padding: var(--tblr-space-3-5) var(--tblr-space-4);
  background-color: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-md);
  border: 1px solid var(--tblr-border);
  transition: border-color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
}
.form-switch-field:hover {
  border-color: rgba(var(--tblr-primary-rgb), 0.3);
  background-color: var(--tblr-primary-lighter);
}

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  margin-bottom: 0;
}
.form-switch-wrapper .form-check-input {
  width: 2.5rem;
  height: 1.25rem;
  margin-top: 0;
  cursor: pointer;
  background-color: var(--tblr-gray-300);
  border: none;
  transition: background-color var(--tblr-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--tblr-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--tblr-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--tblr-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--tblr-gray-50);
  border-color: var(--tblr-border);
  color: var(--tblr-text-muted);
}
.input-icon-group .input-group-text svg {
  width: 18px;
  height: 18px;
}
.input-icon-group .form-control {
  border-left: none;
}
.input-icon-group .form-control:focus {
  border-color: var(--tblr-primary);
  box-shadow: var(--tblr-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--tblr-primary);
}
.input-icon-group .input-group-text:first-child {
  border-right: none;
}
.input-icon-group .input-group-text:first-child + .form-control {
  border-left: none;
}

.input-validate-group .btn-validate {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1-5);
  font-size: var(--tblr-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--tblr-space-5);
  background-color: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-lg);
  border: 1px solid var(--tblr-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--tblr-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-body-color);
  margin: 0;
}
.form-group-card .form-group-content .mb-3:last-child,
.form-group-card .form-group-content .mb-4:last-child {
  margin-bottom: 0 !important;
}

.address-widget .card-body {
  padding: var(--tblr-space-4);
}
.address-widget .form-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--tblr-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--tblr-danger);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ef4444%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ef4444%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--tblr-danger);
  box-shadow: var(--tblr-ring-danger);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--tblr-success);
}
.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--tblr-success);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15);
}

.invalid-feedback {
  color: var(--tblr-danger);
  font-size: var(--tblr-text-sm);
  margin-top: var(--tblr-space-1-5);
}

.valid-feedback {
  color: var(--tblr-success);
  font-size: var(--tblr-text-sm);
  margin-top: var(--tblr-space-1-5);
}

.file-upload-area {
  border: 2px dashed var(--tblr-gray-300);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-6);
  text-align: center;
  background: var(--tblr-surface);
  transition: border-color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
  cursor: pointer;
}
.file-upload-area:hover, .file-upload-area.dragover {
  border-color: var(--tblr-primary);
  background-color: var(--tblr-primary-lighter);
}
.file-upload-area .upload-icon {
  color: var(--tblr-text-light);
  margin-bottom: var(--tblr-space-2);
}
.file-upload-area .upload-icon svg {
  width: 32px;
  height: 32px;
}
.file-upload-area .upload-text {
  color: var(--tblr-text-muted);
  font-size: var(--tblr-text-sm);
}
.file-upload-area .upload-hint {
  color: var(--tblr-text-light);
  font-size: var(--tblr-text-xs);
  margin-top: var(--tblr-space-1);
}

.dropzone {
  border: 2px dashed var(--tblr-gray-300);
  border-radius: var(--tblr-radius-md);
  padding: var(--tblr-space-4);
  text-align: center;
  background: var(--tblr-surface);
  transition: border-color var(--tblr-transition-fast), background-color var(--tblr-transition-fast);
  min-height: auto;
}
.dropzone:hover, .dropzone.dropzone-dragover {
  border-color: var(--tblr-primary);
  background-color: var(--tblr-primary-lighter);
}

.form-section-title {
  font-size: var(--tblr-text-md);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-body-color);
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--tblr-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
}

/**
 * Standard Form Actions Pattern:
 *
 * ┌─────────────────────────────────────────────────────────────┐
 * │ [Cancel (ghost)]                      [Save (primary + icon)]│
 * └─────────────────────────────────────────────────────────────┘
 *
 * - Cancel: Left side OR ghost style
 * - Save: Right side, primary style, with save icon
 */
.form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) var(--tblr-space-6);
  background: var(--tblr-gray-50);
  border-top: 1px solid var(--tblr-border-light);
}
.card-footer .form-actions {
  padding: 0;
  background: transparent;
  border-top: none;
}
.form-actions.form-actions-spread {
  justify-content: space-between;
}

.form-inline {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex-wrap: wrap;
}
.form-inline .form-control,
.form-inline .form-select {
  width: auto;
}

.form-horizontal .form-group,
.form-horizontal .mb-3,
.form-horizontal .mb-4 {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: var(--tblr-space-4);
  align-items: start;
}
@media (width <= 768px) {
  .form-horizontal .form-group,
  .form-horizontal .mb-3,
  .form-horizontal .mb-4 {
    grid-template-columns: 1fr;
  }
}
.form-horizontal .form-label {
  padding-top: var(--tblr-space-2-5);
  margin-bottom: 0;
  text-align: right;
}
@media (width <= 768px) {
  .form-horizontal .form-label {
    text-align: left;
    padding-top: 0;
  }
}

.form-compact .mb-3,
.form-compact .mb-4 {
  margin-bottom: var(--tblr-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--tblr-space-2) var(--tblr-space-3);
  font-size: var(--tblr-text-sm);
}
.form-compact .form-label {
  font-size: var(--tblr-text-xs);
  margin-bottom: var(--tblr-space-1);
}

.btn {
  gap: var(--tblr-space-2);
}

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: var(--tblr-radius-md);
}
.btn-icon svg {
  width: 18px;
  height: 18px;
}

.btn-ghost-danger {
  color: var(--tblr-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--tblr-danger);
  background: var(--tblr-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--tblr-ring-danger);
}

.card-header-tabs .nav-link {
  font-size: 0.875rem;
}

.fw-medium {
  font-weight: 500 !important;
}

@media (width <= 576px) {
  .form-switch-field {
    padding: var(--tblr-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--tblr-space-4);
  }
  .form-actions {
    padding: var(--tblr-space-3) var(--tblr-space-4);
    flex-wrap: wrap;
  }
  .form-actions .btn {
    flex: 1;
    min-width: 100px;
  }
}
/**
 * Company Pages Styles
 *
 * Styles for company selection and creation pages
 * All styles are scoped to .company-select-page and .company-create-page
 * to avoid conflicts with other pages.
 */
.company-select-page,
.company-create-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.company-select-page .company-page-header,
.company-create-page .company-page-header {
  background: var(--tblr-surface);
  border-bottom: 1px solid var(--tblr-border);
  box-shadow: var(--tblr-shadow-xs);
}
.company-select-page .company-page-logo,
.company-create-page .company-page-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-page-logo img,
.company-create-page .company-page-logo img {
  height: 48px;
  width: auto;
}
.company-select-page .company-page-brand h1,
.company-create-page .company-page-brand h1 {
  font-weight: 700;
  color: var(--tblr-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--tblr-text-primary);
  font-size: 1.75rem;
}
.company-select-page .company-page-intro p,
.company-create-page .company-page-intro p {
  font-size: 1.125rem;
}
.company-select-page .avatar-md,
.company-create-page .avatar-md {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-lg,
.company-create-page .avatar-lg {
  width: 3.5rem;
  height: 3.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-2xl,
.company-create-page .avatar-2xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.25rem;
  font-weight: 600;
}
.company-select-page .avatar-xl,
.company-create-page .avatar-xl {
  width: 5rem;
  height: 5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-initials,
.company-create-page .avatar-initials {
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.company-select-page .form-hint,
.company-create-page .form-hint {
  font-size: 0.875rem;
  color: var(--tblr-text-secondary);
  display: flex;
  align-items: center;
}
@media (width <= 767.98px) {
  .company-select-page .avatar-lg,
  .company-create-page .avatar-lg {
    width: 3rem;
    height: 3rem;
  }
  .company-select-page .avatar-lg svg,
  .company-create-page .avatar-lg svg {
    width: 24px;
    height: 24px;
  }
  .company-select-page .avatar-2xl,
  .company-create-page .avatar-2xl {
    width: 3rem;
    height: 3rem;
    font-size: 1rem;
  }
  .company-select-page .h2, .company-select-page h2,
  .company-create-page .h2,
  .company-create-page h2 {
    font-size: 1.5rem;
  }
}

.company-select-page .card.shadow-sm {
  box-shadow: var(--tblr-shadow-lg) !important;
  border: none;
  background: var(--tblr-surface);
}
.company-select-page .card-company {
  transition: var(--tblr-transition-all);
  border: 2px solid var(--tblr-border);
  background: var(--tblr-surface);
  box-shadow: var(--tblr-shadow-md);
  border-radius: var(--tblr-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--tblr-shadow-xl);
  border-color: var(--tblr-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--tblr-primary);
}
.company-select-page .card-company:active {
  transform: translateY(-2px);
}
.company-select-page .company-avatar {
  flex-shrink: 0;
}
.company-select-page .company-avatar .avatar {
  box-shadow: var(--tblr-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--tblr-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--tblr-primary-dark) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--tblr-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--tblr-duration-base) var(--tblr-ease-in-out);
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .min-w-0 {
  min-width: 0;
}
.company-select-page .card-create-company {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.05) 0%, rgba(var(--tblr-success-rgb), 0.02) 100%);
  border: 2px dashed var(--tblr-border);
  transition: var(--tblr-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--tblr-success);
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.08) 0%, rgba(var(--tblr-success-rgb), 0.04) 100%);
}
.company-select-page .w-md-auto {
  width: auto !important;
}
@media (width >= 768px) {
  .company-select-page .w-md-auto {
    width: auto !important;
  }
}

.company-create-page .form-smooth .form-control:focus,
.company-create-page .form-smooth .form-select:focus {
  border-color: var(--tblr-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--tblr-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--tblr-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--tblr-info-rgb), 0.08);
  border-color: rgba(var(--tblr-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--tblr-warning-rgb), 0.08);
  border-color: rgba(var(--tblr-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--tblr-success-rgb), 0.08);
  border-color: rgba(var(--tblr-success-rgb), 0.2);
}
.company-create-page .btn-primary {
  font-weight: 600;
  letter-spacing: 0.01em;
}

/**
 * Settings Page Styles
 * Only custom styles that can't be achieved with Bootstrap/Tabler utilities
 */
.settings-page {
  max-width: 900px;
  margin: 0 auto;
  padding-bottom: 2rem;
}

@media (max-width: 767.98px) {
  .settings-page > .nav-underline {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .settings-page > .nav-underline::-webkit-scrollbar {
    display: none;
  }
  .settings-page > .nav-underline .nav-item {
    flex-shrink: 0;
  }
}
.settings-content-card {
  border-radius: var(--tblr-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--tblr-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--tblr-space-8) var(--tblr-space-8) var(--tblr-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--tblr-space-4) var(--tblr-space-6);
  border-top-color: var(--tblr-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--tblr-space-4) var(--tblr-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--tblr-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--tblr-text-lg);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--tblr-text-muted);
}
.settings-content-card .card-body h3 + p.text-muted {
  max-width: 65ch;
}

.logo-upload-card .logo-preview-frame {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  overflow: hidden;
}
.logo-upload-card .logo-preview-frame img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.logo-upload-card .dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 0.5rem;
  min-height: auto;
}
.logo-upload-card .dropzone:hover, .logo-upload-card .dropzone.dropzone-dragover {
  border-color: var(--tblr-primary);
  background-color: rgba(var(--tblr-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--tblr-radius-lg);
  border-color: var(--tblr-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--tblr-danger-lighter) !important;
  border-bottom-color: var(--tblr-danger-light) !important;
  padding: var(--tblr-space-3) var(--tblr-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-danger);
}
.settings-danger-zone .card .card-body {
  padding: var(--tblr-space-5) var(--tblr-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
}

#deleteCompanyModal .modal-content {
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
#deleteCompanyModal .font-monospace {
  background-color: #fef2f2;
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
}

.custom-field-list .custom-field-row {
  transition: background-color 120ms ease;
}
.custom-field-list .custom-field-row:hover .custom-field-handle {
  color: var(--tblr-body-color, #1e293b);
}
.custom-field-list .custom-field-row.sortable-ghost {
  opacity: 0.4;
  background-color: rgba(var(--tblr-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--tblr-primary-rgb, 99 102 241), 0.04);
}
.custom-field-list .custom-field-handle {
  cursor: grab;
  padding: 0.25rem;
  color: var(--tblr-muted, #94a3b8);
  line-height: 1;
  border-radius: 0.25rem;
}
.custom-field-list .custom-field-handle:active {
  cursor: grabbing;
}

@media print {
  .settings-page .nav-underline,
  .settings-page .settings-danger-zone,
  .settings-page .card-footer {
    display: none !important;
  }
}
.template-picker .template-picker-card {
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-picker .template-picker-card:has(.template-picker-input:checked) {
  border-color: var(--tblr-primary, #206bc4);
  box-shadow: 0 0 0 2px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}
.template-picker .template-picker-card:has(.template-picker-input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.5);
}
.template-picker .template-picker-option {
  display: block;
  position: relative;
  margin: 0;
  cursor: pointer;
}
.template-picker .template-picker-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.template-picker .template-picker-thumb {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--tblr-bg-surface-secondary, #f1f5f9);
}
.template-picker .template-picker-thumb iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 400%;
  height: 400%;
  border: 0;
  transform: scale(0.25);
  transform-origin: 0 0;
  pointer-events: none;
}
.template-picker .template-picker-check {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--tblr-primary, #206bc4);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
}
.template-picker .template-picker-option:has(.template-picker-input:checked) .template-picker-check {
  display: flex;
}
.template-picker.template-picker-disabled .template-picker-option {
  cursor: not-allowed;
}
.template-picker.template-picker-disabled .template-picker-thumb {
  opacity: 0.6;
}

/**
 * SolidInvoice Dashboard Styles
 *
 * Styles for the redesigned dashboard including hero stats,
 * charts, attention required section, quick actions, and activity feed.
 */
.dashboard-hero-stats {
  display: grid;
  gap: var(--tblr-space-4);
  grid-template-columns: 1fr;
}
@media (width >= 577px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (width >= 1201px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(9, 1fr);
  }
}

.stat-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  box-shadow: var(--tblr-shadow-sm);
  padding: var(--tblr-space-6);
}
@media (width >= 1201px) {
  .stat-card {
    grid-column: span 2;
  }
}
.stat-card--danger {
  background: var(--tblr-danger-lighter);
  border-color: var(--tblr-danger-light);
}
@media (width >= 1201px) {
  .stat-card--urgent {
    grid-column: span 3;
  }
}
.stat-card--urgent .stat-value {
  font-size: var(--tblr-text-3xl);
}

.stat-card-content {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-4);
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--tblr-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon--primary {
  background: var(--tblr-primary-light);
  color: var(--tblr-primary);
}
.stat-icon--success {
  background: var(--tblr-success-light);
  color: var(--tblr-success);
}
.stat-icon--danger {
  background: var(--tblr-danger-light);
  color: var(--tblr-danger);
}
.stat-icon--warning {
  background: var(--tblr-warning-light);
  color: var(--tblr-warning);
}
.stat-icon--info {
  background: var(--tblr-info-light);
  color: var(--tblr-info);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
  min-width: 0;
}

.stat-label {
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tblr-tracking-wider);
}

.stat-value {
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  line-height: 1.2;
  letter-spacing: var(--tblr-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.stat-value--danger {
  color: var(--tblr-danger-hover);
}
.stat-value .money--total .money-amount {
  font-size: 1em;
}

.stat-subvalue {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  font-variant-numeric: tabular-nums;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.dashboard-revenue-chart {
  height: 280px !important;
}

.dashboard-donut-container {
  min-height: 280px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-donut-chart {
  height: 280px !important;
}

.dashboard-donut-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, calc(-50% - var(--tblr-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  font-size: var(--tblr-text-2xl);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  line-height: 1;
  letter-spacing: var(--tblr-tracking-tight);
  font-variant-numeric: tabular-nums;
}

.dashboard-donut-label {
  display: block;
  font-size: var(--tblr-text-xs);
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--tblr-tracking-wider);
  font-weight: var(--tblr-font-semibold);
  margin-top: var(--tblr-space-1);
}

.dashboard-chart-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-8);
  text-align: center;
}

.dashboard-chart-empty-icon {
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-3);
}

.dashboard-chart-empty-text {
  color: var(--tblr-text-secondary);
  margin-bottom: var(--tblr-space-2);
}

.dashboard-chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-8);
  text-align: center;
}

.dashboard-chart-error-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-danger-light);
  color: var(--tblr-danger);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--tblr-space-3);
}
.dashboard-chart-error-icon svg {
  width: 32px;
  height: 32px;
}

.dashboard-chart-error-title {
  font-size: var(--tblr-text-base);
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  margin: 0 0 var(--tblr-space-1);
}

.dashboard-chart-error-text {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  margin: 0 0 var(--tblr-space-4);
  max-width: 42ch;
}

.attention-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-8);
  text-align: center;
}

.attention-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--tblr-radius-full);
  background: var(--tblr-success-lighter);
  color: var(--tblr-success);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--tblr-space-3);
}

.attention-empty-text {
  color: var(--tblr-text-secondary);
  margin: 0;
}

.attention-sections {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-4);
}

.attention-section:not(:last-child) {
  padding-bottom: var(--tblr-space-4);
  border-bottom: 1px solid var(--tblr-border-light);
}

.attention-section-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-xs);
  font-weight: var(--tblr-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tblr-tracking-wider);
  margin-bottom: var(--tblr-space-3);
}
.attention-section-header--danger {
  color: var(--tblr-danger);
}
.attention-section-header--warning {
  color: var(--tblr-warning-hover);
}
.attention-section-header--info {
  color: var(--tblr-info);
}
.attention-section-header--primary {
  color: var(--tblr-primary);
}

.attention-badge {
  font-size: var(--tblr-text-xs);
  padding: 2px 6px;
  border-radius: var(--tblr-radius-full);
  font-weight: var(--tblr-font-semibold);
}
.attention-badge--danger {
  background: var(--tblr-danger-light);
  color: var(--tblr-danger);
}
.attention-badge--warning {
  background: var(--tblr-warning-light);
  color: var(--tblr-warning-hover);
}
.attention-badge--info {
  background: var(--tblr-info-light);
  color: var(--tblr-info);
}
.attention-badge--primary {
  background: var(--tblr-primary-light);
  color: var(--tblr-primary);
}

.attention-items {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-3);
  border-radius: var(--tblr-radius-md);
  text-decoration: none;
  color: inherit;
  transition: background-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.attention-item:hover {
  background: var(--tblr-surface-hover);
}
.attention-item:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}
.attention-item--danger {
  background: var(--tblr-danger-lighter);
}
.attention-item--danger:hover {
  background: var(--tblr-danger-light);
}
.attention-item--danger:focus-visible {
  box-shadow: var(--tblr-ring-danger);
}

.attention-item-main {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  min-width: 0;
  flex: 1;
}

.attention-item-id {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-sm);
}

.attention-item-client {
  color: var(--tblr-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.attention-item-meta {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-3);
  flex-shrink: 0;
}

.attention-item-amount {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}

.attention-item-date {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  font-variant-numeric: tabular-nums;
}

.quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--tblr-space-3);
}

.quick-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-4);
  border-radius: var(--tblr-radius-md);
  text-decoration: none;
  transition: transform var(--tblr-transition-fast), background-color var(--tblr-transition-fast), box-shadow var(--tblr-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--tblr-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}
.quick-action-btn--primary {
  background: var(--tblr-primary-lighter);
  color: var(--tblr-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--tblr-primary-light);
}
.quick-action-btn--secondary {
  background: var(--tblr-accent-lighter);
  color: var(--tblr-accent-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--tblr-accent-light);
}
.quick-action-btn--info {
  background: var(--tblr-info-lighter);
  color: var(--tblr-info-hover);
}
.quick-action-btn--info:hover {
  background: var(--tblr-info-light);
}
.quick-action-btn--success {
  background: var(--tblr-success-lighter);
  color: var(--tblr-success-hover);
}
.quick-action-btn--success:hover {
  background: var(--tblr-success-light);
}
@media (prefers-reduced-motion: reduce) {
  .quick-action-btn, .quick-action-btn:hover {
    transition: none;
    transform: none;
  }
}

.quick-action-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-action-label {
  font-size: var(--tblr-text-sm);
  font-weight: var(--tblr-font-semibold);
  text-align: center;
}

.activity-timeline {
  display: flex;
  flex-direction: column;
}

.activity-item {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-3);
  padding: var(--tblr-space-4) 0;
  border-bottom: 1px solid var(--tblr-border-light);
}
.activity-item:last-child {
  border-bottom: none;
}

.activity-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--tblr-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.activity-icon--payment {
  background: var(--tblr-success-light);
  color: var(--tblr-success);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--tblr-primary-light);
  color: var(--tblr-primary);
}
.activity-icon--quote_accepted {
  background: var(--tblr-success-light);
  color: var(--tblr-success);
}
.activity-icon--quote_declined {
  background: var(--tblr-danger-light);
  color: var(--tblr-danger);
}
.activity-icon--recurring_generated {
  background: var(--tblr-info-light);
  color: var(--tblr-info);
}

.activity-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.activity-description {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
  line-height: 1.4;
}

.activity-text {
  color: var(--tblr-text-secondary);
  font-size: var(--tblr-text-base);
}

.activity-doc-link {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-primary);
  text-decoration: none;
  font-family: var(--tblr-font-mono);
  font-size: var(--tblr-text-sm);
  border-radius: var(--tblr-radius-sm);
}
.activity-doc-link:hover {
  text-decoration: underline;
  color: var(--tblr-primary-dark);
}
.activity-doc-link:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
}

.activity-details {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  flex-wrap: wrap;
  font-size: var(--tblr-text-sm);
}

.activity-client-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--tblr-text-secondary);
  text-decoration: none;
  border-radius: var(--tblr-radius-sm);
  transition: color var(--tblr-transition-fast);
}
.activity-client-link:hover {
  color: var(--tblr-primary);
}
.activity-client-link:focus-visible {
  outline: none;
  box-shadow: var(--tblr-ring-primary);
  color: var(--tblr-primary);
}
.activity-client-link svg {
  opacity: 0.6;
}

.activity-separator {
  color: var(--tblr-text-muted);
}

.activity-amount {
  font-weight: var(--tblr-font-semibold);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}

.activity-time {
  color: var(--tblr-text-muted);
}

/**
 * Client Page Styles
 *
 * Custom styles for the Client view page.
 * Follows the design system tokens and modern SaaS aesthetic.
 */
.client-hero {
  padding: var(--tblr-space-6);
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-lg);
  border: 1px solid var(--tblr-border-light);
  box-shadow: var(--tblr-shadow-sm);
  margin-bottom: var(--tblr-space-6);
}

.client-hero-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
  line-height: 1.2;
}

.client-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--tblr-space-4);
  color: var(--tblr-text-muted);
  font-size: 0.875rem;
}
.client-hero-meta a {
  color: var(--tblr-text-muted);
  text-decoration: none;
  transition: color var(--tblr-transition-fast);
}
.client-hero-meta a:hover {
  color: var(--tblr-primary);
}

.client-hero-meta-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-1-5);
}

.client-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--tblr-text-muted);
  margin-bottom: var(--tblr-space-2);
}

.client-stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.client-stat-value--success {
  color: var(--tblr-success);
}

.client-stat-value--warning,
.client-stat-value--danger {
  color: var(--tblr-warning);
}

.client-stat-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--tblr-space-2);
  margin-top: var(--tblr-space-2);
}

.client-credit-card {
  margin-bottom: var(--tblr-space-6);
}
.client-credit-card .card-body {
  padding: var(--tblr-space-5);
}

.client-credit-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--tblr-radius-lg);
  background: var(--tblr-info-lighter);
  color: var(--tblr-info);
}

.client-credit-amount {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
}

.client-credit-label {
  font-size: 0.75rem;
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.client-tabs-card .card-header {
  padding-bottom: 0;
  border-bottom: none;
}
.client-tabs-card {
  /* .nav-tabs {
      border-bottom: 1px solid var(--tblr-border);
      margin: 0 calc(-1 * var(--tblr-space-6));
      padding: 0 var(--tblr-space-6);
  } */
}
.client-tabs-card .nav-link {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--tblr-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--tblr-transition-fast), border-color var(--tblr-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--tblr-primary);
  border-bottom-color: rgba(46, 150, 58, 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--tblr-primary);
  border-bottom-color: var(--tblr-primary);
}
.client-tabs-card .nav-link .badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.2em 0.5em;
}
.client-tabs-card .tab-content {
  padding-top: var(--tblr-space-4);
}

.client-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--tblr-space-4);
}

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
}
.client-section-title .badge {
  font-size: 0.7rem;
  font-weight: 600;
}

.client-contact-card,
.client-address-card {
  height: 100%;
  transition: box-shadow var(--tblr-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--tblr-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: transparent;
  border-bottom: 1px solid var(--tblr-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--tblr-space-4);
}

.client-contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--tblr-radius-md);
  background: var(--tblr-primary-lighter);
  color: var(--tblr-primary);
  font-size: 0.875rem;
}

.client-contact-name {
  font-weight: 500;
  color: var(--tblr-text-primary);
}

.client-contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--tblr-space-2);
  margin-bottom: var(--tblr-space-2);
}
.client-contact-detail:last-child {
  margin-bottom: 0;
}

.client-contact-detail-icon {
  color: var(--tblr-text-muted);
  flex-shrink: 0;
  margin-top: 2px;
}

.client-contact-detail-label {
  font-size: 0.75rem;
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.client-contact-detail-value {
  color: var(--tblr-text-primary);
}
.client-contact-detail-value a {
  color: var(--tblr-primary);
  text-decoration: none;
}
.client-contact-detail-value a:hover {
  text-decoration: underline;
}

.btn-icon-sm {
  width: 28px;
  height: 28px;
  padding: var(--tblr-space-1);
}

.btn-ghost-secondary {
  color: var(--tblr-text-secondary);
  background: transparent;
  border: none;
}
.btn-ghost-secondary:hover {
  color: var(--tblr-text-primary);
  background: var(--tblr-gray-100);
}
.btn-ghost-secondary:focus {
  box-shadow: var(--tblr-ring-primary);
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--tblr-space-2);
  margin-top: var(--tblr-space-4);
  padding-top: var(--tblr-space-4);
  border-top: 1px solid var(--tblr-border-light);
}

.client-address-text {
  white-space: pre-line;
  color: var(--tblr-text-primary);
  line-height: 1.5;
  margin-bottom: var(--tblr-space-3);
}

.client-address-map-link {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1-5);
  font-size: 0.875rem;
}

.client-contact-extra {
  margin-top: var(--tblr-space-3);
  padding-top: var(--tblr-space-3);
  border-top: 1px solid var(--tblr-border-light);
}

.client-contact-extra-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--tblr-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: var(--tblr-space-2);
}

.client-contact-extra-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: 0.875rem;
  margin-bottom: var(--tblr-space-1);
}
.client-contact-extra-item:last-child {
  margin-bottom: 0;
}

.client-contact-extra-label {
  color: var(--tblr-text-muted);
  min-width: 80px;
}

.client-contact-extra-value {
  color: var(--tblr-text-primary);
}

.custom-fields-card .card-header {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: transparent;
  border-bottom: 1px solid var(--tblr-border-light);
}
.custom-fields-card .card-body {
  padding: var(--tblr-space-2) var(--tblr-space-4);
}

.custom-fields-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-1);
}

.custom-fields-item {
  display: grid;
  grid-template-columns: minmax(140px, 30%) 1fr;
  gap: var(--tblr-space-3);
  align-items: baseline;
  padding: var(--tblr-space-2) 0;
  border-bottom: 1px solid var(--tblr-border-light);
}
.custom-fields-item:last-child {
  border-bottom: none;
}

.custom-fields-label {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1-5);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--tblr-text-muted);
  margin: 0;
  text-transform: none;
  letter-spacing: 0;
}

.custom-fields-value {
  font-size: 0.875rem;
  color: var(--tblr-text-primary);
  word-break: break-all;
}
.custom-fields-value a {
  color: var(--tblr-primary);
  text-decoration: none;
}
.custom-fields-value a:hover {
  text-decoration: underline;
}
.custom-fields-value .badge {
  margin-right: var(--tblr-space-1);
  font-weight: 500;
}

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--tblr-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--tblr-space-4);
  }
  .client-hero-title {
    font-size: 1.5rem;
  }
  .client-stat-value {
    font-size: 1.5rem;
  }
}
@media (width <= 767.98px) {
  .client-hero {
    text-align: center;
  }
  .client-hero-meta {
    justify-content: center;
  }
  .client-tabs-card .nav-tabs {
    margin: 0 calc(-1 * var(--tblr-space-4));
    padding: 0 var(--tblr-space-4);
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .client-tabs-card .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .client-tabs-card .nav-item {
    flex-shrink: 0;
  }
  .client-section-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--tblr-space-2);
  }
}
@media print {
  .client-hero .dropdown,
  .client-hero .btn,
  .client-section-header .btn,
  .btn-ghost-secondary,
  .btn-ghost-danger,
  .client-form-actions {
    display: none !important;
  }
  .client-hero {
    box-shadow: none;
    border: 1px solid #DDDDDD;
  }
}
/**
 * Invoice View Page
 *
 * All shared document view styles are in components/_document-view.scss.
 * Invoice-specific recurring invoice styles are also in that shared component.
 */
.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
}

.schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--tblr-space-2);
}

.recurring-schedule-label {
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-muted);
  flex-shrink: 0;
}

.schedule-value {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm, 0.875rem);
  color: var(--tblr-text-secondary);
}
.occurrence-item svg {
  opacity: 0.6;
  flex-shrink: 0;
}

.occurrence-date {
  color: var(--tblr-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}

.generated-invoice-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--tblr-space-2);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  background: var(--tblr-gray-50);
  border-radius: var(--tblr-radius-sm);
}

.generated-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-primary);
  text-decoration: none;
}
.generated-invoice-link:hover {
  color: var(--tblr-primary-dark);
  text-decoration: underline;
}

.generated-invoice-id {
  font-weight: var(--tblr-font-semibold, 600);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
}

.generated-invoice-amount {
  font-size: var(--tblr-text-sm, 0.875rem);
  font-weight: var(--tblr-font-medium, 500);
  color: var(--tblr-text-primary);
  font-variant-numeric: tabular-nums;
}

/**
 * External Invoice View
 *
 * Invoice-specific styles for the public-facing invoice page.
 * All shared external document styles are in components/_external-doc-view.scss.
 */
.btn-invoice-action {
  padding: 0.75rem 1.25rem;
  font-weight: 500;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}
.btn-invoice-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.btn-invoice-action:active {
  transform: translateY(0);
}

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

@media print {
  .btn-invoice-action:hover {
    box-shadow: none !important;
    transform: none !important;
  }
}
/**
 * External Quote View
 *
 * All shared external document styles (including quote styles) are in
 * components/_external-doc-view.scss.
 *
 * There are currently no quote-specific styles beyond what is shared.
 */
/**
 * Quote View Page - Quote-Specific Styles
 *
 * Shared document layout is in components/_document-view.scss.
 * This file is intentionally minimal - all shared doc view styles are in the component.
 */
/**
 * Payment Marketplace Styles
 * Only payment-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.payment-marketplace {
  padding-bottom: var(--tblr-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--tblr-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  font-size: var(--tblr-text-sm);
  font-weight: 500;
  color: var(--tblr-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  transition: var(--tblr-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--tblr-primary);
  border-bottom-color: rgba(var(--tblr-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--tblr-primary);
  border-bottom-color: var(--tblr-primary);
  background: transparent;
}
.payment-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.gateway-grid {
  display: grid;
  gap: var(--tblr-space-3);
}

.gateway-card {
  background: var(--tblr-surface);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  position: relative;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
}
.gateway-card:hover {
  border-color: var(--tblr-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--tblr-primary);
  transform: translateY(-2px);
}
.gateway-card:hover .gateway-icon {
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, var(--tblr-primary) 100%);
  color: var(--tblr-primary);
  box-shadow: 0 4px 8px rgba(var(--tblr-primary-rgb), 0.2);
}
.gateway-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.05) 0%, rgba(var(--tblr-success-rgb), 0.02) 100%);
  border-color: rgba(var(--tblr-success-rgb), 0.3);
}
.gateway-card.is-configured .gateway-icon {
  background: linear-gradient(135deg, var(--tblr-success-light) 0%, var(--tblr-success) 100%);
  color: #ffffff;
}
.gateway-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.08) 0%, rgba(var(--tblr-success-rgb), 0.04) 100%);
  border-color: var(--tblr-success);
}
.gateway-card.is-custom-gateway {
  background: linear-gradient(135deg, rgba(var(--tblr-primary-rgb), 0.04) 0%, rgba(var(--tblr-primary-rgb), 0.01) 100%);
  border: 2px dashed rgba(var(--tblr-primary-rgb), 0.3);
  position: relative;
  margin-bottom: var(--tblr-space-6);
}
.gateway-card.is-custom-gateway::after {
  content: "";
  position: absolute;
  bottom: calc(-1 * var(--tblr-space-6) / 2);
  left: var(--tblr-space-4);
  right: var(--tblr-space-4);
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--tblr-border) 15%, var(--tblr-border) 85%, transparent 100%);
}
.gateway-card.is-custom-gateway::before {
  content: "";
  position: absolute;
  inset: -2px;
  background: linear-gradient(135deg, var(--tblr-primary), var(--tblr-primary-dark));
  border-radius: var(--tblr-radius-lg);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.2s ease;
}
.gateway-card.is-custom-gateway .gateway-icon {
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.2) 100%);
  color: var(--tblr-primary);
  border: 2px solid rgba(var(--tblr-primary-rgb), 0.2);
}
.gateway-card.is-custom-gateway:hover {
  background: linear-gradient(135deg, rgba(var(--tblr-primary-rgb), 0.08) 0%, rgba(var(--tblr-primary-rgb), 0.02) 100%);
  border-color: var(--tblr-primary);
  border-style: solid;
}
.gateway-card.is-custom-gateway:hover::before {
  opacity: 0.08;
}
.gateway-card.is-custom-gateway:hover .gateway-icon {
  background: linear-gradient(135deg, var(--tblr-primary) 0%, var(--tblr-primary-dark) 100%);
  color: #ffffff;
  border-color: var(--tblr-primary);
}
.gateway-card .gateway-card-body {
  padding: var(--tblr-space-4);
}
.gateway-card .gateway-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: linear-gradient(135deg, var(--tblr-gray-100) 0%, var(--tblr-gray-200) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.gateway-card h6 {
  font-size: var(--tblr-text-base);
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.gateway-card .text-muted {
  font-size: var(--tblr-text-sm);
  line-height: 1.5;
  color: var(--tblr-text-muted);
}
.gateway-card .btn {
  font-size: var(--tblr-text-sm);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
}
.gateway-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--tblr-primary-rgb), 0.2);
}
.gateway-card .badge-sm {
  font-size: 0.625rem;
  padding: 0.2rem 0.5rem;
  font-weight: 600;
  border-radius: var(--tblr-radius-full);
  letter-spacing: 0.02em;
}

.active-methods-panel h5 {
  font-size: var(--tblr-text-lg);
  font-weight: 600;
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}
.active-methods-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--tblr-radius-full);
  background: linear-gradient(135deg, var(--tblr-gray-100) 0%, var(--tblr-gray-200) 100%);
  color: var(--tblr-text-primary);
  border: 1px solid var(--tblr-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.active-methods-list {
  display: grid;
  gap: var(--tblr-space-3);
}

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--tblr-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--tblr-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--tblr-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--tblr-primary-rgb), 0.15);
  color: var(--tblr-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--tblr-primary);
  color: var(--tblr-primary);
  background: rgba(var(--tblr-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--tblr-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.active-method-card .payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-gray-100) 0%, var(--tblr-gray-200) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.active-method-card .payment-method-icon svg {
  width: 28px;
  height: 28px;
}
.active-method-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  border-radius: var(--tblr-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--tblr-success) 0%, var(--tblr-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--tblr-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--tblr-gray-400) 0%, var(--tblr-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--tblr-space-2) var(--tblr-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--tblr-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.active-method-card .btn:hover {
  transform: translateY(-1px);
}
.active-method-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.active-method-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.payment-marketplace .card-header .d-flex {
  width: 100%;
}
.payment-marketplace .card-header .d-flex > div:first-child {
  flex: 1;
}
.payment-marketplace .card-header .d-flex .btn-icon {
  flex-shrink: 0;
}
.payment-marketplace form .form-switch-field + .form-switch-field {
  margin-top: var(--tblr-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--tblr-space-3);
}

.payment-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.payment-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 920px;
  max-height: calc(100vh - var(--tblr-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.payment-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--tblr-space-6);
  border-bottom: 1px solid var(--tblr-border);
  flex-shrink: 0;
}

.payment-modal-title {
  font-size: var(--tblr-text-xl);
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin: 0;
}

.payment-modal-close {
  flex-shrink: 0;
  margin-left: var(--tblr-space-4);
}

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--tblr-space-6);
}
.payment-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.payment-modal-body > div > .card .card-header {
  display: none;
}
.payment-modal-body > div > .card .card-body {
  padding: 0;
}
.payment-modal-body > div > .card .card-footer {
  padding: var(--tblr-space-6) 0 0 0;
  border-top: 1px solid var(--tblr-border);
  margin-top: var(--tblr-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .payment-modal {
    padding: 0;
    align-items: flex-end;
  }
  .payment-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: marketplace-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes marketplace-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.payment-modal) {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--tblr-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--tblr-space-3);
  }
  .active-method-card .d-flex .btn-group,
  .active-method-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .active-method-card .d-flex .btn-group .btn,
  .active-method-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .payment-marketplace > .nav-tabs {
    margin-left: calc(var(--tblr-space-4) * -1);
    margin-right: calc(var(--tblr-space-4) * -1);
    padding-left: var(--tblr-space-4);
    padding-right: var(--tblr-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .payment-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .payment-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
}
@media print {
  .payment-marketplace .nav-tabs,
  .payment-marketplace .marketplace-panel,
  .payment-marketplace .btn {
    display: none !important;
  }
  .payment-marketplace .active-method-card {
    break-inside: avoid;
  }
}
.gateway-group {
  margin-bottom: var(--tblr-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--tblr-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--tblr-border-light);
  padding-top: var(--tblr-space-3);
}
.gateway-group--more > summary {
  cursor: pointer;
  list-style: none;
}
.gateway-group--more > summary::-webkit-details-marker {
  display: none;
}
.gateway-group--more > summary:hover h6 {
  color: var(--tblr-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--tblr-space-1);
}
.payment-gateway-about .payment-gateway-compare summary {
  cursor: pointer;
  list-style: none;
}
.payment-gateway-about .payment-gateway-compare summary::-webkit-details-marker {
  display: none;
}

/**
 * Notification Marketplace Styles
 * Notification-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.notification-marketplace {
  padding-bottom: var(--tblr-space-8);
}

.notification-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--tblr-border);
}
.notification-marketplace > .nav-tabs .nav-link {
  padding: var(--tblr-space-3) var(--tblr-space-4);
  font-size: var(--tblr-text-sm);
  font-weight: 500;
  color: var(--tblr-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  transition: var(--tblr-transition-colors);
}
.notification-marketplace > .nav-tabs .nav-link:hover {
  color: var(--tblr-primary);
  border-bottom-color: rgba(var(--tblr-primary-rgb), 0.3);
}
.notification-marketplace > .nav-tabs .nav-link.active {
  color: var(--tblr-primary);
  border-bottom-color: var(--tblr-primary);
  background: transparent;
}
.notification-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.marketplace-tabs {
  border-bottom: 2px solid var(--tblr-border);
  margin-bottom: 0;
}
.marketplace-tabs .nav-item {
  flex: 1;
}
.marketplace-tabs .nav-link {
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--tblr-text-secondary);
  font-weight: 600;
  padding: var(--tblr-space-3) var(--tblr-space-4);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
}
.marketplace-tabs .nav-link .nav-link-icon {
  display: flex;
  align-items: center;
}
.marketplace-tabs .nav-link:hover:not(.active) {
  color: var(--tblr-primary-hover);
  background: rgba(var(--tblr-primary-rgb), 0.05);
}
.marketplace-tabs .nav-link.active {
  color: var(--tblr-primary);
  border-bottom-color: var(--tblr-primary);
  background: transparent;
}

.integration-section-header {
  display: flex;
  align-items: center;
  gap: var(--tblr-space-2);
  font-size: var(--tblr-text-sm);
  font-weight: 600;
  color: var(--tblr-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--tblr-space-3);
  padding-bottom: var(--tblr-space-2);
  border-bottom: 1px solid var(--tblr-border-light);
}

.integration-section {
  margin-bottom: var(--tblr-space-6);
}
.integration-section:last-child {
  margin-bottom: 0;
}

.integration-cards-grid {
  display: grid;
  gap: var(--tblr-space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .integration-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.integration-card {
  background: var(--tblr-surface);
  border: 1.5px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.integration-card:hover {
  border-color: var(--tblr-primary);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
}
.integration-card:hover .integration-card-icon {
  background: linear-gradient(135deg, var(--tblr-primary-light), rgba(var(--tblr-primary-rgb), 0.2));
  color: var(--tblr-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--tblr-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.03), rgba(var(--tblr-success-rgb), 0.01));
  border-color: rgba(var(--tblr-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--tblr-success-light), var(--tblr-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--tblr-success-rgb), 0.05), rgba(var(--tblr-success-rgb), 0.02));
  border-color: var(--tblr-success);
}
.integration-card .integration-card-body {
  padding: var(--tblr-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--tblr-gray-100), var(--tblr-gray-200));
  border-radius: var(--tblr-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  transition: all 0.25s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.integration-card .integration-card-icon svg {
  width: 32px;
  height: 32px;
}
.integration-card .integration-card-content {
  flex: 1;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--tblr-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--tblr-text-base);
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--tblr-text-sm);
  color: var(--tblr-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.integration-card .integration-card-action {
  margin-top: auto;
}
.integration-card .integration-card-action .btn {
  font-size: var(--tblr-text-sm);
  padding: var(--tblr-space-2) var(--tblr-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--tblr-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--tblr-text-lg);
  font-weight: 600;
  color: var(--tblr-text-primary);
  letter-spacing: -0.01em;
}
.configured-integrations-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--tblr-radius-full);
  background: linear-gradient(135deg, var(--tblr-gray-100) 0%, var(--tblr-gray-200) 100%);
  color: var(--tblr-text-primary);
  border: 1px solid var(--tblr-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.configured-integrations-list {
  display: grid;
  gap: var(--tblr-space-3);
}

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--tblr-border-light);
  border-radius: var(--tblr-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--tblr-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--tblr-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--tblr-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--tblr-primary-light) 0%, rgba(var(--tblr-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--tblr-primary-rgb), 0.15);
  color: var(--tblr-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--tblr-primary);
  color: var(--tblr-primary);
  background: rgba(var(--tblr-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--tblr-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.configured-integration-card .integration-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--tblr-gray-100) 0%, var(--tblr-gray-200) 100%);
  border-radius: var(--tblr-radius-lg);
  color: var(--tblr-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.configured-integration-card .integration-method-icon svg {
  width: 28px;
  height: 28px;
}
.configured-integration-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--tblr-space-1);
  border-radius: var(--tblr-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--tblr-space-2) var(--tblr-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--tblr-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.configured-integration-card .btn:hover {
  transform: translateY(-1px);
}
.configured-integration-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.configured-integration-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.notification-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.notification-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--tblr-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--tblr-surface);
  border-radius: var(--tblr-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - var(--tblr-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.notification-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--tblr-space-6);
  border-bottom: 1px solid var(--tblr-border);
  flex-shrink: 0;
}

.notification-modal-title {
  font-size: var(--tblr-text-xl);
  font-weight: 600;
  color: var(--tblr-text-primary);
  margin: 0;
}

.notification-modal-close {
  flex-shrink: 0;
  margin-left: var(--tblr-space-4);
}

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--tblr-space-6);
}
.notification-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.notification-modal-body > div > .card .card-header {
  display: none;
}
.notification-modal-body > div > .card .card-body {
  padding: 0;
}
.notification-modal-body > div > .card .card-footer {
  padding: var(--tblr-space-6) 0 0 0;
  border-top: 1px solid var(--tblr-border);
  margin-top: var(--tblr-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--tblr-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--tblr-space-3);
  }
  .configured-integration-card .d-flex .btn-group,
  .configured-integration-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .configured-integration-card .d-flex .btn-group .btn,
  .configured-integration-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .notification-marketplace > .nav-tabs {
    margin-left: calc(var(--tblr-space-4) * -1);
    margin-right: calc(var(--tblr-space-4) * -1);
    padding-left: var(--tblr-space-4);
    padding-right: var(--tblr-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .notification-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .notification-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
  .notification-modal {
    padding: 0;
    align-items: flex-end;
  }
  .notification-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: notification-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes notification-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.notification-modal) {
  overflow: hidden;
}

@media print {
  .notification-marketplace .nav-tabs,
  .notification-marketplace .marketplace-panel,
  .notification-marketplace .btn {
    display: none !important;
  }
  .notification-marketplace .configured-integration-card {
    break-inside: avoid;
  }
}
/* .nav-link.active {
    background-color: #eef2ff;
    color: #4f46e5;
    border-radius: 8px;
    font-weight: 600;
} */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7O0VBQUE7QUFrQkE7RUFNSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFTQTtFQUNBO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0FGakRKOztBRXdEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGckRKOztBRTREQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGekRKOztBRWdFQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7QUZwRUo7O0FFMkVBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUdBOzttRUFBQTtFQUdBO0VBQ0E7RUFDQTtBRi9FSjs7QUVzRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGbkZKOztBRTBGQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFLQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBSUE7QUY1R0o7O0FHbk5BOzs7OztFQUFBO0FBV0E7RUFFSTs7O3FDQUFBO0VBTUE7d0VBQUE7RUFJQTtBSDRNSjs7QUdyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHdNSjs7QUdqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhvTUo7O0FHN0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIZ01KOztBR3pMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDRMSjs7QUduTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIc0xKOztBR2pMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIb0xKOztBRy9LQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIa0xKOztBRzdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIZ0xKOztBRzNLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIOEtKO0FHNUtJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUg4S1I7O0FHeEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUgyS0o7O0FHdEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUh5S0o7O0FHcEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUh1S0o7O0FHbEtBO0VBQ0k7RUFDQTtBSHFLSjs7QUdoS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhtS0o7O0FHOUpBO0VBQ0k7RUFDQTtBSGlLSjs7QUc1SkE7RUFDSTtBSCtKSjs7QUcxSkE7RUFDSTtFQUNBO0VBQ0E7QUg2Sko7QUczSkk7RUFDSTtFQUNBO0FINkpSOztBR3ZKQTtFQUNJO0VBQ0E7RUFDQTtBSDBKSjs7QUdySkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSHdKSjs7QUdySkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSHdKSjs7QUl2WUE7Ozs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUFxQkE7RUFDSTtBTDhZSjs7QUt2WUE7RUFDSTtFQUNBO0FMMFlKO0FLeFlJO0VBQVk7QUwyWWhCO0FLellJO0VBQVk7QUw0WWhCO0FLMVlJO0VBQVk7QUw2WWhCOztBS3RZQTtFQUNJO0VBQ0E7QUx5WUo7O0FLdFlBO0VBQ0k7RUFDQTtFQUNBO0FMeVlKOztBS3RZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHlZSjtBS3ZZSTtFQUNJO0VBQ0E7QUx5WVI7O0FLcllBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHdZSjs7QUtyWUE7RUFDSTtFQUNBO0VBQ0E7QUx3WUo7O0FLallBO0VBQ0k7RUFDQTtFQUNBO0FMb1lKOztBSzdYQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxnWUo7QUs3WEk7RUFDSTtBTCtYUjtBSzVYSTtFQUNJO0VBQ0E7QUw4WFI7O0FLdFhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMeVhKOztBS3RYQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHlYSjtBS3ZYSTtFQUNJO0VBQ0E7QUx5WFI7O0FLclhBO0VBQ0k7RUFDQTtBTHdYSjs7QUtyWEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUx3WEo7O0FLclhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUx3WEo7O0FLalhBO0VBQ0k7QUxvWEo7O0FLN1dBO0VBQ0k7RUFDQTtFQUNBO0FMZ1hKO0FLOVdJO0VBTEo7SUFNUTtJQUNBO0VMaVhOO0FBQ0Y7O0FLOVdBO0VBQ0k7RUFDQTtBTGlYSjs7QUs5V0E7RUFDSTtBTGlYSjs7QUsxV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTDZXSjs7QUsxV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUw2V0o7QUszV0k7RUFBWTtBTDhXaEI7O0FLdldBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTDBXSjtBS3hXSTs7RUFDSTtFQUNBO0FMMldSO0FLeFdJOztFQUNJO0FMMldSOztBS25XQTtFQUVJO0lBQ0k7RUxxV047RUtsV0U7SUFDSTtJQUNBO0VMb1dOO0VLaldFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUxtV047RUtoV0U7SUFDSTtJQUNBO0VMa1dOO0VLL1ZFO0lBQ0k7RUxpV047RUs5VkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFTGdXTjtFSzdWRTtJQUNJO0lBQ0E7RUwrVk47RUs1VkU7SUFDSTtFTDhWTjtFSzNWRTtJQUNJO0VMNlZOO0VLM1ZNO0lBQ0k7RUw2VlY7QUFDRjtBS3JWQTtFQUVJO0lBQ0k7RUxzVk47RUtuVkU7SUFDSTtFTHFWTjtFS2xWRTtJQUNJO0VMb1ZOO0FBQ0Y7QU0zcEJBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0FOd3BCSjs7QU1qcEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOb3BCSjtBTWxwQkk7RUFYSjtJQVlRO0lBQ0E7RU5xcEJOO0FBQ0Y7O0FNbHBCQTtFQUNJO0VBQ0E7RUFDQTtBTnFwQko7O0FNbHBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5xcEJKOztBTWxwQkE7RUFDSTtFQUNBO0VBQ0E7QU5xcEJKOztBTWxwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcXBCSjs7QU1scEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5xcEJKOztBTWxwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcXBCSjtBTW5wQkk7RUFDSTtBTnFwQlI7O0FNL29CQTtFQUNJO0VBQ0E7RUFDQTtBTmtwQko7QU1ocEJJO0VBTEo7SUFNUTtJQUNBO0VObXBCTjtBQUNGOztBTWhwQkE7RUFDSTtFQUNBO0VBQ0E7QU5tcEJKOztBTTlvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOaXBCSjtBTS9vQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5pcEJSO0FNL29CUTtFQUNJO0FOaXBCWjtBTTlvQlE7RUFDSTtBTmdwQlo7QU03b0JRO0VBQ0k7QU4rb0JaO0FNM29CSTtFQUNJO0VBQ0E7QU42b0JSOztBTXJvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd29CSjtBTXRvQkk7RUFDSTtFQUNBO0FOd29CUjtBTXJvQkk7RUFDSTtBTnVvQlI7O0FNbm9CQTtFQUNJO0VBQ0E7RUFDQTtBTnNvQko7QU1wb0JJO0VBQ0k7RUFDQTtBTnNvQlI7O0FNOW5CQTtFQUNJO0VBQ0E7RUFDQTtBTmlvQko7QU0vbkJJO0VBTEo7SUFNUTtFTmtvQk47QUFDRjs7QU0zbkJBO0VBQ0k7QU44bkJKOztBTTNuQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjhuQko7O0FNeG5CQTs7OztFQUlJO0VBQ0E7RUFDQTtFQUNBO0FOMm5CSjtBTXJuQkk7Ozs7RUFDSTtFQUNBO0FOMG5CUjs7QU1wbkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOdW5CSjtBTXJuQkk7RUFSSjtJQVNRO0lBQ0E7RU53bkJOO0FBQ0Y7O0FNcm5CQTtFQUNJO0VBQ0E7RUFDQTtBTnduQko7O0FNcm5CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU53bkJKOztBTXJuQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnduQko7O0FNcm5CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnduQko7QU10bkJJO0VBQ0k7RUFDQTtFQUNBO0FOd25CUjtBTXJuQkk7RUFDSTtFQUNBO0FOdW5CUjtBTXJuQlE7RUFDSTtFQUNBO0FOdW5CWjtBTW5uQkk7RUFDSTtBTnFuQlI7QU1sbkJJO0VBQ0k7QU5vbkJSO0FNbG5CUTtFQUNJO0VBQ0E7QU5vbkJaOztBTTdtQkE7RUFDSTtBTmduQko7QU05bUJJO0VBSEo7SUFJUTtFTmluQk47QUFDRjs7QU05bUJBO0VBQ0k7RUFDQTtBTmluQko7QU03bUJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOK21CWjtBTTdtQlk7RUFJSTtBTjRtQmhCO0FNdm1CUTtFQXRCSjtJQXVCUTtFTjBtQlY7QUFDRjtBTXJtQlE7RUFDSTtBTnVtQlo7QU1ybUJZO0VBQ0k7QU51bUJoQjtBTW5tQlk7RUFSSjtJQVNRO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTnNtQmQ7RU1wbUJjO0lBQ0k7RU5zbUJsQjtFTW5tQmM7SUFDSTtFTnFtQmxCO0FBQ0Y7QU1qbUJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTm1tQlo7QU1qbUJZO0VBQ0k7RUFDQTtBTm1tQmhCO0FNaG1CWTtFQUlJO0VBQ0E7RUFDQTtBTitsQmhCO0FNNWxCWTtFQUNJO0VBQ0E7QU44bEJoQjtBTTFsQlk7RUEzQko7SUE0QlE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VONmxCZDtFTTNsQmM7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU42bEJsQjtFTTFsQmM7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU40bEJsQjtFTTFsQmtCO0lBQ0k7RU40bEJ0QjtFTXhsQmM7SUFDSTtJQUNBO0VOMGxCbEI7QUFDRjtBTXBsQkk7RUFFSTtJQUNJO0VOcWxCVjtFTWxsQk07SUFDSTtFTm9sQlY7RU1qbEJNO0lBQ0k7RU5tbEJWO0VNaGxCTTtJQUNJO0VOa2xCVjtFTS9rQk07SUFDSTtFTmlsQlY7QUFDRjs7QU0za0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44a0JKOztBTTNrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjhrQko7O0FNM2tCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU44a0JKO0FNNWtCSTtFQUNJO0VBQ0E7QU44a0JSO0FNM2tCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU42a0JSOztBTXZrQkE7RUFDSTtBTjBrQko7O0FNcmtCQTtFQUNJO0FOd2tCSjs7QU1ya0JBO0VBQ0k7RUFDQTtFQUNBO0FOd2tCSjtBTXRrQkk7RUFDSTtFQUNBO0VBQ0E7QU53a0JSO0FNbGtCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOb2tCUjs7QU05akJBO0VBQ0k7RUFDQTtFQUNBO0FOaWtCSjs7QU01akJJO0VBQ0k7RUFDQTtFQUNBO0FOK2pCUjs7QU0zakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44akJKOztBTTNqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOOGpCSjs7QU12akJBO0VBQ0k7RUFDQTtFQUNBO0FOMGpCSjtBTXhqQkk7RUFMSjtJQU1RO0lBQ0E7RU4yakJOO0FBQ0Y7O0FNeGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOMmpCSjs7QU14akJBO0VBQ0k7QU4yakJKOztBTXhqQkE7RUFDSTtBTjJqQko7O0FNeGpCQTtFQUNJO0FOMmpCSjs7QU14akJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjJqQko7O0FNeGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4yakJKOztBTXhqQkE7RUFDSTtFQUNBO0FOMmpCSjs7QU14akJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU4yakJKOztBTXhqQkE7RUFDSTtBTjJqQko7O0FNdGpCQTtFQUNJO0VBQ0E7RUFDQTtBTnlqQko7O0FNcGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOdWpCSjtBTXJqQkk7RUFDSTtFQUNBO0FOdWpCUjtBTXBqQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnNqQlI7QU1oakJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5rakJSO0FNN2lCSTtFQUNJO0VBQ0E7QU4raUJSOztBTTNpQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjhpQko7QU01aUJJO0VBQ0k7QU44aUJSOztBTXhpQkk7RUFDSTtBTjJpQlI7O0FNcmlCQTtFQUNJO0VBQ0E7RUFDQTtBTndpQko7O0FNcmlCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOd2lCSjtBTXRpQkk7RUFDSTtFQUNBO0FOd2lCUjs7QU1waUJBO0VBQ0k7RUFDQTtFQUNBO0FOdWlCSjs7QU1waUJBO0VBQ0k7RUFDQTtFQUNBO0FOdWlCSjs7QU1waUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU51aUJKOztBTXBpQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnVpQko7QU1yaUJJOztFQUNJO0FOd2lCUjs7QU1saUJBO0VBQ0k7RUFDQTtFQUNBO0FOcWlCSjs7QU1saUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFpQko7O0FNbGlCQTtFQUNJO0VBQ0E7QU5xaUJKOztBTWxpQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnFpQko7O0FNbGlCQTtFQUNJO0VBQ0E7RUFDQTtBTnFpQko7O0FNbGlCQTtFQUNJO0VBQ0E7RUFDQTtBTnFpQko7O0FNbGlCQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcWlCSjtBTW5pQkk7O0VBQ0k7QU5zaUJSOztBTWxpQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnFpQko7O0FNaGlCQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTm1pQko7QU1qaUJJOztFQUNJO0VBQ0E7QU5vaUJSOztBTWhpQkE7RUFDSTtBTm1pQko7O0FNNWhCQTtFQUVJO0lBQ0k7SUFDQTtJQUNBO0VOOGhCTjtFTTNoQkU7SUFDSTtFTjZoQk47RU0xaEJFO0lBQ0k7RU40aEJOO0VNemhCRTtJQUNJO0lBQ0E7RU4yaEJOO0VNeGhCRTtJQUNJO0lBQ0E7RU4waEJOO0VNcmhCTTtJQUNJO0lBQ0E7SUFDQTtFTnVoQlY7RU1uaEJFO0lBQ0k7SUFDQTtJQUNBO0VOcWhCTjtFTWxoQkU7SUFDSTtJQUNBO0lBQ0E7RU5vaEJOO0VNamhCRTtJQUNJO0VObWhCTjtBQUNGO0FPaDVDQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7QVA2NENKOztBT3Q0Q0E7RUFDSTtFQUNBO0FQeTRDSjtBT3I0Q1E7RUFDSTtFQUNBO0VBQ0E7QVB1NENaO0FPbjRDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQcTRDUjtBT2w0Q0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUG80Q1I7O0FPNTNDQTtFQUNJO0VBQ0E7RUFDQTtBUCszQ0o7QU83M0NJO0VBQ0k7QVArM0NSO0FPNTNDSTtFQUNJO0FQODNDUjs7QU9wM0NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB1M0NKOztBT2wzQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQcTNDSjs7QU9sM0NBO0VBQ0k7RUFDQTtFQUNBO0FQcTNDSjs7QU9oM0NBO0VBQ0k7RUFDQTtBUG0zQ0o7O0FPNTJDSTtFQUNJO0VBQ0E7RUFDQTtBUCsyQ1I7O0FPdjJDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQMDJDSjtBT3gyQ0k7RUFDSTtBUDAyQ1I7QU92MkNJO0VBQ0k7QVB5MkNSOztBT3IyQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHcyQ0o7O0FPcjJDQTtFQUNJO0VBQ0E7QVB3MkNKOztBT3IyQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHcyQ0o7O0FPajJDQTtFQUNJO0FQbzJDSjs7QU9qMkNBO0VBQ0k7RUFDQTtFQUNBO0FQbzJDSjs7QU9qMkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBvMkNKOztBT2oyQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUG8yQ0o7O0FPNzFDQTtFQUNJO0FQZzJDSjtBTzUxQ1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA4MUNaO0FPeDFDUTtFQUNJO0VBQ0E7QVAwMUNaO0FPeDFDWTtFQUNJO0FQMDFDaEI7QU92MUNZO0VBQ0k7QVB5MUNoQjtBT3IxQ1E7RUFDSTtFQUNBO0VBQ0E7QVB1MUNaO0FPbjFDSTtFQUNJO0VBQ0E7RUFDQTtBUHExQ1I7QU9sMUNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBvMUNSOztBTzUwQ0E7RUFDSTtFQUNBO0VBQ0E7QVArMENKO0FPNzBDSTtFQUNJO0FQKzBDUjs7QU8zMENBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVA4MENKO0FPNTBDSTtFQUNJO0FQODBDUjs7QU8xMENBO0VBQ0k7RUFDQTtFQUNBO0FQNjBDSjs7QU8xMENBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUDYwQ0o7O0FPMTBDQTtFQUNJO0VBQ0E7RUFDQTtBUDYwQ0o7QU8zMENJO0VBQ0k7RUFDQTtBUDYwQ1I7QU8xMENJO0VBQ0k7RUFDQTtBUDQwQ1I7QU96MENJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVAyMENSOztBT2owQ0k7RUFDSTtFQUNBO0VBQ0E7QVBvMENSO0FPajBDSTtFQUNJO0VBQ0E7QVBtMENSO0FPaDBDSTtFQUNJO0VBQ0E7RUFDQTtBUGswQ1I7O0FPeHpDQTtFQUNJO0VBQ0E7QVAyekNKOztBT3R6Q0E7RUFDSTtFQUNBO0FQeXpDSjs7QU9wekNBO0VBQ0k7RUFDQTtBUHV6Q0o7O0FPcHpDQTtFQUNJO0VBQ0E7QVB1ekNKO0FPcnpDSTtFQUNJO0FQdXpDUjs7QU8veUNBO0VBRUk7O0lBRUk7RVBpekNOO0VPOXlDRTtJQUNJO0VQZ3pDTjtBQUNGO0FPN3lDQTtFQUVJO0lBQ0k7RVA4eUNOO0VPM3lDRTtJQUNJO0VQNnlDTjtFTzF5Q0U7SUFDSTtFUDR5Q047RU92eUNNO0lBQ0k7RVB5eUNWO0FBQ0Y7QU9yeUNBO0VBRUk7SUFDSTtJQUNBO0VQc3lDTjtFT255Q0U7SUFDSTtFUHF5Q047RU9seUNFOztJQUVJO0VQb3lDTjtFTy94Q0U7SUFDSTtFUGl5Q047RU8veENNO0lBQ0k7SUFDQTtFUGl5Q1Y7RU85eENNO0lBQ0k7RVBneUNWO0VPN3hDTTtJQUNJO0VQK3hDVjtFT3Z4Q007SUFDSTtJQUNBO0VQeXhDVjtFT3Z4Q1U7SUFDSTtFUHl4Q2Q7RU9oeENNOztJQUVJO0VQa3hDVjtFT2h4Q1U7O0lBQ0k7RVBteENkO0VPMXdDTTtJQUNJO0lBQ0E7RVA0d0NWO0VPMXdDVTtJQUNJO0lBQ0E7SUFDQTtFUDR3Q2Q7RU8xd0NjO0lBQ0k7SUFDQTtFUDR3Q2xCO0VPeHdDVTs7SUFFSTtJQUNBO0VQMHdDZDtFT253Q0U7SUFDSTtFUHF3Q047RU9ud0NNO0lBQ0k7RVBxd0NWO0VPbHdDTTtJQUNJO0VQb3dDVjtBQUNGO0FPNXZDQTtFQUVJOztJQUVJO0lBQ0E7RVA2dkNOO0VPMXZDRTtJQUNJO0VQNHZDTjtFT3p2Q0U7O0lBRUk7SUFDQTtJQUNBO0VQMnZDTjtFT3h2Q0U7OztJQUdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VQMHZDTjtFT3Z2Q0U7SUFDSTtJQUNBO0lBQ0E7RVB5dkNOO0VPdHZDRTtJQUNJO0lBQ0E7RVB3dkNOO0VPcnZDRTs7O0lBR0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUHV2Q047RU9wdkNFO0lBQ0k7SUFDQTtJQUNBO0VQc3ZDTjtFT252Q0U7SUFDSTtFUHF2Q047RU9sdkNFO0lBQ0k7RVBvdkNOO0VPanZDRTtJQUNJO0lBQ0E7RVBtdkNOO0VPaHZDRTtJQUNJO0VQa3ZDTjtFTy91Q0U7OztJQUdJO0lBQ0E7SUFDQTtFUGl2Q047RU85dUNFO0lBQ0k7SUFDQTtJQUNBO0VQZ3ZDTjtFTzd1Q0U7O0lBRUk7SUFDQTtJQUNBO0VQK3VDTjtFTzV1Q0U7SUFDSTtJQUNBO0lBQ0E7RVA4dUNOO0VPM3VDRTtJQUNJO0lBQ0E7SUFDQTtFUDZ1Q047RU8xdUNFO0lBQ0k7SUFDQTtJQUNBO0VQNHVDTjtFT3p1Q0U7SUFDSTtFUDJ1Q047RU94dUNFO0lBQ0k7RVAwdUNOO0VPdnVDRTtJQUNJO0lBQ0E7RVB5dUNOO0FBQ0Y7QVE1MURBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJ5MURKO0FRdjFESTtFQUNJO0FSeTFEUjtBUXQxREk7RUFDSTtFQUNBO0FSdzFEUjtBUXIxREk7RUFDSTtFQUNBO0VBQ0E7QVJ1MURSO0FRcjFEUTtFQUNJO0FSdTFEWjs7QVFoMURJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVJtMURSO0FRaDFESTtFQUNJO0FSazFEUjtBUS8wREk7RUFDSTtFQUNBO0VBQ0E7QVJpMURSO0FRLzBEUTtFQUNJO0VBQ0E7RUFDQTtBUmkxRFo7QVE5MERRO0VBQ0k7RUFDQTtFQUNBO0FSZzFEWjtBUTkwRFk7RUFDSTtFQUNBO0FSZzFEaEI7QVE3MERZO0VBQ0k7RUFDQTtBUiswRGhCO0FRejBEWTtFQUNJO0FSMjBEaEI7O0FRajBEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUm8wREo7O0FRajBEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJvMERKOztBUWowREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJvMERKOztBUWowREE7RUFDSTtFQUNBO0FSbzBESjtBUWwwREk7RUFDSTtFQUNBO0VBQ0E7QVJvMERSO0FRajBESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJtMERSOztBUS96REE7RUFDSTtFQUNBO0VBQ0E7QVJrMERKOztBUS96REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSazBESjs7QVEzekRBO0VBRUk7SUFBTztFUjh6RFQ7RVE1ekRFO0lBQUs7RVIrekRQO0FBQ0Y7QVE3ekRBO0VBRUk7SUFDSTtJQUNBO0VSOHpETjtFUTN6REU7SUFDSTtJQUNBO0VSNnpETjtBQUNGO0FRMXpEQTtFQUVJO0lBQ0k7SUFDQTtFUjJ6RE47RVF4ekRFO0lBQ0k7SUFDQTtFUjB6RE47QUFDRjtBUW56REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUnF6REo7O0FRbHpEQTtFQUNJO0VBQ0E7QVJxekRKOztBUzFnRUE7O0VBQUE7QUFJQTtFQUNJO0VBQ0E7QVQ0Z0VKO0FTMWdFSTtFQUNJO0VBQ0E7RUFDQTtBVDRnRVI7QVN6Z0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQyZ0VSO0FTeGdFSTtFQUNJO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHVnRVI7QVNuZ0VRO0VBRUk7QVRvZ0VaO0FTamdFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUbWdFWjtBU2hnRVE7RUFDSTtBVGtnRVo7QVM5L0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRnZ0VSO0FTNy9ESTtFQUNJO0VBQ0E7RUFDQTtBVCsvRFI7QVM3L0RRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVCsvRFo7O0FTMS9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2L0RKO0FTMy9ESTtFQUNJO0VBQ0E7QVQ2L0RSOztBU3ovREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ0L0RKOztBU3ovREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ0L0RKOztBU3ovREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDQvREo7QVMxL0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDQvRFI7QVN6L0RJO0VBQ0k7RUFDQTtBVDIvRFI7O0FTdi9EQTtFQUdJO0FUdy9ESjs7QVNyL0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBVG8vREo7QVNsL0RJO0VBQ0k7RUFDQTtBVG8vRFI7O0FTaC9EQTtFQUVJO0lBQ0k7SUFDQTtFVGsvRE47RVMvK0RFO0lBQ0k7SUFDQTtFVGkvRE47QUFDRjtBUzkrREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGcvREo7O0FTNytEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRnL0RKO0FTOStESTtFQUNJO0FUZy9EUjtBUzcrREk7RUFDSTtBVCsrRFI7QVM1K0RJO0VBQ0k7RUFDQTtBVDgrRFI7O0FTeCtESTtFQUNJO0FUMitEUjtBU3grREk7RUFDSTtBVDArRFI7QVN2K0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeStEUjs7QVNuK0RJO0VBQ0k7QVRzK0RSO0FTbitESTtFQUNJO0VBQ0E7QVRxK0RSOztBU2orREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVG8rREo7O0FTaitEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRvK0RKO0FTbCtESTtFQUNJO0FUbytEUjs7QVNoK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVRtK0RKOztBU2grREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRtK0RKOztBU2grREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRtK0RKOztBU2grREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVG0rREo7O0FTaCtEQTtFQUNJO0VBQ0E7RUFDQTtBVG0rREo7O0FTaCtEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUbStESjs7QVNoK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRtK0RKO0FTaitESTtFQUNJO0VBQ0E7RUFDQTtBVG0rRFI7QVNoK0RJO0VBQ0k7RUFDQTtFQUNBO0FUaytEUjs7QVM5OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGkrREo7O0FTOTlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRpK0RKO0FTLzlESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRpK0RSO0FTLzlEUTtFQUNJO0FUaStEWjs7QVM1OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUKzlESjtBUzc5REk7RUFDSTtBVCs5RFI7O0FTMzlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ4OURKO0FTNTlESTtFQUNJO0FUODlEUjtBUzM5REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2OURSO0FTMTlESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUNDlEUjtBUzE5RFE7RUFFSTtBVDI5RFo7QVN4OURRO0VBQ0k7RUFDQTtFQUNBO0FUMDlEWjs7QVU1NUVBOzs7OztFQUFBO0FBY0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnU1RUo7QVVyNUVJO0VBVEo7SUFVUTtJQUNBO0VWdzVFTjtBQUNGOztBVXI1RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdzVFSjs7QVVyNUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZ3NUVKOztBVXI1RUE7RUFDSTtFQUNBO0VBQ0E7QVZ3NUVKO0FVdDVFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ3NUVSO0FVcjVFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ1NUVSO0FVbjVFUTtFQUNJO0FWcTVFWjtBVWw1RVE7RUFDSTtBVm81RVo7QVVqNUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZtNUVaOztBVTE0RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjY0RUo7O0FVMTRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY2NEVKO0FVMzRFSTtFQUNJO0VBQ0E7QVY2NEVSO0FVMzRFUTtFQUNJO0FWNjRFWjtBVXo0RUk7RUFDSTtFQUNBO0FWMjRFUjtBVXo0RVE7RUFDSTtFQUNBO0FWMjRFWjtBVXY0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnk0RVI7QVV0NEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnc0RVI7O0FVaDRFQTtFQUNJO0FWbTRFSjs7QVVoNEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZtNEVKO0FVLzNFSTs7RUFFSTtBVmk0RVI7O0FVNzNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmc0RUo7O0FVNzNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZzRFSjtBVTkzRUk7RUFDSTtFQUNBO0VBQ0E7QVZnNEVSOztBVTUzRUE7RUFDSTtFQUNBO0VBQ0E7QVYrM0VKOztBVTUzRUE7RUFDSTtFQUNBO0VBQ0E7QVYrM0VKOztBVTUzRUE7RUFDSTtFQUNBO0VBQ0E7QVYrM0VKO0FVMzNFSTs7RUFFSTtFQUNBO0FWNjNFUjtBVXgzRUk7RUFDSTtBVjAzRVI7O0FVdDNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5M0VKOztBVWgzRUk7RUFDSTtFQUNBO0VBQ0E7QVZtM0VSO0FVOTJFWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnM0VoQjtBVTcyRVk7RUFDSTtBVisyRWhCO0FVeDJFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMDJFUjtBVXgyRVE7RUFDSTtBVjAyRVo7QVVyMkVRO0VBQ0k7QVZ1MkVaO0FVcDJFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnMyRVo7QVVwMkVZO0VBQ0k7RUFDQTtBVnMyRWhCO0FVbjJFWTtFQUNJO0FWcTJFaEI7QVVoMkVZO0VBQ0k7RUFDQTtBVmsyRWhCO0FVaDJFZ0I7RUFDSTtBVmsyRXBCO0FVNzFFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWKzFFWjtBVXoxRUk7RUFDSTtBVjIxRVI7O0FVdjFFQTtFQUNJO0VBQ0E7RUFDQTtBVjAxRUo7O0FVbDFFSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBVnExRVI7QVVuMUVROztFQUNJO0VBQ0E7QVZzMUVaO0FVaDFFSTtFQUNJO0FWazFFUjtBVTMwRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNjBFWjtBVTEwRVE7RUFDSTtFQUNBO0FWNDBFWjtBVTEwRVk7RUFDSTtBVjQwRWhCO0FVejBFWTtFQUNJO0FWMjBFaEI7QVVwMEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzMEVSO0FVcDBFUTtFQUNJO0FWczBFWjtBVW4wRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnEwRVo7QVVsMEVRO0VBQ0k7RUFDQTtFQUNBO0FWbzBFWjtBVTl6RUk7RUFDSTtBVmcwRVI7QVUzekVJO0VBQ0k7RUFDQTtBVjZ6RVI7QVUzekVRO0VBQ0k7RUFDQTtBVjZ6RVo7QVUzekVZO0VBQ0k7RUFDQTtBVjZ6RWhCOztBVW56RUE7RUFDSTtBVnN6RUo7O0FVbnpFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnN6RUo7O0FVbnpFQTtFQUNJO0VBQ0E7RUFDQTtBVnN6RUo7O0FVbnpFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWc3pFSjtBVXB6RUk7RUFDSTtFQUNBO0VBQ0E7QVZzekVSOztBVWx6RUE7RUFDSTtFQUNBO0VBQ0E7QVZxekVKOztBVWx6RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnF6RUo7O0FVbHpFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBVm96RUo7QVVsekVJO0VBRUk7RUFDQTtFQUNBO0FWbXpFUjs7QVUveUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZrekVKO0FVaHpFSTtFQUVJO0VBQ0E7RUFDQTtBVml6RVI7O0FVN3lFQTtFQUNJO0VBQ0E7RUFDQTtBVmd6RUo7O0FVN3lFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWZ3pFSjs7QVU3eUVBO0VBQ0k7RUFDQTtBVmd6RUo7O0FVdnlFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjB5RVI7QVV0eUVRO0VBQ0k7RUFDQTtFQUNBO0FWd3lFWjtBVXJ5RVE7RUFDSTtBVnV5RVo7QVVueUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZxeUVSO0FVbHlFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZveUVSO0FVbHlFUTtFQUNJO0FWb3lFWjtBVWp5RVE7RUFDSTtFQUNBO0VBQ0E7QVZteUVaOztBVTF4RUE7RUFDSTtBVjZ4RUo7O0FVMXhFQTtFQUNJO0VBQ0E7RUFDQTtBVjZ4RUo7QVUzeEVJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0FWNnhFUjtBVTF4RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHhFUjtBVXp4RUk7RUFFSTtBVjB4RVI7QVV2eEVJO0VBQ0k7QVZ5eEVSO0FVdnhFUTtFQUNJO0FWeXhFWjtBVXR4RVE7RUFDSTtBVnd4RVo7QVV0eEVZO0VBQ0k7QVZ3eEVoQjtBVWp4RUk7RUFDSTtFQUNBO0FWbXhFUjtBVWh4RUk7RUFFSTtBVml4RVI7QVU5d0VJO0VBQ0k7RUFDQTtFQUNBO0FWZ3hFUjtBVTd3RUk7RUFDSTtBVit3RVI7QVV6d0VJOztFQUVJO0VBQ0E7RUFDQTtBVjJ3RVI7QVV4d0VJOztFQUVJO0FWMHdFUjtBVXJ3RUk7O0VBRUk7QVZ1d0VSO0FVcHdFSTtFQUNJO0FWc3dFUjtBVW53RUk7RUFDSTtFQUNBO0VBQ0E7QVZxd0VSO0FVaHdFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWa3dFUjtBVTl2RVE7RUFDSTtFQUNBO0FWZ3dFWjs7QVV6dkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHZFSjtBVTF2RUk7RUFDSTtBVjR2RVI7QVV6dkVJO0VBQ0k7QVYydkVSO0FVeHZFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwdkVSO0FVeHZFUTtFQUNJO0FWMHZFWjtBVXR2RUk7RUFDSTtBVnd2RVI7O0FVaHZFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWbXZFSjs7QVVodkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZtdkVKO0FVaHZFSTtFQUNJO0VBQ0E7QVZrdkVSO0FVL3VFSTtFQUNJO0VBQ0E7QVZpdkVSO0FVOXVFSTtFQUNJO0VBQ0E7QVZndkVSO0FVN3VFSTtFQUNJO0VBQ0E7QVYrdUVSO0FVNXVFSTtFQUNJO0VBQ0E7QVY4dUVSOztBVXh1RUE7RUFDSTtFQUNBO0FWMnVFSjtBVXZ1RUk7RUFFSTtFQUNBO0VBQ0E7QVZ3dUVSOztBVWh1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVm11RVI7QVVodUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmt1RVI7QVVodUVRO0VBQ0k7RUFDQTtFQUNBO0FWa3VFWjtBVS90RVE7RUFDSTtBVml1RVo7QVU5dEVRO0VBQ0k7QVZndUVaO0FVOXRFWTtFQUNJO0FWZ3VFaEI7QVU3dEVZO0VBQ0k7QVYrdEVoQjtBVTF0RUk7RUFDSTtBVjR0RVI7O0FVdHRFQTtFQUNJO0FWeXRFSjs7QVV0dEVBOztFQUVJO0FWeXRFSjs7QVVsdEVBO0VBQ0k7RUFDQTtFQUNBO0FWcXRFSjtBVW50RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcXRFUjs7QVU3c0VBO0VBQ0k7RUFDQTtBVmd0RUo7O0FVN3NFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmd0RUo7QVU5c0VJO0VBQ0k7RUFDQTtBVmd0RVI7O0FVNXNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWK3NFSjs7QVU1c0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWK3NFSjs7QVU1c0VBO0VBQ0k7RUFDQTtFQUNBO0FWK3NFSjs7QVV4c0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMnNFSjtBVXZzRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWeXNFUjs7QVVuc0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzc0VKOztBVW5zRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnNzRUo7QVVwc0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnNzRVI7O0FVbHNFQTtFQUNJO0VBQ0E7RUFDQTtBVnFzRUo7O0FVbHNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnFzRUo7QVVuc0VJO0VBQ0k7RUFDQTtBVnFzRVI7QVVsc0VJO0VBQ0k7QVZvc0VSO0FVanNFSTtFQUNJO0FWbXNFUjtBVWpzRVE7RUFDSTtBVm1zRVo7O0FVOXJFQTtFQUNJO0VBQ0E7RUFDQTtBVmlzRUo7O0FVOXJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmlzRUo7QVU5ckVJO0VBQ0k7RUFDQTtBVmdzRVI7QVU3ckVJO0VBQ0k7RUFDQTtBVityRVI7O0FVdnJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMHJFSjtBVXhyRUk7RUFUSjtJQVVRO0lBQ0E7RVYyckVOO0FBQ0Y7O0FVeHJFQTtFQUNJO0VBQ0E7QVYyckVKOztBVXhyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMnJFSjtBVXpyRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjJyRVI7QVV6ckVRO0VBQ0k7RUFDQTtFQUNBO0FWMnJFWjs7QVVwckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdXJFUjtBVWxyRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVm9yRVo7QVVockVZO0VBQ0k7RUFDQTtFQUNBO0FWa3JFaEI7QVU5cUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZnckVaO0FVN3FFUTtFQUNJO0VBQ0E7RUFDQTtBVitxRVo7O0FVdHFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnlxRUo7QVV2cUVJO0VBQ0k7RUFDQTtBVnlxRVI7QVV0cUVJO0VBQ0k7RUFDQTtBVndxRVI7QVVycUVJO0VBQ0k7RUFDQTtBVnVxRVI7QVVwcUVJO0VBQ0k7RUFDQTtBVnNxRVI7QVVucUVJO0VBQ0k7RUFDQTtBVnFxRVI7QVVscUVJO0VBQ0k7RUFDQTtBVm9xRVI7O0FVNXBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWK3BFSjs7QVV4cEVBO0VBQ0k7QVYycEVKO0FVenBFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYycEVSOztBVXZwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMHBFSjs7QVVucEVBO0VBRUk7SUFDSTtJQUNBO0VWcXBFTjtFVWxwRUU7SUFDSTtFVm9wRU47RVUvb0VNOztJQUVJO0VWaXBFVjtFVTdvRUU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFVitvRU47RVU1b0VFO0lBQ0k7RVY4b0VOO0FBQ0Y7QVVwb0VJO0VBQ0k7RUFDQTtFQUNBO0FWc29FUjs7QVVsb0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcW9FSjtBVWxvRUk7RUFDSTtFQUNBO0FWb29FUjtBVWpvRUk7RUFDSTtFQUNBO0FWbW9FUjs7QVU3bkVBO0VBQ0k7RUFDQTtBVmdvRUo7QVU5bkVJO0VBQ0k7QVZnb0VSO0FVN25FSTtFQUNJO0VBQ0E7QVYrbkVSOztBVTNuRUE7RUFDSTtFQUNBO0FWOG5FSjtBVTFuRUk7RUFDSTtFQUNBO0FWNG5FUjs7QVV4bkVBO0VBRUk7SUFDSTtJQUNBO0VWMG5FTjtFVXZuRUU7SUFDSTtJQUNBO0VWeW5FTjtBQUNGO0FVaG5FSTtFQUNJO0VBQ0E7RUFDQTtBVmtuRVI7QVUvbUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmluRVI7QVUvbUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmluRVo7QVU1bUVZO0VBQ0k7QVY4bUVoQjtBVTVtRWdCO0VBQ0k7QVY4bUVwQjtBVTNtRWdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY2bUVwQjtBVXptRVk7RUFDSTtBVjJtRWhCO0FVdG1FSTtFQUNJO0VBQ0E7RUFDQTtBVndtRVI7O0FXdGhIQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtBWG9oSEo7QVdsaEhJO0VBQ0k7QVhvaEhSOztBVzVnSEE7RUFDSTtBWCtnSEo7O0FXdmdIQTtFQUNJO0VBQ0E7RUFDQTtBWDBnSEo7O0FXdmdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYMGdISjtBV3ZnSEk7RUFDSTtFQUNBO0FYeWdIUjs7QVdyZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYd2dISjs7QVdyZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHdnSEo7O0FXcmdIQTtFQUNJO0FYd2dISjs7QVdyZ0hBO0VBQ0k7RUFDQTtFQUNBO0FYd2dISjs7QVdyZ0hBO0VBQ0k7RUFDQTtBWHdnSEo7O0FXcmdIQTtFQUNJO0FYd2dISjs7QVdyZ0hBO0VBQ0k7RUFDQTtFQUNBO0FYd2dISjtBV3RnSEk7RUFMSjtJQU1RO0VYeWdITjtBQUNGOztBV3RnSEE7RUFDSTtBWHlnSEo7O0FXbGdIQTtFQUNJO0VBQ0E7RUFDQTtBWHFnSEo7O0FXbGdIQTtFQUNJO0FYcWdISjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYcWdISjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0FYcWdISjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVhxZ0hKO0FXbmdISTtFQU5KO0lBT1E7SUFDQTtFWHNnSE47RVdwZ0hNO0lBQ0k7RVhzZ0hWO0FBQ0Y7O0FXbGdIQTtFQUNJO0VBQ0E7RUFDQTtBWHFnSEo7O0FXbGdIQTtFQUNJO0FYcWdISjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVhxZ0hKOztBVzkvR0E7RUFDSTtFQUNBO0VBQ0E7QVhpZ0hKOztBVzkvR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYaWdISjtBVzkvR0k7RUFDSTtFQUNBO0FYZ2dIUjs7QVc1L0dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYKy9HSjs7QVc1L0dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWCsvR0o7O0FXNS9HQTtFQUNJO0FYKy9HSjs7QVc1L0dBO0VBQ0k7RUFDQTtFQUNBO0FYKy9HSjs7QVc1L0dBO0VBQ0k7RUFDQTtBWCsvR0o7O0FXNS9HQTtFQUNJO0FYKy9HSjs7QVc1L0dBO0VBQ0k7RUFDQTtFQUNBO0FYKy9HSjtBVzcvR0k7RUFMSjtJQU1RO0VYZ2dITjtBQUNGOztBV3ovR0E7RUFDSTtFQUNBO0VBQ0E7QVg0L0dKOztBV3ovR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDQvR0o7QVcxL0dJO0VBQ0k7RUFDQTtBWDQvR1I7QVd6L0dJO0VBQ0k7RUFDQTtFQUNBO0FYMi9HUjs7QVduL0dBO0VBRUk7SUFDSTtJQUNBO0VYcS9HTjtFV2wvR0U7SUFDSTtJQUNBO0VYby9HTjtBQUNGO0FXai9HQTs7RUFFSTtBWG0vR0o7O0FXNStHQTs7RUFFSTtFQUNBO0FYKytHSjs7QVc1K0dBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVgrK0dKO0FXNytHSTs7RUFDSTtBWGcvR1I7O0FZeHlIQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0Fac3lISjs7QVlueUhBO0VBQ0k7RUFDQTtFQUNBO0Fac3lISjs7QVkveEhBO0VBQ0k7RUFDQTtBWmt5SEo7O0FZL3hIQTtFQUNJO0VBQ0E7RUFDQTtBWmt5SEo7O0FZL3hIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpreUhKOztBWS94SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa3lISjs7QVkveEhBO0VBQ0k7RUFDQTtFQUNBO0Faa3lISjs7QVkzeEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHhISjtBWTV4SEk7RUFDSTtFQUNBO0FaOHhIUjs7QVkxeEhBO0VBQ0k7RUFDQTtFQUNBO0FaNnhISjtBWTN4SEk7RUFMSjtJQU1RO0VaOHhITjtBQUNGO0FZeHhIUTtFQUNJO0VBQ0E7QVoweEhaOztBWXJ4SEE7RUFDSTtFQUNBO0VBQ0E7QVp3eEhKOztBWXJ4SEE7RUFDSTtFQUNBO0VBQ0E7QVp3eEhKOztBWW54SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnN4SEo7QVlweEhJO0VBQ0k7RUFDQTtFQUNBO0Fac3hIUjtBWW54SEk7RUFDSTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7QVpteEhSO0FZaHhISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpreEhSO0FZaHhIUTtFQUNJO0VBQ0E7QVpreEhaOztBWTd3SEE7RUFDSTtFQUNBO0VBQ0E7QVpneEhKO0FZOXdISTtFQUNJO0FaZ3hIUjtBWTd3SEk7RUFDSTtBWit3SFI7O0FZendIQTtFQUNJO0VBQ0E7RUFDQTtBWjR3SEo7QVkxd0hJO0VBTEo7SUFNUTtFWjZ3SE47QUFDRjs7QVl0d0hBO0VBQ0k7QVp5d0hKOztBWXR3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeXdISjs7QVl0d0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp5d0hKOztBWXR3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5d0hKOztBWXR3SEE7RUFDSTtFQUNBO0VBQ0E7QVp5d0hKO0FZdndISTtFQUNJO0FaeXdIUjs7QVlyd0hBO0VBQ0k7RUFDQTtFQUNBO0Fad3dISjs7QVlyd0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3d0hKOztBWXJ3SEE7RUFDSTtFQUNBO0VBQ0E7QVp3d0hKOztBWXJ3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnd3SEo7QVl0d0hJO0VBQ0k7QVp3d0hSO0FZcndISTtFQUNJO0FadXdIUjtBWXB3SEk7RUFDSTtBWnN3SFI7QVlud0hJO0VBQ0k7RUFDQTtBWnF3SFI7O0FZN3ZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaZ3dISjtBWTl2SEk7RUFOSjtJQU9RO0VaaXdITjtBQUNGO0FZL3ZISTtFQVZKO0lBV1E7RVprd0hOO0FBQ0Y7O0FZM3ZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaOHZISjs7QVkzdkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHZISjs7QVkzdkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjh2SEo7O0FZM3ZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaOHZISjs7QVkzdkhBO0VBQ0k7QVo4dkhKOztBWXp2SEE7RUFDSTtBWjR2SEo7O0FZenZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVo0dkhKO0FZMXZISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjR2SFI7QVl6dkhJO0VBQ0k7QVoydkhSO0FZeHZISTtFQUNJO0FaMHZIUjtBWXZ2SEk7RUF4Qko7SUF5QlE7RVowdkhOO0FBQ0Y7O0FZbnZISTtFQUNJO0Fac3ZIUjtBWW52SEk7RUFDSTtBWnF2SFI7QVludkhRO0VBSEo7SUFPUTtFWm12SFY7QUFDRjs7QVl6dUhJOztFQUVJO0FaNHVIUjtBWXh1SFE7RUFESjtJQUtRO0Vad3VIVjtBQUNGOztBWXB1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnV1SEo7QVlydUhJO0VBQ0k7QVp1dUhSO0FZcHVISTtFQUNJO0Fac3VIUjtBWW51SEk7RUFDSTtBWnF1SFI7QVlsdUhJO0VBQ0k7RUFDQTtBWm91SFI7QVlsdUhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpvdUhaO0FZNXRISTtFQUNJO0FaOHRIUjtBWTV0SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHRIWjtBWTV0SFk7RUFDSTtBWjh0SGhCO0FZM3RIWTtFQUNJO0VBQ0E7QVo2dEhoQjtBWTF0SFk7RUFDSTtBWjR0SGhCO0FZeHRIUTtFQUNJO0FaMHRIWjtBWXh0SFk7RUFDSTtBWjB0SGhCO0FZanRIUTs7Ozs7O0VBRUk7QVp1dEhaO0FZL3NIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWml0SFo7QVk5c0hRO0VBQ0k7QVpndEhaO0FZMXNIUTtFQUNJO0FaNHNIWjtBWXhzSEk7RUFDSTtFQUNBO0FaMHNIUjtBWXhzSFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMHNIWjtBWXRzSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWndzSFI7QVlyc0hJO0VBQ0k7RUFDQTtFQUNBO0VBR0E7QVpxc0hSO0FZL3JISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLDBIQUNJO0FaZ3NIWjtBWTVySFE7RUFDSTtFQUNBO0FaOHJIWjtBWTNySFE7RUFDSTtBWjZySFo7QVkxckhRO0VBQ0k7RUFDQTtFQUNBO0FaNHJIWjtBWXhySEk7RUFDSTtBWjBySFI7QVl2ckhJO0VBQ0k7QVp5ckhSO0FZcnJISTtFQXBMSjtJQXFMUTtJQUNBO0lBQ0E7SUFDQSxzRUFDSTtJQUlKO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFWm9ySE47RVlsckhNO0lBQ0k7RVpvckhWO0VZanJITTtJQUNJO0VabXJIVjtFWWhySE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFWmtySFY7RVkvcUhNO0lBQ0k7RVppckhWO0VZL3FIVTtJQUNJO0lBQ0E7RVppckhkO0VZN3FITTtJQUNJO0VaK3FIVjtFWTdxSFU7SUFDSTtFWitxSGQ7RVkzcUhNO0lBQ0k7RVo2cUhWO0VZM3FIVTtJQUNJO0VaNnFIZDtFWXpxSE07SUFDSTtFWjJxSFY7RVl6cUhVO0lBQ0k7RVoycUhkO0VZdnFITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFWnlxSFY7RVlucUhNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RVpxcUhWO0VZbHFITTtJQUNJO0Vab3FIVjtFWWpxSE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFWm1xSFY7RVlqcUhVO0lBQ0k7SUFDQTtFWm1xSGQ7RVlocUhVO0lBQ0k7SUFDQTtJQUNBO0Vaa3FIZDtBQUNGOztBWTNwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHBISjtBWTVwSEk7RUFDSTtFQUNBO0FaOHBIUjtBWTNwSEk7RUFDSTtFQUNBO0VBQ0E7QVo2cEhSO0FZMXBISTtFQUNJO0VBQ0E7QVo0cEhSOztBWXRwSEE7RUFDSTtFQUNBO0FaeXBISjs7QVl0cEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeXBISjtBWXZwSEk7RUFDSTtFQUNBO0VBQ0E7QVp5cEhSOztBWTFvSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjZvSEo7O0FZMW9IQTtFQUNJO0VBQ0E7RUFDQTtBWjZvSEo7O0FZMW9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNm9ISjs7QVkxb0hBO0VBQ0k7RUFDQTtBWjZvSEo7QVkzb0hJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNm9IUjs7QVl6b0hBO0VBQ0k7RUFDQTtFQUNBO0FaNG9ISjs7QVl6b0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRvSEo7QVkxb0hJO0VBQ0k7RUFDQTtBWjRvSFI7QVl6b0hJO0VBQ0k7RUFDQTtBWjJvSFI7O0FZdm9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVowb0hKO0FZeG9ISTtFQUNJO0VBQ0E7RUFDQTtBWjBvSFI7O0FZbG9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FacW9ISjs7QVlsb0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnFvSEo7O0FZbG9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FacW9ISjs7QVlsb0hBO0VBQ0k7RUFDQTtFQUNBO0FacW9ISjs7QVlsb0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpxb0hKOztBWWxvSEE7RUFDSTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa29ISjtBWWhvSEk7RUFiSjtJQWNRO0VabW9ITjtBQUNGOztBWWhvSEE7RUFDSTtFQUNBO0VBQ0E7QVptb0hKO0FZam9ISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptb0hSO0FZam9IUTtFQVBKO0lBUVE7RVpvb0hWO0FBQ0Y7O0FZaG9IQTtFQUNJO0VBQ0E7RUFDQTtBWm1vSEo7O0FZNW5IQTtFQUNJO0VBQ0E7QVorbkhKO0FZN25ISTtFQUpKO0lBS1E7RVpnb0hOO0FBQ0Y7O0FZN25IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaZ29ISjs7QVk3bkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ29ISjs7QVk3bkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdvSEo7O0FZN25IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaZ29ISjs7QVk3bkhBO0VBQ0k7QVpnb0hKOztBWTduSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmdvSEo7QVk5bkhJO0VBQ0k7QVpnb0hSOztBWTVuSEE7RUFDSTtFQUNBO0FaK25ISjs7QVk1bkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVorbkhKOztBWXpuSEk7RUFDSTtBWjRuSFI7O0FZeG5IQTtFQUNJO0VBQ0E7RUFDQTtBWjJuSEo7QVl6bkhJO0VBQ0k7RUFDQTtFQUNBO0FaMm5IUjtBWXJuSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadW5IUjs7QVlqbkhBO0VBQ0k7RUFDQTtFQUNBO0Fab25ISjtBWWxuSEk7RUFDSTtFQUNBO0VBQ0E7QVpvbkhSOztBWTVtSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK21ISjtBWTdtSEk7RUFDSTtFQUNBO0FaK21IUjtBWTdtSFE7RUFDSTtBWittSFo7QVk1bUhRO0VBQ0k7QVo4bUhaOztBWXptSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRtSEo7QVkxbUhJO0VBQ0k7QVo0bUhSO0FZem1ISTtFQUNJO0FaMm1IUjs7QVl2bUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVowbUhKOztBWXZtSEE7RUFDSTtBWjBtSEo7O0FZdm1IQTtFQUNJO0VBQ0E7RUFDQTtBWjBtSEo7O0FZdG1IQTtFQUNJO0FaeW1ISjs7QVl0bUhBO0VBQ0k7RUFDQTtFQUNBO0FaeW1ISjtBWXZtSEk7RUFMSjtJQU1RO0VaMG1ITjtBQUNGOztBWW5tSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNtSEo7O0FZbm1IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNtSEo7O0FZam1IQTtFQUNJO0VBQ0E7QVpvbUhKO0FZbG1ISTtFQUNJO0VBQ0E7RUFDQTtBWm9tSFI7QVlsbUhRO0VBQ0k7RUFDQTtBWm9tSFo7QVlobUhJO0VBQ0k7RUFDQTtBWmttSFI7QVlobUhRO0VBQ0k7QVprbUhaO0FZOWxISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpnbUhSO0FZN2xISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVorbEhSO0FZN2xIUTtFQUNJO0VBQ0E7QVorbEhaO0FZNWxIUTtFQUNJO0VBQ0E7QVo4bEhaO0FZNWxIWTtFQUNJO0FaOGxIaEI7QVl6bEhJO0VBQ0k7QVoybEhSOztBWW5sSEE7RUFFSTtJQUNJO0VacWxITjtFWWxsSEU7SUFDSTtJQUNBO0lBQ0E7RVpvbEhOO0FBQ0Y7QVlqbEhBO0VBRUk7SUFDSTtFWmtsSE47QUFDRjtBWS9rSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaWxISjtBWS9rSEk7RUFDSTtFQUNBO0FaaWxIUjs7QVk3a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpnbEhKOztBWTdrSEE7RUFDSTtFQUNBO0VBQ0E7QVpnbEhKOztBWTdrSEE7RUFDSTtFQUNBO0VBQ0E7QVpnbEhKOztBWTdrSEE7RUFDSTtFQUNBO0VBQ0E7QVpnbEhKOztBWTdrSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpnbEhKO0FZOWtISTtFQUNJO0VBQ0E7QVpnbEhSO0FZN2tISTtFQUNJO0VBQ0E7RUFDQTtBWitrSFI7O0FZdmtIQTtFQUVJO0lBQ0k7SUFDQTtFWnlrSE47RVl0a0hFO0lBQ0k7SUFDQTtFWndrSE47QUFDRjtBWWprSEE7RUFFSTtJQUNJO0lBQ0E7RVpra0hOO0VZL2pIRTtJQUNJO0lBQ0E7RVppa0hOO0VZOWpIRTtJQUNJO0lBQ0E7RVpna0hOO0VZN2pIRTtJQUNJO0VaK2pITjtFWTVqSEU7OztJQUdJO0VaOGpITjtFWTNqSEU7SUFDSTtFWjZqSE47RVkzakhNO0lBQ0k7RVo2akhWO0VZempIRTtJQUNJO0VaMmpITjtFWXpqSE07O0lBRUk7RVoyakhWO0FBQ0Y7QVloakhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmtqSEo7QVloakhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa2pIUjtBWWhqSFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVprakhaO0FZL2lIUTtFQUNJO0FaaWpIWjtBWS9pSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmlqSGhCO0FZOWlIWTtFQUNJO0VBQ0E7RUFDQTtBWmdqSGhCO0FZM2lISTtFQUNJO0VBQ0E7RUFDQTtBWjZpSFI7O0FZcGlISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FadWlIUjtBWXJpSFE7RUFOSjtJQU9RO0Vad2lIVjtBQUNGO0FZdGlIUTtFQUNJO0Fad2lIWjtBWXJpSFE7RUFDSTtFQUNBO0VBQ0E7QVp1aUhaO0FZcmlIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FadWlIaEI7QVlwaUhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNpSGhCO0FZbmlIWTtFQUNJO0VBQ0E7QVpxaUhoQjtBWWxpSFk7RUFDSTtFQUNBO0VBQ0E7QVpvaUhoQjtBWS9oSEk7RUFDSTtFQUNBO0FaaWlIUjtBWTVoSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjhoSFI7QVk1aEhRO0VBTko7SUFPUTtFWitoSFY7QUFDRjtBWTdoSFE7RUFDSTtFQUNBO0VBQ0E7QVoraEhaO0FZN2hIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaK2hIaEI7QVk1aEhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjhoSGhCO0FZMWhIZ0I7RUFFSTtBWjJoSHBCO0FZdmhIWTtFQUNJO0VBQ0E7QVp5aEhoQjtBWXRoSFk7RUFDSTtFQUNBO0VBQ0E7QVp3aEhoQjs7QVlsaEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpxaEhKO0FZbmhISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnFoSFI7QVlsaEhJO0VBQ0k7RUFDQTtFQUNBO0Fab2hIUjtBWWxoSFE7RUFDSTtFQUNBO0Fab2hIWjs7QVk3Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdoSEo7QVk5Z0hJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ2hIUjtBWTlnSFE7RUFDSTtBWmdoSFo7QVk3Z0hRO0VBQ0k7QVorZ0haO0FZNWdIUTtFQUNJO0FaOGdIWjtBWTFnSEk7RUFDSTtFQUNBO0VBQ0E7QVo0Z0hSO0FZMWdIUTtFQUNJO0VBQ0E7RUFDQTtBWjRnSFo7QVl6Z0hRO0VBQ0k7RUFDQTtFQUNBO0FaMmdIWjtBWXpnSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoyZ0hoQjtBWXpnSGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMmdIcEI7QVl4Z0hnQjtFQUNJO0FaMGdIcEI7QVlyZ0hRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnVnSFo7QVlyZ0hZO0VBQ0k7RUFDQTtBWnVnSGhCO0FZcGdIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzZ0hoQjtBWWpnSEk7RUFDSTtBWm1nSFI7O0FZei9HQTtFQUNJO0VBQ0E7QVo0L0dKOztBWXYvR0E7RUFDSTtFQUNBO0VBQ0E7QVowL0dKOztBWXYvR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjAvR0o7QVl4L0dJO0VBQ0k7QVowL0dSOztBWXQvR0E7RUFDSTtFQUNBO0VBQ0E7QVp5L0dKOztBWXQvR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnkvR0o7O0FZcC9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnUvR0o7O0FZcC9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1L0dKO0FZci9HSTtFQUNJO0VBQ0E7RUFDQTtBWnUvR1I7O0FZbi9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnMvR0o7O0FZbi9HQTtFQUNJO0VBQ0E7RUFDQTtBWnMvR0o7O0FZai9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm8vR0o7O0FZai9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm8vR0o7QVlsL0dJO0VBQ0k7RUFDQTtBWm8vR1I7O0FZaC9HQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptL0dKO0FZai9HSTtFQUNJO0FabS9HUjtBWWovR1E7RUFDSTtBWm0vR1o7O0FZOStHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmkvR0o7O0FZOStHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaaS9HSjs7QVk5K0dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVppL0dKOztBWTkrR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmkvR0o7O0FZOStHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVppL0dKO0FZLytHSTtFQUNJO0VBQ0E7RUFDQTtBWmkvR1I7O0FhejFLQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0FidTFLSjs7QWFwMUtBO0VBQ0k7RUFDQTtFQUNBO0FidTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtBYm0xS0o7O0FhaDFLQTtFQUNJO0VBQ0E7RUFDQTtBYm0xS0o7O0FhaDFLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtMUtKOztBYWgxS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibTFLSjs7QWFoMUtBO0VBQ0k7RUFDQTtFQUNBO0FibTFLSjs7QWE1MEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWIrMEtKO0FhNzBLSTtFQU5KO0lBT1E7RWJnMUtOO0FBQ0Y7O0FhejBLQTtFQUNJO0VBQ0E7QWI0MEtKO0FhMTBLSTtFQUpKO0lBS1E7SUFDQTtFYjYwS047QUFDRjs7QWExMEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2MEtKOztBYTEwS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2MEtKOztBYTEwS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNjBLSjs7QWExMEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2MEtKOztBYTEwS0E7RUFDSTtBYjYwS0o7O0FheDBLQTtFQUNJO0VBQ0E7QWIyMEtKO0FhejBLSTtFQUNJO0FiMjBLUjtBYXgwS0k7RUFDSTtFQUNBO0FiMDBLUjs7QWF0MEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FieTBLSjs7QWF0MEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJ5MEtKO0FhdjBLSTtFQUNJO0VBQ0E7RUFDQTtBYnkwS1I7O0FhcjBLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYncwS0o7O0FhbjBLQTtFQUNJO0VBQ0E7RUFDQTtBYnMwS0o7O0FhbjBLQTtFQUNJO0VBQ0E7RUFDQTtBYnMwS0o7O0FhbjBLQTtFQUNJO0VBQ0E7QWJzMEtKOztBYW4wS0E7RUFDSTtFQUNBO0VBQ0E7QWJzMEtKOztBYWowS0E7RUFDSTtFQUNBO0VBQ0E7QWJvMEtKOztBYWowS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJvMEtKOztBYWowS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJvMEtKOztBYWowS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibzBLSjs7QWEvektBO0VBQ0k7RUFDQTtFQUNBO0FiazBLSjs7QWEvektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJrMEtKOztBYS96S0E7RUFDSTtFQUNBO0FiazBLSjs7QWEvektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJrMEtKOztBYTd6S0E7RUFDSTtBYmcwS0o7O0FhM3pLQTtFQUNJO0FiOHpLSjs7QWEzektBO0VBQ0k7RUFDQTtFQUNBO0FiOHpLSjtBYTV6S0k7RUFDSTtFQUNBO0VBQ0E7QWI4ektSO0FhdnpLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ5ektSOztBYWh6S0k7RUFESjtJQUVRO0Vib3pLTjtBQUNGOztBYWp6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYm96S0o7O0FhanpLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm96S0o7O0FhanpLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJvektKOztBYWp6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYm96S0o7O0FhanpLQTtFQUNJO0Fib3pLSjs7QWFqektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fib3pLSjs7QWExeUtJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZ5S1I7QWEzeUtRO0VBQ0k7RUFDQTtBYjZ5S1o7QWF2eUtJO0VBQ0k7RUFDQTtBYnl5S1I7QWFweUtJO0VBQ0k7QWJzeUtSO0FhanlLSTtFQUNJO0VBQ0E7QWJteUtSO0FhOXhLSTtFQUNJO0FiZ3lLUjs7QWF4eEtBO0VBQ0k7RUFDQTtFQUNBO0FiMnhLSjs7QWF4eEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIyeEtKO0FhenhLSTtFQUNJO0VBQ0E7QWIyeEtSO0FheHhLSTtFQUNJO0VBQ0E7RUFDQTtBYjB4S1I7QWF4eEtRO0VBQ0k7RUFDQTtBYjB4S1o7QWF2eEtRO0VBQ0k7RUFDQTtBYnl4S1o7QWFyeEtJO0VBQ0k7RUFDQTtBYnV4S1I7O0FhbnhLQTtFQUNJO0Fic3hLSjs7QWFueEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJzeEtKOztBYW54S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnN4S0o7O0FhbnhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnN4S0o7O0FhbnhLQTtFQUNJO0VBQ0E7RUFDQTtBYnN4S0o7O0FhbnhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fic3hLSjs7QWFueEtBO0VBQ0k7RUFDQTtBYnN4S0o7O0FhbnhLQTtFQUNJO0VBQ0E7QWJzeEtKOztBYW54S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fic3hLSjs7QWEvd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fia3hLSjtBYWh4S0k7O0VBRUk7QWJreEtSOztBYTl3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpeEtKO0FhL3dLSTtFQUNJO0VBQ0E7QWJpeEtSOztBYXp3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjR3S0o7QWExd0tJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjR3S1I7QWF6d0tJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMndLUjtBYXh3S0k7RUFDSTtFQUNBO0VBQ0E7QWIwd0tSO0FhdndLSTtFQUNJO0VBQ0E7QWJ5d0tSOztBYW53S0E7RUFDSTtBYnN3S0o7O0FhL3ZLQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmt3S0o7QWFod0tJOztFQUNJO0VBQ0E7QWJtd0tSO0FhaHdLSTs7RUFDSTtFQUNBO0FibXdLUjtBYWp3S1E7O0VBQ0k7QWJvd0taOztBYS92S0E7RUFDSTtBYmt3S0o7O0FhL3ZLQTtFQUNJO0VBQ0E7QWJrd0tKOztBYTN2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiOHZLSjs7QWEzdktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiOHZLSjs7QWEzdktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjh2S0o7O0FhM3ZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI4dktKOztBYTN2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiOHZLSjs7QWEzdktBO0VBQ0k7QWI4dktKOztBYXZ2S0E7RUFDSTtFQUNBO0VBQ0E7QWIwdktKOztBYXZ2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMHZLSjs7QWF2dktBO0VBQ0k7RUFDQTtBYjB2S0o7O0FhdnZLQTtFQUNJO0VBQ0E7QWIwdktKOztBYXZ2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjB2S0o7O0FhdnZLQTtFQUNJO0VBQ0E7RUFDQTtBYjB2S0o7O0FhdnZLQTtFQUNJO0VBQ0E7RUFDQTtBYjB2S0o7O0FhdnZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIwdktKO0FheHZLSTtFQUNJO0VBQ0E7QWIwdktSOztBYXR2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ5dktKOztBYWx2S0E7RUFDSTtFQUNBO0VBQ0E7QWJxdktKO0FhbnZLSTtFQUNJO0VBQ0E7QWJxdktSO0FhbHZLSTtFQUNJO0Fib3ZLUjs7QWE1dUtBO0VBRUk7SUFDSTtJQUNBO0ViOHVLTjtFYTN1S0U7SUFDSTtJQUNBO0ViNnVLTjtFYTF1S0U7SUFDSTtJQUNBO0ViNHVLTjtFYXp1S0U7SUFDSTtFYjJ1S047RWF4dUtFO0lBQ0k7RWIwdUtOO0VhdnVLRTtJQUNJO0VieXVLTjtFYXR1S0U7SUFDSTtJQUNBO0Vid3VLTjtFYXR1S007SUFDSTtJQUNBO0Vid3VLVjtFYXB1S0U7SUFDSTtJQUNBO0lBQ0E7RWJzdUtOO0FBQ0Y7QWM1aU1BOzs7OztFQUFBO0FBU0E7RUFDSTtBZDJpTUo7QWN6aU1JO0VBQ0k7RUFDQTtBZDJpTVI7O0FlempNQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7QWZ1ak1KOztBZ0Jua01BOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtBaEJpa01KO0FnQi9qTUk7RUFKSjtJQUtRO0lBQ0E7RWhCa2tNTjtBQUNGOztBZ0Ivak1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJra01KOztBZ0Ivak1BO0VBQ0k7RUFDQTtBaEJra01KOztBZ0Ivak1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmtrTUo7QWdCaGtNSTtFQUNJO0VBQ0E7RUFDQTtBaEJra01SO0FnQi9qTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJpa01SOztBZ0I3ak1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJna01KOztBZ0I3ak1BO0VBQ0k7QWhCZ2tNSjs7QWdCempNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0ak1KO0FnQjFqTUk7RUFYSjtJQVlRO0lBQ0E7SUFDQTtFaEI2ak1OO0FBQ0Y7O0FnQjFqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNmpNSjs7QWdCMWpNQTtFQUNJO0FoQjZqTUo7O0FnQjFqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNmpNSjs7QWdCMWpNQTtFQUNJO0VBQ0E7RUFDQTtBaEI2ak1KOztBZ0J0ak1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCeWpNSjtBZ0J0ak1JO0VBQ0k7QWhCd2pNUjs7QWdCcGpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ1ak1KOztBZ0Jwak1BO0VBQ0k7RUFDQTtBaEJ1ak1KOztBZ0Jwak1BO0VBQ0k7QWhCdWpNSjs7QWdCcGpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ1ak1KOztBZ0Joak1BO0VBQ0k7RUFDQTtFQUNBO0FoQm1qTUo7QWdCampNSTtFQUxKO0lBTVE7SUFDQTtFaEJvak1OO0FBQ0Y7O0FnQmpqTUE7RUFDSTtFQUNBO0VBQ0E7QWhCb2pNSjs7QWdCampNQTtFQUNJO0FoQm9qTUo7O0FnQmpqTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm9qTUo7O0FnQmpqTUE7RUFDSTtFQUNBO0VBQ0E7QWhCb2pNSjs7QWdCN2lNQTtFQUNJO0VBQ0E7RUFDQTtBaEJnak1KOztBZ0I3aU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJnak1KO0FnQjlpTUk7RUFDSTtBaEJnak1SOztBZ0I1aU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCK2lNSjs7QWdCNWlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQitpTUo7O0FnQjVpTUE7RUFDSTtFQUNBO0FoQitpTUo7O0FnQjVpTUE7RUFDSTtFQUNBO0FoQitpTUo7O0FnQjVpTUE7RUFDSTtBaEIraU1KOztBZ0I1aU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCK2lNSjs7QWdCNWlNQTtFQUNJO0VBQ0E7RUFDQTtBaEIraU1KOztBZ0I1aU1BO0VBQ0k7RUFDQTtBaEIraU1KOztBZ0J4aU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCMmlNSjtBZ0J6aU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCMmlNUjtBZ0J4aU1JO0VBQ0k7QWhCMGlNUjtBZ0J2aU1JO0VBQ0k7QWhCeWlNUjs7QWdCamlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCb2lNSjs7QWdCamlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQm9pTUo7QWdCbGlNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQm9pTVI7QWdCamlNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQm1pTVI7O0FnQi9oTUE7RUFDSTtFQUNBO0VBQ0E7QWhCa2lNSjtBZ0JoaU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCa2lNUjtBZ0JoaU1RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJraU1aOztBZ0J4aE1BO0VBRUk7SUFDSTtFaEIwaE1OO0FBQ0Y7QWdCdmhNQTtFQUdJO0lBQ0k7RWhCdWhNTjtFZ0JyaE1NO0lBQ0k7SUFDQTtFaEJ1aE1WO0FBQ0Y7QWdCL2dNQTtFQUVJOztJQUVJO0VoQmdoTU47QUFDRjtBZ0J2Z01BO0VBQ0k7QWhCeWdNSjs7QWlCdjZNQTs7Ozs7RUFBQTtBQWFJO0VBQ0k7QWpCbTZNUjs7QWlCNzVNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCZzZNSjtBaUI5NU1JO0VBUEo7SUFRUTtJQUNBO0lBQ0E7RWpCaTZNTjtBQUNGOztBaUI5NU1BO0VBQ0k7QWpCaTZNSjs7QWlCOTVNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQmk2TUo7QWlCLzVNSTtFQU5KO0lBT1E7SUFDQTtFakJrNk1OO0VpQmg2TU07SUFDSTtJQUNBO0VqQms2TVY7QUFDRjs7QWlCMTVNQTtFQUNJO0FqQjY1TUo7O0FpQjE1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakI2NU1KO0FpQjM1TUk7RUFOSjtJQU9RO0lBQ0E7RWpCODVNTjtBQUNGOztBaUIzNU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCODVNSjtBaUI1NU1JO0VBQ0k7RUFDQTtFQUNBO0FqQjg1TVI7QWlCMzVNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCNjVNUjtBaUIxNU1JO0VBQ0k7QWpCNDVNUjs7QWlCeDVNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjI1TUo7QWlCejVNSTtFQU5KO0lBT1E7RWpCNDVNTjtBQUNGOztBaUJ6NU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI0NU1KOztBaUJ6NU1BO0VBQ0k7QWpCNDVNSjtBaUIxNU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjQ1TVI7QWlCMTVNUTtFQUNJO0FqQjQ1TVo7QWlCejVNUTtFQUNJO0FqQjI1TVo7QWlCdjVNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCeTVNUjtBaUJ0NU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCdzVNUjs7QWlCbDVNQTtFQUNJO0FqQnE1TUo7O0FpQmw1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnE1TUo7QWlCbjVNSTtFQUNJO0VBQ0E7QWpCcTVNUjtBaUJsNU1JO0VBQ0k7QWpCbzVNUjs7QWlCNTRNQTtFQUNJO0FqQis0TUo7O0FpQjU0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCKzRNSjtBaUI3NE1JO0VBUko7SUFTUTtJQUNBO0VqQmc1TU47QUFDRjs7QWlCMzRNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI4NE1SO0FpQjU0TVE7RUFDSTtFQUNBO0VBQ0E7QWpCODRNWjs7QWlCcjRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ3NE1KOztBaUJuNE1JO0VBQ0k7RUFDQTtFQUNBO0FqQnM0TVI7QWlCbjRNSTtFQUNJO0VBQ0E7QWpCcTRNUjtBaUJsNE1JO0VBQ0k7QWpCbzRNUjtBaUJsNE1RO0VBSEo7SUFJUTtFakJxNE1WO0FBQ0Y7O0FpQi8zTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJrNE1KO0FpQmg0TUk7RUFDSTtFQUNBO0VBQ0E7QWpCazRNUjs7QWlCNTNNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCKzNNSjs7QWlCNTNNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQiszTUo7O0FpQjEzTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjYzTUo7QWlCMzNNSTtFQUNJO0VBQ0E7QWpCNjNNUjtBaUIxM01JO0VBQ0k7RUFDQTtFQUNBO0FqQjQzTVI7QWlCejNNSTtFQXJCSjtJQXNCUTtJQUNBO0VqQjQzTU47QUFDRjs7QWlCdjNNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjAzTUo7QWlCeDNNSTtFQUNJO0VBQ0E7RUFDQTtBakIwM01SO0FpQngzTVE7RUFDSTtBakIwM01aOztBaUJuM01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzM01KO0FpQnAzTUk7RUFDSTtBakJzM01SO0FpQm4zTUk7RUFDSTtBakJxM01SO0FpQmwzTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJvM01SOztBaUI5Mk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCaTNNSjtBaUIvMk1JO0VBQ0k7RUFDQTtFQUNBO0FqQmkzTVI7QWlCOTJNSTtFQUNJO0VBQ0E7RUFDQTtBakJnM01SO0FpQjcyTUk7RUFDSTtFQUNBO0FqQisyTVI7O0FpQnoyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjQyTUo7O0FpQnYyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMDJNSjtBaUJ4Mk1JO0VBQ0k7RUFDQTtFQUNBO0FqQjAyTVI7QWlCdjJNSTtFQUNJO0VBQ0E7RUFDQTtBakJ5Mk1SO0FpQnYyTVE7RUFDSTtBakJ5Mk1aO0FpQnIyTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ1Mk1SOztBaUIvMU1BO0VBRUk7SUFDSTtFakJpMk1OO0VpQjkxTUU7SUFDSTtFakJnMk1OO0VpQjcxTUU7SUFDSTtJQUNBO0VqQisxTU47RWlCNTFNRTtJQUNJO0VqQjgxTU47RWlCMzFNRTtJQUNJO0VqQjYxTU47RWlCMTFNRTtJQUNJO0VqQjQxTU47QUFDRjtBaUJ6MU1BO0VBRUk7SUFDSTtFakIwMU1OO0VpQnYxTUU7SUFDSTtFakJ5MU1OO0VpQnQxTUU7SUFDSTtJQUNBO0VqQncxTU47RWlCcjFNRTtJQUNJO0VqQnUxTU47RWlCcDFNRTtJQUNJO0VqQnMxTU47QUFDRjtBaUI3ME1BOztFQUVJO0VBQ0E7QWpCKzBNSjs7QWlCMzBNQTtFQUVJO0lBQ0k7RWpCNjBNTjtFaUIxME1FO0lBQ0k7RWpCNDBNTjtBQUNGO0FpQngwTUE7RUFFSTs7OztJQUlJO0VqQnkwTU47QUFDRjtBa0J2M05BOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJvM05KOztBa0JqM05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCbzNOSjs7QWtCajNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJvM05KOztBa0JqM05BO0VBQ0k7QWxCbzNOSjs7QWtCajNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCbzNOSjs7QWtCajNOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQm8zTko7O0FrQmozTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJvM05KOztBa0JqM05BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJvM05KO0FrQmwzTkk7RUFDSTtFQUNBO0FsQm8zTlI7O0FrQjUyTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEIrMk5KOztBa0I1Mk5BO0VBQ0k7RUFDQTtFQUNBO0FsQisyTko7O0FrQjUyTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCKzJOSjtBa0I3Mk5JO0VBQ0k7RUFDQTtBbEIrMk5SOztBa0J2Mk5BO0VBQ0k7RUFDQTtBbEIwMk5KOztBa0J2Mk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQjAyTko7QWtCeDJOSTtFQUNJO0VBQ0E7QWxCMDJOUjtBa0J2Mk5JO0VBQ0k7RUFDQTtBbEJ5Mk5SOztBa0JyMk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJ3Mk5KOztBa0JyMk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQncyTko7O0FrQnIyTkE7RUFDSTtFQUNBO0FsQncyTko7O0FrQnIyTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQncyTko7O0FrQnIyTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJ3Mk5KOztBa0JyMk5BO0VBQ0k7QWxCdzJOSjs7QWtCNTFOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQisxTlI7QWtCNzFOUTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCODFOWjtBa0IxMU5ZO0VBQ0k7RUFDQTtBbEI0MU5oQjtBa0J4MU5RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIwMU5aO0FrQngxTlk7RUFDSTtFQUNBO0VBQ0E7QWxCMDFOaEI7QWtCdDFOUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQncxTlo7O0FrQjcwTkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFbEIrME5OO0VrQjcwTk07SUFDSTtJQUNBO0VsQiswTlY7RWtCMzBORTtJQUNJO0VsQjYwTk47RWtCMTBORTtJQUNJO0VsQjQwTk47RWtCejBORTtJQUNJO0VsQjIwTk47RWtCejBOTTtJQUNJO0lBQ0E7RWxCMjBOVjtFa0J2ME5FO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RWxCeTBOTjtFa0J0ME5FO0lBQ0k7RWxCdzBOTjtFa0JyME5FO0lBQ0k7SUFDQTtFbEJ1ME5OO0VrQnIwTk07SUFDSTtJQUNBO0VsQnUwTlY7RWtCbjBORTtJQUNJO0VsQnEwTk47RWtCbDBORTtJQUNJO0VsQm8wTk47RWtCL3pOTTtJQUNJO0lBQ0E7RWxCaTBOVjtFa0I5ek5NO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RWxCZzBOVjtFa0I1ek5FO0lBQ0k7RWxCOHpOTjtFa0I1ek5NO0lBQ0k7SUFDQTtFbEI4ek5WO0VrQjV6TlU7SUFDSTtJQUNBO0VsQjh6TmQ7RWtCMXpOTTtJQUNJO0VsQjR6TlY7RWtCenpOTTtJQUNJO0VsQjJ6TlY7RWtCeHpOTTtJQUNJO0VsQjB6TlY7QUFDRjtBa0Jyek5BO0VBRUk7SUFDSTtFbEJzek5OO0FBQ0Y7QWtCL3lOQTtFQUVJO0lBQ0k7RWxCZ3pOTjtBQUNGO0FtQjlxT0E7Ozs7Ozs7Ozs7RUFBQTtBQWdCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CMnFPSjs7QW1CeHFPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkIycU9KOztBbUJ4cU9BO0VBRUk7SUFDSTtJQUNBO0VuQjBxT047RW1CdnFPRTtJQUNJO0lBQ0E7RW5CeXFPTjtBQUNGO0FtQmhxT0E7RUFDSTtFQUNBO0VBQ0E7QW5Ca3FPSjtBbUJocU9JO0VBQ0k7RUFDQTtBbkJrcU9SOztBbUIzcE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5COHBPSjtBbUI1cE9JO0VBQ0k7RUFDQTtBbkI4cE9SOztBbUIxcE9BO0VBQ0k7RUFDQTtBbkI2cE9KOztBbUIxcE9BO0VBQ0k7RUFDQTtBbkI2cE9KOztBbUIxcE9BO0VBQ0k7RUFDQTtBbkI2cE9KOztBbUIxcE9BO0VBQ0k7RUFDQTtBbkI2cE9KOztBbUIxcE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQjZwT0o7O0FtQjFwT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI2cE9KOztBbUJ0cE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CeXBPSjtBbUJ2cE9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CeXBPUjtBbUJ0cE9JO0VBQ0k7RUFDQTtFQUNBO0FuQndwT1I7QW1CcnBPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJ1cE9SO0FtQnJwT1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJ1cE9aOztBbUIvb09BO0VBQ0k7QW5Ca3BPSjs7QW1CM29PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQjhvT0o7QW1CNW9PSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5COG9PUjtBbUI1b09RO0VBQ0k7RUFDQTtBbkI4b09aO0FtQjNvT1E7RUFDSTtBbkI2b09aO0FtQjFvT1E7RUFDSTtFQUNBO0FuQjRvT1o7QW1CdG9PUTtFQUNJO0VBQ0E7QW5Cd29PWjtBbUJyb09RO0VBQ0k7QW5CdW9PWjtBbUJwb09RO0VBQ0k7RUFDQTtBbkJzb09aOztBbUJwbk9JO0VBQ0k7QW5CdW5PUjs7QW1CL21PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJrbk9KO0FtQmhuT0k7RUFDSTtBbkJrbk9SO0FtQi9tT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJpbk9SO0FtQjltT0k7RUFDSTtFQUNBO0FuQmduT1I7QW1CM21PSTtFQUNJO0VBQ0E7RUFDQTtBbkI2bU9SO0FtQjNtT1E7RUFDSTtFQUNBO0VBQ0E7QW5CNm1PWjtBbUIzbU9ZO0VBQ0k7QW5CNm1PaEI7QW1CdG1PSTtFQUNJO0VBQ0E7RUFDQTtBbkJ3bU9SO0FtQnRtT1E7RUFDSTtFQUNBO0VBQ0E7QW5Cd21PWjtBbUJ0bU9ZO0VBQ0k7QW5Cd21PaEI7O0FtQjVsT0k7RUFDSTtFQUNBO0FuQitsT1I7O0FtQjNsT0E7RUFDSTtFQUNBO0VBQ0EsNEZBQ0k7QW5CNmxPUjtBbUJ2bE9JO0VBQ0k7QW5CeWxPUjtBbUJsbE9JO0VBQ0k7QW5Cb2xPUjs7QW1CaGxPQTtFQUNJO0VBQ0E7QW5CbWxPSjtBbUJqbE9JO0VBQ0k7QW5CbWxPUjs7QW1CM2tPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBbkI0a09KO0FtQjFrT0k7RUFDSTtBbkI0a09SOztBbUJya09BO0VBQ0k7QW5Cd2tPSjs7QW1CbmtPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBLDRGQUNJO0FuQnFrT1I7QW1CbGtPSTtFQUNJO0VBQ0E7QW5Cb2tPUjtBbUJqa09JO0VBQ0k7QW5CbWtPUjtBbUJoa09JO0VBQ0k7QW5Ca2tPUjtBbUJoa09RO0VBQ0k7QW5Ca2tPWjs7QW1CN2pPQTtFQUNJO0VBQ0E7QW5CZ2tPSjs7QW1CN2pPQTtFQUNJO0FuQmdrT0o7O0FtQjNqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI4ak9KO0FtQjVqT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI4ak9SOztBbUJ2ak9BO0VBQ0k7RUFDQTtBbkIwak9KOztBbUJ2ak9BO0VBQ0k7RUFDQTtBbkIwak9KOztBbUJ2ak9BO0VBQ0k7QW5CMGpPSjs7QW1CcGpPQTtFQUNJO0VBQ0E7RUFDQTtBbkJ1ak9KO0FtQmxqT0k7RUFDSTtFQUNBO0FuQm9qT1I7O0FtQnZpT0k7RUFDSTtBbkIwaU9SOztBbUJ0aU9BO0VBQ0k7RUFDQTtFQUNBO0FuQnlpT0o7QW1CdmlPSTtFQUNJO0FuQnlpT1I7QW1CbmlPSTtFQUNJO0FuQnFpT1I7O0FtQmppT0E7RUFDSTtBbkJvaU9KOztBbUJqaU9BO0VBQ0k7RUFDQTtFQUNBO0FuQm9pT0o7O0FtQi9oT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQmtpT0o7QW1CaGlPSTtFQUNJO0VBQ0E7RUFDQTtBbkJraU9SOztBbUIxaE9BO0VBRUk7SUFDSTtFbkI0aE9OO0VtQnZoT007SUFDSTtJQUNBO0lBQ0E7RW5CeWhPVjtFbUJ0aE9NO0lBQ0k7RW5Cd2hPVjtFbUJ0aE9VO0lBQ0k7RW5Cd2hPZDtFbUJuaE9FO0lBQ0k7RW5CcWhPTjtFbUJsaE9FO0lBQ0k7SUFDQTtFbkJvaE9OO0VtQmxoT007SUFDSTtJQUNBO0VuQm9oT1Y7RW1CaGhPRTtJQUNJO0VuQmtoT047RW1CL2dPRTtJQUNJO0VuQmloT047RW1COWdPRTtJQUNJO0VuQmdoT047RW1CM2dPTTtJQUNJO0VuQjZnT1Y7RW1CdmdPTTtJQUNJO0lBQ0E7SUFDQTtFbkJ5Z09WO0VtQnRnT007SUFDSTtFbkJ3Z09WO0FBQ0Y7QW1CbmdPQTtFQUVJO0lBQ0k7SUFDQTtFbkJvZ09OO0FBQ0Y7QW1CMy9OQTtFQUVJO0lBQ0k7RW5CNC9OTjtFbUJ6L05FOzs7SUFHSTtFbkIyL05OO0FBQ0Y7QW1CcC9OQTtFQUVJO0lBQ0k7RW5CcS9OTjtFbUJsL05FO0lBQ0k7SUFDQTtFbkJvL05OO0VtQmovTkU7SUFDSTtFbkJtL05OO0VtQmgvTkU7SUFDSTtFbkJrL05OO0FBQ0Y7QW9COW5QQTs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUNJO0VBQ0E7QXBCc25QSjs7QW9Cam5QQTtFQUNJO0FwQm9uUEo7O0FvQjdtUEE7RUFDSTtFQUNBO0VBQ0E7QXBCZ25QSjs7QW9CMW1QQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLHlQQUNJO0FwQjRtUFI7QW9CcG1QSTtFQUNJO0VBQ0E7QXBCc21QUjtBb0JwbVBRO0VBQ0k7QXBCc21QWjtBb0I5bFBJO0VBQ0k7RUFDQTtBcEJnbVBSO0FvQnpsUEk7RUFDSTtFQUNBO0VBQ0E7QXBCMmxQUjtBb0J6bFBRO0VBQ0k7RUFDQTtFQUNBO0FwQjJsUFo7QW9CeGxQUTtFQUNJO0FwQjBsUFo7QW9CcmxQUTtFQUNJO0FwQnVsUFo7O0FvQmhsUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQm1sUEo7O0FvQmhsUEE7RUFDSTtBcEJtbFBKOztBb0JobFBBO0VBQ0k7RUFDQTtBcEJtbFBKOztBb0JobFBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBCbWxQSjs7QW9COWtQQTtFQUNJO0VBQ0E7RUFDQTtBcEJpbFBKOztBb0I5a1BBO0VBQ0k7RUFDQTtFQUNBO0FwQmlsUEo7O0FvQjlrUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJpbFBKOztBb0Iza1BBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEI4a1BKOztBb0J2a1BBO0VBQ0k7RUFDQTtBcEIwa1BKOztBb0Jua1BBO0VBQ0k7RUFDQTtFQUNBO0FwQnNrUEo7O0FvQm5rUEE7RUFDSTtBcEJza1BKOztBb0I1alBBO0VBRUk7SUFDSTtFcEI4alBOO0FBQ0Y7QXFCOXdQQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUdJO0FyQjZ3UEo7QXFCdndQSTtFQUNJO0FyQnl3UFI7QXFCdHdQSTtFQUNJO0VBQ0E7RUFDQTtBckJ3d1BSO0FxQm53UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsNExBQ0k7QXJCb3dQWjtBcUI3dlBJO0VBQ0k7RUFDQTtBckIrdlBSO0FxQnp2UEk7RUFDSTtFQUNBO0VBQ0E7QXJCMnZQUjtBcUJ4dlBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXJCMHZQUjtBcUJwdlBJOztFQUVJO0FyQnN2UFI7QXFCbnZQSTtFQUNJO0FyQnF2UFI7QXFCbHZQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCb3ZQUjtBcUJqdlBJO0VBQ0k7QXJCbXZQUjtBcUJ6dVBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckIydVBSO0FxQmh1UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCa3VQUjtBcUIzdFBJO0VBQ0k7RUFDQTtBckI2dFBSO0FxQjF0UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckI0dFBSO0FxQmp0UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQm10UFI7QXFCanRQUTtFQUNJO0VBQ0E7RUFDQTtBckJtdFBaO0FxQmh0UFE7RUFDSTtBckJrdFBaO0FxQjFzUEk7RUFDSTtFQUNBO0FyQjRzUFI7QXFCdHNQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ3c1BSO0FxQmxzUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCb3NQUjtBcUJsc1BRO0VBQ0k7RUFDQTtFQUNBO0FyQm9zUFo7QXFCNXJQSTtFQUVJO0lBQ0k7RXJCNnJQVjtFcUIxclBNO0lBQ0k7RXJCNHJQVjtBQUNGOztBcUJ4clBBO0VBRUk7SUFDSTtJQUNBO0VyQjByUE47RXFCdnJQRTtJQUNJO0lBQ0E7RXJCeXJQTjtBQUNGO0FxQi9xUEE7RUFJUTs7O0lBR0k7RXJCOHFQVjtFcUIzcVBNO0lBQ0k7RXJCNnFQVjtBQUNGO0FzQnQ4UEE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBMEJBO0VBT0k7RUFDQTtFQUNBO0VBR0E7RUFHQTtBdEI2N1BKOztBc0J2N1BBO0VBQ0k7QXRCMDdQSjs7QXNCcDdQQTtFQUNJO0VBQ0E7QXRCdTdQSjs7QXNCNzZQQTtFQUNJO0F0Qmc3UEo7O0FzQjM2UEE7RUFDSTtBdEI4NlBKOztBc0J2NlBBO0VBQ0k7RUFDQTtBdEIwNlBKOztBc0JoNlBBO0VBQ0k7QXRCbTZQSjs7QXVCaGdRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUEwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0F2QisvUEo7QXVCNy9QSTtFQUlJO0VBQ0E7QXZCNC9QUjtBdUJ6L1BJO0VBQ0k7RUFDQTtBdkIyL1BSO0F1QngvUEk7RUFDSTtFQUNBO0F2QjAvUFI7QXVCdi9QSTtFQUNJO0VBQ0E7QXZCeS9QUjtBdUJ0L1BJO0VBQ0k7RUFDQTtBdkJ3L1BSOztBd0IzalFBOzs7Ozs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7O0VBQUE7QUFhQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBekJza1FKO0F5QmxrUUk7O0VBQ0k7RUFDQTtBekJxa1FSO0F5QmxrUUk7O0VBQ0k7QXpCcWtRUjtBeUJoa1FJOztFQUNJO0VBQ0E7RUFDQTtBekJta1FSO0F5QmhrUVE7Ozs7RUFFSTtBekJva1FaO0F5Qi9qUVE7O0VBQ0k7RUFDQTtBekJra1FaO0F5QjdqUVE7O0VBQ0k7RUFDQTtFQUNBO0F6QmdrUVo7QXlCcmpRSTs7OztFQUVJO0VBQ0E7RUFDQTtBekJ5alFSO0F5QnZqUVE7Ozs7Ozs7O0VBRUk7QXpCK2pRWjtBeUI1alFROzs7O0VBQ0k7RUFDQTtBekJpa1FaO0F5QjNqUUk7Ozs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QitqUVI7QXlCMWpRSTs7OztFQUVJO0F6QjhqUVI7QXlCeGpRSTs7RUFDSTtFQUNBO0VBQ0E7QXpCMmpRUjtBeUJ6alFROztFQUNJO0VBQ0E7RUFLQTtBekJ3alFaO0F5QnRqUVk7OztFQUVJO0VBQ0E7QXpCeWpRaEI7QXlCdGpRWTs7RUFDSTtFQUNBO0F6QnlqUWhCO0F5QmxqUUk7O0VBQ0k7RUFDQTtBekJxalFSO0F5Qm5qUVE7O0VBQ0k7RUFDQTtBekJzalFaOztBeUI5aVFJO0VBREo7SUFFUTtFekJralFOO0FBQ0Y7O0EwQnhzUUE7Ozs7O0VBQUE7QUFXQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQnNzUUo7QTBCbnNRSTs7RUFDSTtFQUNBO0ExQnNzUVI7QTBCbnNRSTs7RUFDSTtBMUJzc1FSOztBMEI5clFBO0VBQ0k7QTFCaXNRSjs7QTBCMXJRQTtFQUNJO0ExQjZyUUo7O0EwQnRyUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUJ5clFKO0EwQnJyUUk7RUFDSTtFQUNBO0ExQnVyUVI7O0EwQjdxUUk7RUFDSTtFQUNBO0VBQ0E7QTFCZ3JRUjtBMEI3cVFJOztFQUVJO0VBQ0E7QTFCK3FRUjtBMEI1cVFROztFQUNJO0VBQ0E7QTFCK3FRWjtBMEIzcVFJO0VBQ0k7RUFDQTtFQUNBO0ExQjZxUVI7O0EwQnJxUUE7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0ExQndxUUo7QTBCdHFRSTs7O0VBQ0k7QTFCMHFRUjs7QTBCbHFRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCcXFRSjtBMEJscVFJO0VBQ0k7RUFDQTtBMUJvcVFSOztBMEJocVFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFCbXFRSjtBMEJqcVFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCbXFRUjtBMEJqcVFRO0VBQ0k7QTFCbXFRWjtBMEJocVFRO0VBQ0k7QTFCa3FRWjtBMEI5cFFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJncVFSOztBMEJ0cFFJO0VBQ0k7RUFDQTtFQUNBO0ExQnlwUVI7QTBCdnBRUTtFQUNJO0VBQ0E7QTFCeXBRWjtBMEJycFFJO0VBQ0k7QTFCdXBRUjtBMEJycFFRO0VBQ0k7RUFDQTtBMUJ1cFFaO0EwQnJwUVk7O0VBRUk7QTFCdXBRaEI7QTBCaHBRSTtFQUNJO0ExQmtwUVI7QTBCaHBRUTtFQUNJO0ExQmtwUVo7O0EwQnZvUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUIwb1FSO0EwQnhvUVE7RUFDSTtFQUNBO0ExQjBvUVo7O0EwQmpvUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUJvb1FKO0EwQmxvUUk7RUFDSTtBMUJvb1FSO0EwQmpvUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUJtb1FSO0EwQjluUVE7O0VBRUk7QTFCZ29RWjs7QTBCcm5RSTtFQUNJO0ExQnduUVI7QTBCcm5RSTtFQUNJO0VBQ0E7QTFCdW5RUjtBMEJwblFJOztFQUVJO0ExQnNuUVI7O0EwQjltUUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQmluUUo7QTBCL21RSTs7RUFDSTtFQUNBO0ExQmtuUVI7O0EwQjltUUE7O0VBRUk7QTFCaW5RSjtBMEIvbVFJOztFQUNJO0VBQ0E7QTFCa25RUjs7QTBCOW1RQTtFQUNJO0VBQ0E7RUFDQTtBMUJpblFKOztBMEI5bVFBO0VBQ0k7RUFDQTtFQUNBO0ExQmluUUo7O0EwQjFtUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBMUI0bVFKO0EwQjFtUUk7RUFFSTtFQUNBO0ExQjJtUVI7QTBCeG1RSTtFQUNJO0VBQ0E7QTFCMG1RUjtBMEJ4bVFRO0VBQ0k7RUFDQTtBMUIwbVFaO0EwQnRtUUk7RUFDSTtFQUNBO0ExQndtUVI7QTBCcm1RSTtFQUNJO0VBQ0E7RUFDQTtBMUJ1bVFSOztBMEJqbVFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QTFCbW1RSjtBMEJqbVFJO0VBRUk7RUFDQTtBMUJrbVFSOztBMEIxbFFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCNmxRSjtBMEIzbFFJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0ExQjZsUVI7O0EwQnJsUUE7Ozs7Ozs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJ1bFFKO0EwQm5sUUk7RUFDSTtFQUNBO0VBQ0E7QTFCcWxRUjtBMEJobFFJO0VBQ0k7QTFCa2xRUjs7QTBCMWtRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0ExQjZrUUo7QTBCM2tRSTs7RUFFSTtBMUI2a1FSOztBMEJua1FJOzs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBMUJza1FSO0EwQnBrUVE7RUFSSjs7O0lBU1E7RTFCeWtRVjtBQUNGO0EwQnRrUUk7RUFDSTtFQUNBO0VBQ0E7QTFCd2tRUjtBMEJ0a1FRO0VBTEo7SUFNUTtJQUNBO0UxQnlrUVY7QUFDRjs7QTBCL2pRSTs7RUFFSTtBMUJra1FSO0EwQi9qUUk7O0VBRUk7RUFDQTtBMUJpa1FSO0EwQjlqUUk7RUFDSTtFQUNBO0ExQmdrUVI7O0EwQnJqUUE7RUFDSTtBMUJ3alFKOztBMEJqalFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCb2pRSjtBMEJsalFJO0VBQ0k7RUFDQTtBMUJvalFSOztBMEJoalFBO0VBQ0k7RUFDQTtFQUNBO0ExQm1qUUo7QTBCampRSTtFQUNJO0VBQ0E7QTFCbWpRUjtBMEJoalFJO0VBQ0k7QTFCa2pRUjs7QTBCeGlRQTtFQUNJO0ExQjJpUUo7O0EwQmxpUUE7RUFDSTtBMUJxaVFKOztBMEJsaVFBO0VBRUk7SUFDSTtFMUJvaVFOO0UwQi9oUU07SUFDSTtJQUNBO0UxQmlpUVY7RTBCN2hRRTtJQUNJO0UxQitoUU47RTBCNWhRRTtJQUNJO0lBQ0E7RTFCOGhRTjtFMEI1aFFNO0lBQ0k7SUFDQTtFMUI4aFFWO0FBQ0Y7QTJCcG5SQTs7Ozs7O0VBQUE7QUFZQTs7RUFFSTtFQUNBO0VBQ0E7QTNCaW5SSjtBMkI3bVJJOztFQUNJO0VBQ0E7RUFDQTtBM0JnblJSO0EyQjdtUkk7O0VBQ0k7RUFDQTtFQUNBO0EzQmduUlI7QTJCOW1SUTs7RUFDSTtFQUNBO0EzQmluUlo7QTJCM21SUTs7RUFDSTtFQUNBO0EzQjhtUlo7QTJCdG1SUTs7RUFDSTtFQUNBO0VBQ0E7QTNCeW1SWjtBMkJ0bVJROztFQUNJO0EzQnltUlo7QTJCcm1SSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQndtUlI7QTJCcm1SSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQndtUlI7QTJCcm1SSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0J3bVJSO0EyQnJtUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0J3bVJSO0EyQnJtUkk7O0VBQ0k7RUFDQTtFQUNBO0EzQndtUlI7QTJCcm1SSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0J3bVJSO0EyQnBtUkk7RUFFSTs7SUFDSTtJQUNBO0UzQnNtUlY7RTJCcG1SVTs7SUFDSTtJQUNBO0UzQnVtUmQ7RTJCbm1STTs7SUFDSTtJQUNBO0lBQ0E7RTNCc21SVjtFMkJubVJNOzs7SUFDSTtFM0J1bVJWO0FBQ0Y7O0EyQjVsUkk7RUFDSTtFQUNBO0VBQ0E7QTNCK2xSUjtBMkIxbFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0I0bFJSO0EyQjFsUlE7RUFDSTtFQUNBO0VBQ0E7QTNCNGxSWjtBMkIxbFJZO0VBQ0k7QTNCNGxSaEI7QTJCemxSWTtFQUNJO0EzQjJsUmhCO0EyQnZsUlE7RUFDSTtBM0J5bFJaO0EyQnJsUkk7RUFDSTtBM0J1bFJSO0EyQnJsUlE7RUFDSTtBM0J1bFJaO0EyQmxsUlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0JvbFJaO0EyQjlrUlE7RUFDSTtFQUNBO0EzQmdsUlo7QTJCM2tSUTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBM0I2a1JaO0EyQnprUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQjJrUlI7QTJCeGtSSTtFQUNJO0EzQjBrUlI7QTJCcmtSSTtFQUNJO0VBQ0E7RUFDQTtBM0J1a1JSO0EyQnJrUlE7RUFDSTtFQUNBO0EzQnVrUlo7QTJCbmtSSTtFQUNJO0EzQnFrUlI7QTJCbGtSSTtFQUVJO0lBQ0k7RTNCbWtSVjtBQUNGOztBMkJ2alJROztFQUVJO0VBQ0E7QTNCMGpSWjtBMkJ0alJJO0VBQ0k7RUFDQTtBM0J3alJSO0EyQnJqUkk7RUFDSTtFQUNBO0EzQnVqUlI7QTJCcmpSUTtFQUNJO0VBQ0E7QTNCdWpSWjtBMkJwalJRO0VBQ0k7RUFDQTtBM0JzalJaO0EyQm5qUlE7RUFDSTtFQUNBO0EzQnFqUlo7QTJCampSSTtFQUNJO0VBQ0E7QTNCbWpSUjs7QTRCLzBSQTs7O0VBQUE7QUFhQTtFQUNJO0VBQ0E7RUFDQTtBNUJ5MFJKOztBNkI3d1JJO0VEdERBO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTVCdTBSTjtFNEJyMFJNO0lBQ0k7RTVCdTBSVjtFNEJwMFJNO0lBQ0k7RTVCczBSVjtBQUNGO0E0Qjl6UkE7RUFDSTtBNUJnMFJKO0E0Qjl6Ukk7RUFDSTtBNUJnMFJSO0E0Qjd6Ukk7RUFDSTtBNUIrelJSO0E2QnJ6Ukk7RURYQTtJQUlRO0U1QmcwUlY7QUFDRjtBNEI3elJJO0VBQ0k7RUFDQTtBNUIrelJSO0E2Qjl6Ukk7RURIQTtJQUtRO0U1QmcwUlY7QUFDRjtBNEIxelJJO0VBQ0k7QTVCNHpSUjtBNEJ0elJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTVCd3pSUjtBNEJ0elJRO0VBQ0k7QTVCd3pSWjtBNEJselJJO0VBQ0k7QTVCb3pSUjs7QTRCMXlSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUI2eVJSO0E0QjN5UlE7RUFDSTtFQUNBO0VBQ0E7QTVCNnlSWjtBNEJ6eVJJO0VBQ0k7RUFDQTtFQUNBO0E1QjJ5UlI7QTRCenlSUTtFQUVJO0VBQ0E7QTVCMHlSWjs7QTRCanlSQTtFQUNJO0VBQ0E7QTVCb3lSSjtBNEJseVJJO0VBQ0k7QTVCb3lSUjtBNEJqeVJJO0VBQ0k7RUFDQTtFQUNBO0E1Qm15UlI7QTRCanlSUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCbXlSWjtBNEIveFJJO0VBQ0k7QTVCaXlSUjtBNEIveFJRO0VBQ0k7RUFDQTtFQUNBO0E1Qml5Ulo7O0E0QnR4Ukk7RUFDSTtFQUNBO0E1Qnl4UlI7QTRCdHhSSTtFQUNJO0VBQ0E7RUFDQTtBNUJ3eFJSOztBNEI5d1JJO0VBQ0k7QTVCaXhSUjtBNEIvd1JRO0VBQ0k7QTVCaXhSWjtBNEI5d1JRO0VBQ0k7RUFDQTtBNUJneFJaO0E0Qjd3UlE7RUFDSTtBNUIrd1JaO0E0QjN3Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E1QjZ3UlI7QTRCM3dSUTtFQUNJO0E1QjZ3Ulo7O0E0QnB3UkE7RUFJUTs7O0lBR0k7RTVCb3dSVjtBQUNGO0E0QnZ2Ukk7RUFDSTtFQUNBO0E1Qnl2UlI7QTRCdnZSUTtFQUNJO0VBQ0E7QTVCeXZSWjtBNEJ0dlJRO0VBQ0k7QTVCd3ZSWjtBNEJwdlJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTVCc3ZSUjtBNEJodlJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUJrdlJSO0E0Qi91Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCaXZSUjtBNEIvdVJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0E1Qit1Ulo7QTRCenVSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBNUIydVJSO0E0Qnh1Ukk7RUFDSTtBNUIwdVJSO0E0QnJ1UlE7RUFDSTtBNUJ1dVJaO0E0QnB1UlE7RUFDSTtBNUJzdVJaOztBOEJ0alNBOzs7OztFQUFBO0FBZ0JBO0VBQ0k7RUFDQTtFQUNBO0E5QitpU0o7QThCN2lTSTtFQUxKO0lBTVE7RTlCZ2pTTjtBQUNGO0E4QjlpU0k7RUFUSjtJQVVRO0U5QmlqU047QUFDRjs7QThCOWlTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCaWpTSjtBOEI1aVNJO0VBVko7SUFXUTtFOUIraVNOO0FBQ0Y7QThCdGlTSTtFQUNJO0VBQ0E7QTlCd2lTUjtBOEJoaVNRO0VBREo7SUFFUTtFOUJtaVNWO0FBQ0Y7QThCamlTUTtFQUNJO0E5Qm1pU1o7O0E4QjloU0E7RUFDSTtFQUNBO0VBQ0E7QTlCaWlTSjs7QThCOWhTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QmlpU0o7QThCL2hTSTtFQUNJO0VBQ0E7QTlCaWlTUjtBOEI5aFNJO0VBQ0k7RUFDQTtBOUJnaVNSO0E4QjdoU0k7RUFDSTtFQUNBO0E5QitoU1I7QThCNWhTSTtFQUNJO0VBQ0E7QTlCOGhTUjtBOEIzaFNJO0VBQ0k7RUFDQTtBOUI2aFNSOztBOEJ6aFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCNGhTSjs7QThCemhTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCNGhTSjs7QThCemhTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUI0aFNKO0E4QnZoU0k7RUFDSTtBOUJ5aFNSO0E4QjlnU0k7RUFDSTtBOUJnaFNSOztBOEI1Z1NBO0VBQ0k7RUFDQTtFQUNBO0E5QitnU0o7O0E4QnhnU0E7RUFDSTtFQUNBO0E5QjJnU0o7O0E4QnhnU0E7RUFDSTtBOUIyZ1NKOztBOEJ4Z1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIyZ1NKOztBOEJ4Z1NBO0VBQ0k7QTlCMmdTSjs7QThCeGdTQTtFQUNJO0VBQ0E7RUFDQTtFQU9BO0VBQ0E7RUFDQTtFQUNBO0E5QnFnU0o7O0E4QmxnU0E7RUFDSTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJrZ1NKOztBOEIvL1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCa2dTSjs7QThCLy9SQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJrZ1NKOztBOEIvL1JBO0VBS0k7RUFDQTtBOUI4L1JKOztBOEIzL1JBO0VBQ0k7RUFDQTtBOUI4L1JKOztBOEJ0L1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnkvUko7O0E4QnQvUkE7RUFJSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCcy9SSjtBOEJwL1JJO0VBQ0k7RUFDQTtBOUJzL1JSOztBOEJsL1JBO0VBR0k7RUFDQTtFQUNBO0VBQ0E7QTlCbS9SSjs7QThCaC9SQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qm0vUko7O0E4QjUrUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCKytSSjs7QThCNStSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIrK1JKOztBOEI1K1JBO0VBQ0k7RUFDQTtBOUIrK1JKOztBOEI1K1JBO0VBQ0k7RUFDQTtFQUNBO0E5QisrUko7O0E4QjErUkk7RUFDSTtFQUNBO0E5QjYrUlI7O0E4QnorUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QjQrUko7QThCMStSSTtFQUNJO0E5QjQrUlI7QThCeitSSTtFQUNJO0E5QjIrUlI7QThCeCtSSTtFQUNJO0E5QjArUlI7QThCditSSTtFQUNJO0E5QnkrUlI7O0E4QnIrUkE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBOUJ1K1JKO0E4QnIrUkk7RUFDSTtFQUNBO0E5QnUrUlI7QThCcCtSSTtFQUNJO0VBQ0E7QTlCcytSUjtBOEJuK1JJO0VBQ0k7RUFDQTtBOUJxK1JSO0E4QmwrUkk7RUFDSTtFQUNBO0E5Qm8rUlI7O0E4QmgrUkE7RUFDSTtFQUNBO0VBQ0E7QTlCbStSSjs7QThCaCtSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJtK1JKO0E4QmgrUkk7RUFDSTtBOUJrK1JSO0E4Qi85Ukk7RUFDSTtFQUNBO0E5QmkrUlI7QThCOTlSSTtFQUNJO0E5QmcrUlI7QThCOTlSUTtFQUNJO0E5QmcrUlo7QThCNzlSUTtFQUNJO0E5Qis5Ulo7O0E4QjE5UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QjY5Uko7O0E4QjE5UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUI2OVJKOztBOEIxOVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCNjlSSjs7QThCMTlSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QjY5Uko7O0E4QjE5UkE7RUFDSTtFQUNBO0VBQ0E7QTlCNjlSSjs7QThCMTlSQTtFQUNJO0VBQ0E7RUFDQTtBOUI2OVJKOztBOEJ0OVJBO0VBQ0k7RUFDQTtFQUNBO0E5Qnk5Uko7O0E4QnQ5UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCeTlSSjtBOEJyOVJJO0VBQ0k7RUFDQTtBOUJ1OVJSO0E4QnA5Ukk7RUFDSTtFQUNBO0E5QnM5UlI7QThCbjlSSTtFQUNJO0VBQ0E7QTlCcTlSUjtBOEJuOVJRO0VBQ0k7QTlCcTlSWjtBOEJqOVJJO0VBQ0k7RUFDQTtBOUJtOVJSO0E4Qmo5UlE7RUFDSTtBOUJtOVJaO0E4Qi84Ukk7RUFDSTtFQUNBO0E5Qmk5UlI7QThCLzhSUTtFQUNJO0E5Qmk5Ulo7QThCNzhSSTtFQUNJO0VBQ0E7QTlCKzhSUjtBOEI3OFJRO0VBQ0k7QTlCKzhSWjtBOEIzOFJJO0VBRUk7SUFFSTtJQUNBO0U5QjI4UlY7QUFDRjs7QThCdjhSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCMDhSSjs7QThCdjhSQTtFQUNJO0VBQ0E7RUFDQTtBOUIwOFJKOztBOEJsOFJBO0VBQ0k7RUFDQTtBOUJxOFJKOztBOEJsOFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJxOFJKO0E4Qm44Ukk7RUFDSTtBOUJxOFJSOztBOEJqOFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJvOFJKO0E4Qmw4Ukk7RUFDSTtFQUNBO0E5Qm84UlI7QThCajhSSTtFQUVJO0VBQ0E7QTlCazhSUjtBOEIvN1JJO0VBQ0k7RUFDQTtBOUJpOFJSO0E4Qjk3Ukk7RUFDSTtFQUNBO0E5Qmc4UlI7QThCNzdSSTtFQUNJO0VBQ0E7QTlCKzdSUjs7QThCMzdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCODdSSjs7QThCMzdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCODdSSjs7QThCMTdSQTtFQUNJO0VBS0E7QTlCeTdSSjs7QThCdDdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJ5N1JKO0E4QnY3Ukk7RUFDSTtFQUNBO0E5Qnk3UlI7QThCdDdSSTtFQUNJO0VBQ0E7QTlCdzdSUjs7QThCcDdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdTdSSjs7QThCcDdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnU3Uko7QThCcjdSSTtFQUNJO0E5QnU3UlI7QThCcDdSSTtFQUNJO0VBQ0E7RUFDQTtBOUJzN1JSO0E4Qm43Ukk7RUFDSTtBOUJxN1JSOztBOEJqN1JBO0VBR0k7QTlCazdSSjs7QThCLzZSQTtFQUNJO0VBQ0E7RUFDQTtBOUJrN1JKOztBOEIvNlJBO0VBQ0k7QTlCazdSSjs7QStCbG9UQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQmdvVEo7O0ErQjduVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQmdvVEo7O0ErQjduVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CZ29USjtBK0I5blRJO0VBQ0k7RUFDQTtFQUNBO0EvQmdvVFI7QStCOW5UUTtFQUNJO0EvQmdvVFo7O0ErQjNuVEE7RUFDSTtFQUNBO0VBQ0E7QS9COG5USjs7QStCdm5UQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0IwblRKOztBK0J2blRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjBuVEo7O0ErQnJuVEE7RUFDSTtBL0J3blRKOztBK0JsblRBOztFQUVJO0EvQnFuVEo7O0ErQmxuVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JxblRKOztBK0I5bVRBO0VBQ0k7QS9CaW5USjtBK0IvbVRJO0VBQ0k7QS9CaW5UUjs7QStCN21UQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CZ25USjs7QStCN21UQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQmduVEo7O0ErQjdtVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JnblRKOztBK0J2bVRJO0VBQ0k7RUFDQTtBL0IwbVRSO0ErQjltVEE7RUFPSTs7OztLQUFBO0EvQjhtVEo7QStCeG1USTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0IwbVRSO0ErQnhtVFE7RUFDSTtFQUNBO0EvQjBtVFo7QStCdm1UUTtFQUNJO0VBQ0E7QS9CeW1UWjtBK0J0bVRRO0VBQ0k7RUFDQTtFQUNBO0EvQndtVFo7QStCcG1USTtFQUNJO0EvQnNtVFI7O0ErQjlsVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0JpbVRKOztBK0I5bFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CaW1USjtBK0IvbFRJO0VBQ0k7RUFDQTtBL0JpbVRSOztBK0J6bFRBOztFQUVJO0VBQ0E7QS9CNGxUSjtBK0IxbFRJOztFQUNJO0EvQjZsVFI7QStCMWxUSTs7RUFDSTtFQUNBO0VBQ0E7QS9CNmxUUjtBK0IxbFRJOztFQUNJO0EvQjZsVFI7O0ErQnpsVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CNGxUSjs7QStCemxUQTtFQUNJO0VBQ0E7QS9CNGxUSjs7QStCemxUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQjRsVEo7QStCMWxUSTtFQUNJO0EvQjRsVFI7O0ErQnhsVEE7RUFDSTtFQUNBO0VBQ0E7QS9CMmxUSjs7QStCeGxUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQjJsVEo7O0ErQnhsVEE7RUFDSTtBL0IybFRKO0ErQnpsVEk7RUFDSTtFQUNBO0EvQjJsVFI7QStCemxUUTtFQUNJO0EvQjJsVFo7O0ErQmxsVEE7RUFDSTtFQUNBO0VBQ0E7QS9CcWxUSjs7QStCbGxUQTtFQUNJO0VBQ0E7RUFDQTtBL0JxbFRKO0ErQm5sVEk7RUFDSTtFQUNBO0EvQnFsVFI7QStCbGxUSTtFQUNJO0EvQm9sVFI7O0ErQjVrVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CK2tUSjs7QStCeGtUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQjJrVEo7O0ErQnhrVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0Iya1RKOztBK0Jwa1RBO0VBQ0k7RUFDQTtFQUNBO0EvQnVrVEo7O0ErQnBrVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CdWtUSjs7QStCcGtUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CdWtUSjtBK0Jya1RJO0VBQ0k7QS9CdWtUUjs7QStCbmtUQTtFQUNJO0VBQ0E7QS9Cc2tUSjs7QStCbmtUQTtFQUNJO0EvQnNrVEo7O0ErQjdqVEk7RUFDSTtFQUNBO0VBQ0E7QS9CZ2tUUjtBK0I3alRJO0VBQ0k7QS9CK2pUUjs7QStCM2pUQTtFQUNJO0VBQ0E7RUFDQTtBL0I4alRKOztBK0IzalRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjhqVEo7QStCNWpUSTtFQUNJO0EvQjhqVFI7O0ErQjFqVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CNmpUSjs7QStCMWpUQTtFQUNJO0VBQ0E7RUFDQTtBL0I2alRKO0ErQjNqVEk7RUFDSTtFQUNBO0EvQjZqVFI7QStCM2pUUTtFQUNJO0EvQjZqVFo7QStCempUSTtFQUNJO0VBQ0E7QS9CMmpUUjs7QStCdmpUQTtFQUVJO0lBQ0k7SUFDQTtFL0J5alROO0FBQ0Y7QStCbGpUQTtFQUVJO0lBQ0k7RS9CbWpUTjtFK0JoalRFO0lBQ0k7RS9Ca2pUTjtFK0IvaVRFO0lBQ0k7RS9CaWpUTjtBQUNGO0ErQjlpVEE7RUFFSTtJQUNJO0UvQitpVE47RStCNWlURTtJQUNJO0UvQjhpVE47RStCM2lURTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RS9CNmlUTjtFK0IzaVRNO0lBQ0k7RS9CNmlUVjtFK0J6aVRFO0lBQ0k7RS9CMmlUTjtFK0J4aVRFO0lBQ0k7SUFDQTtJQUNBO0UvQjBpVE47QUFDRjtBK0JuaVRBO0VBRUk7Ozs7OztJQU1JO0UvQm9pVE47RStCamlURTtJQUNJO0lBQ0E7RS9CbWlUTjtBQUNGO0FnQ3ZqVUE7Ozs7O0VBQUE7QUFTQTtFQUNJO0VBQ0E7RUFDQTtBaENzalVKOztBZ0NualVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDc2pVSjs7QWdDbmpVQTtFQUNJO0VBQ0E7RUFDQTtBaENzalVKOztBZ0NualVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBaENvalVKOztBZ0NqalVBO0VBQ0k7RUFDQTtFQUNBO0FoQ29qVUo7O0FnQ2pqVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQ29qVUo7QWdDbGpVSTtFQUNJO0VBQ0E7QWhDb2pVUjs7QWdDaGpVQTtFQUNJO0FoQ21qVUo7O0FnQ2hqVUE7RUFDSTtFQUNBO0VBQ0E7QWhDbWpVSjs7QWdDaGpVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQ21qVUo7O0FnQ2hqVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaENtalVKO0FnQ2pqVUk7RUFDSTtFQUNBO0FoQ21qVVI7O0FnQy9pVUE7RUFDSTtBaENralVKOztBZ0MvaVVBO0VBQ0k7RUFDQTtFQUNBO0FoQ2tqVUo7O0FnQy9pVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaENralVKOztBaUM1cFVBOzs7OztFQUFBO0FBU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakM0cFVKO0FpQzFwVUk7RUFDSTtFQUNBO0FqQzRwVVI7QWlDenBVSTtFQUNJO0FqQzJwVVI7O0FpQ3JwVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDd3BVSjs7QWlDcnBVQTtFQUVJO0lBQ0k7SUFDQTtFakN1cFVOO0FBQ0Y7QWtDbnNVQTs7Ozs7OztFQUFBO0FDQUE7Ozs7O0VBQUE7QUNBQTs7O0VBQUE7QUFhQTtFQUNJO0FwQzBzVUo7O0FvQ25zVUE7RUFDSTtBcENzc1VKO0FvQ3BzVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDc3NVUjtBb0Nwc1VRO0VBQ0k7RUFDQTtBcENzc1VaO0FvQ25zVVE7RUFDSTtFQUNBO0VBQ0E7QXBDcXNVWjtBb0Nsc1VRO0VBQ0k7RUFDQTtFQUNBO0FwQ29zVVo7O0FvQzNyVUE7RUFDSTtFQUNBO0FwQzhyVUo7O0FvQzNyVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM4clVKO0FvQzVyVUk7RUFDSTtFQUNBO0VBQ0E7QXBDOHJVUjtBb0M1clVRO0VBQ0k7RUFDQTtFQUNBO0FwQzhyVVo7QW9DMXJVSTtFQUNJO0VBQ0E7QXBDNHJVUjtBb0MxclVRO0VBQ0k7RUFDQTtBcEM0clVaO0FvQ3pyVVE7RUFDSTtFQUNBO0FwQzJyVVo7QW9DdnJVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQ3lyVVI7QW9DcnJVUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3VyVVo7QW9DaHJVUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDa3JVWjtBb0MvcVVRO0VBQ0k7RUFDQTtFQUNBO0FwQ2lyVVo7QW9DOXFVUTtFQUNJO0VBQ0E7RUFDQTtBcENnclVaO0FvQzlxVVk7RUFDSTtBcENnclVoQjtBb0M3cVVZO0VBQ0k7RUFDQTtFQUNBO0FwQytxVWhCO0FvQzFxVUk7RUFDSTtBcEM0cVVSO0FvQ3pxVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzJxVVI7QW9DeHFVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDMHFVUjtBb0N2cVVJO0VBQ0k7RUFDQTtFQUNBO0FwQ3lxVVI7QW9DdHFVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3dxVVI7QW9DdHFVUTtFQUNJO0VBQ0E7QXBDd3FVWjtBb0NwcVVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENzcVVSOztBb0M1cFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDK3BVUjtBb0M1cFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM4cFVSOztBb0MxcFVBO0VBQ0k7RUFDQTtBcEM2cFVKOztBb0MxcFVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM2cFVKO0FvQzNwVUk7RUFDSTtFQUNBO0VBQ0E7QXBDNnBVUjtBb0MzcFVRO0VBQ0k7RUFDQTtFQUNBO0FwQzZwVVo7QW9DMXBVUTtFQUNJO0VBQ0E7RUFDQTtBcEM0cFVaO0FvQ3hwVUk7RUFDSTtBcEMwcFVSO0FvQ3ZwVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3lwVVI7QW9DdHBVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDd3BVUjtBb0N0cFVRO0VBQ0k7RUFDQTtBcEN3cFVaO0FvQ3BwVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDc3BVUjtBb0NwcFVRO0VBQ0k7RUFDQTtFQUNBO0FwQ3NwVVo7QW9DbnBVUTtFQUNJO0VBQ0E7RUFDQTtBcENxcFVaO0FvQ2pwVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ21wVVI7QW9DanBVUTtFQUNJO0FwQ21wVVo7QW9DaHBVUTtFQUNJO0VBQ0E7QXBDa3BVWjtBb0NocFVZO0VBQ0k7RUFDQTtBcENrcFVoQjs7QW9Dbm9VUTtFQUNJO0FwQ3NvVVo7QW9DcG9VWTtFQUNJO0FwQ3NvVWhCO0FvQ25vVVk7RUFDSTtBcENxb1VoQjtBb0M1blVRO0VBQ0k7QXBDOG5VWjtBb0N6blVRO0VBQ0k7QXBDMm5VWjs7QW9DbG5VQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENxblVKOztBb0NsblVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3FuVUo7O0FvQ2xuVUE7RUFDSTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDb25VSjs7QW9Dam5VQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENvblVKOztBb0NqblVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDb25VSjs7QW9Dam5VQTtFQUNJO0VBQ0E7QXBDb25VSjs7QW9Dam5VQTtFQUNJO0VBQ0E7RUFDQTtBcENvblVKO0FvQ2huVUk7RUFDSTtFQUNBO0VBQ0E7QXBDa25VUjtBb0NoblVRO0VBQ0k7QXBDa25VWjtBb0MvbVVRO0VBQ0k7QXBDaW5VWjtBb0M5bVVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDZ25VWjs7QTZCMy9VSTtFT21aQTtJQUNJO0lBQ0E7RXBDNG1VTjtFb0N6bVVFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFcEMybVVOO0VvQ3htVUU7SUFFSTtNQUNJO0lwQ3ltVVI7SW9DdG1VSTtNQUNJO0lwQ3dtVVI7RUFDRjtBQUNGO0FvQ25tVUE7RUFDSTtBcENxbVVKOztBNkJwaFZJO0VPd2JBO0lBQ0k7SUFDQTtJQUNBO0VwQ2dtVU47RW9DN2xVRTtJQUNJO0VwQytsVU47RW9DMWxVTTtJQUNJO0lBQ0E7SUFDQTtFcEM0bFVWO0VvQzFsVVU7O0lBRUk7RXBDNGxVZDtFb0MxbFVjOztJQUNJO0VwQzZsVWxCO0VvQ3JsVUU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VwQ3VsVU47RW9DcmxVTTtJQUNJO0VwQ3VsVVY7RW9DcGxVTTtJQUNJO0VwQ3NsVVY7QUFDRjtBb0M5a1VBO0VBSVE7OztJQUdJO0VwQzZrVVY7RW9DMWtVTTtJQUNJO0VwQzRrVVY7QUFDRjtBb0Nwa1VBO0VBQ0k7QXBDc2tVSjtBb0Nsa1VRO0VBQ0k7QXBDb2tVWjtBb0M3alVJO0VBQ0k7QXBDK2pVUjtBb0M3alVRO0VBQ0k7QXBDK2pVWjs7QW9DeGpVQTtFQUNJO0VBQ0E7QXBDMmpVSjtBb0N6alVJO0VBQ0k7RUFDQTtBcEMyalVSO0FvQ3pqVVE7RUFDSTtBcEMyalVaO0FvQ3hqVVE7RUFDSTtBcEMwalVaOztBb0MvaVVJO0VBQ0k7QXBDa2pVUjtBb0M3aVVRO0VBQ0k7RUFDQTtBcEMraVVaO0FvQzdpVVk7RUFDSTtBcEMraVVoQjs7QXFDeHJWQTs7O0VBQUE7QUFhQTtFQUNJO0FyQ2tyVko7O0FxQzNxVkE7RUFDSTtBckM4cVZKO0FxQzVxVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDOHFWUjtBcUM1cVZRO0VBQ0k7RUFDQTtBckM4cVZaO0FxQzNxVlE7RUFDSTtFQUNBO0VBQ0E7QXJDNnFWWjtBcUMxcVZRO0VBQ0k7RUFDQTtFQUNBO0FyQzRxVlo7O0FxQ25xVkE7RUFDSTtFQUNBO0FyQ3NxVko7QXFDcHFWSTtFQUNJO0FyQ3NxVlI7QXFDbnFWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3FxVlI7QXFDbnFWUTtFQUNJO0VBQ0E7QXJDcXFWWjtBcUNscVZRO0VBQ0k7RUFDQTtBckNvcVZaO0FxQ2pxVlE7RUFDSTtFQUNBO0VBQ0E7QXJDbXFWWjs7QXFDMXBWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDNnBWSjs7QXFDbHBWQTtFQUNJO0FyQ3FwVko7QXFDbnBWSTtFQUNJO0FyQ3FwVlI7O0FxQ2pwVkE7RUFDSTtFQUNBO0VBQ0E7QXJDb3BWSjtBNkJodVZJO0VReUVKO0lBTVE7RXJDcXBWTjtBQUNGOztBcUNocFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckNtcFZKO0FxQ2pwVkk7RUFDSTtFQUNBO0VBQ0E7QXJDbXBWUjtBcUNqcFZRO0VBQ0k7RUFDQTtFQUNBO0FyQ21wVlo7QXFDaHBWUTtFQUNJO0VBQ0E7QXJDa3BWWjtBcUM5b1ZJO0VBQ0k7RUFDQTtBckNncFZSO0FxQzlvVlE7RUFDSTtFQUNBO0FyQ2dwVlo7QXFDN29WUTtFQUNJO0VBQ0E7QXJDK29WWjtBcUMzb1ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM2b1ZSO0FxQzFvVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM0b1ZSO0FxQzFvVlE7RUFDSTtFQUNBO0FyQzRvVlo7QXFDeG9WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDMG9WUjtBcUN2b1ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3lvVlI7QXFDdG9WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3dvVlI7QXFDcm9WSTtFQUNJO0FyQ3VvVlI7QXFDcm9WUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckN1b1ZaOztBcUMzblZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXJDOG5WUjtBcUMzblZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM2blZSOztBcUN6blZBO0VBQ0k7RUFDQTtBckM0blZKOztBcUN6blZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM0blZKO0FxQzFuVkk7RUFDSTtFQUNBO0VBQ0E7QXJDNG5WUjtBcUMxblZRO0VBQ0k7RUFDQTtFQUNBO0FyQzRuVlo7QXFDem5WUTtFQUNJO0VBQ0E7RUFDQTtBckMyblZaO0FxQ3ZuVkk7RUFDSTtBckN5blZSO0FxQ3RuVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3duVlI7QXFDcm5WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDdW5WUjtBcUNyblZRO0VBQ0k7RUFDQTtBckN1blZaO0FxQ25uVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDcW5WUjtBcUNsblZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckNvblZSO0FxQ2xuVlE7RUFDSTtBckNvblZaO0FxQ2puVlE7RUFDSTtFQUNBO0FyQ21uVlo7QXFDam5WWTtFQUNJO0VBQ0E7QXJDbW5WaEI7O0FxQ3ptVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDNG1WSjs7QXFDem1WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM0bVZKOztBcUN6bVZBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzJtVko7O0FxQ3htVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDMm1WSjs7QXFDeG1WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzJtVko7O0FxQ3htVkE7RUFDSTtFQUNBO0FyQzJtVko7O0FxQ3htVkE7RUFDSTtFQUNBO0VBQ0E7QXJDMm1WSjtBcUN2bVZJO0VBQ0k7RUFDQTtFQUNBO0FyQ3ltVlI7QXFDdm1WUTtFQUNJO0FyQ3ltVlo7QXFDdG1WUTtFQUNJO0FyQ3dtVlo7QXFDcm1WUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQ3VtVlo7O0E2QmwvVkk7RVFzWkE7SUFDSTtJQUNBO0lBQ0E7RXJDZ21WTjtFcUMzbFZNO0lBQ0k7SUFDQTtJQUNBO0VyQzZsVlY7RXFDM2xWVTs7SUFFSTtFckM2bFZkO0VxQzNsVmM7O0lBQ0k7RXJDOGxWbEI7RXFDdGxWRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXJDd2xWTjtFcUN0bFZNO0lBQ0k7RXJDd2xWVjtFcUNybFZNO0lBQ0k7RXJDdWxWVjtFcUNubFZFO0lBQ0k7SUFDQTtFckNxbFZOO0VxQ2xsVkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VyQ29sVk47RXFDamxWRTtJQUVJO01BQ0k7SXJDa2xWUjtJcUMva1ZJO01BQ0k7SXJDaWxWUjtFQUNGO0FBQ0Y7QXFDNWtWQTtFQUNJO0FyQzhrVko7O0FxQ3ZrVkE7RUFJUTs7O0lBR0k7RXJDdWtWVjtFcUNwa1ZNO0lBQ0k7RXJDc2tWVjtBQUNGO0FBLy9WQTs7Ozs7R0FBQSxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL190b2tlbnMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL190eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19mb3JtLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2dsb2JhbC1zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kYXRhZ3JpZC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2NsaWVudC1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fYmlsbGluZy1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudC1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudHMtbGlzdC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3VzZXJzLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wcm9maWxlLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL190d28tZmFjdG9yLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbm90aWZpY2F0aW9ucy1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fc3Vic2NyaXB0aW9uLXBhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fb25ib2FyZGluZy1jaGVja2xpc3Quc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19vbmJvYXJkaW5nLXdpemFyZC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX21vbmV5LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fc3RhdHVzLWNoaXAuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX25hdmJhci12ZXJ0aWNhbC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19mb3Jtcy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19jb21wYW55LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3Mvc2V0dGluZ3Muc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19kYXNoYm9hcmQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jbGllbnQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1xdW90ZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3BheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNvbGlkSW52b2ljZSBNYWluIEFwcGxpY2F0aW9uIFN0eWxlc2hlZXRcbiAqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgYXBwbGljYXRpb24gc3R5bGVzLlxuICogSXQgaW1wb3J0cyBCb290c3RyYXAsIHRoZSBkZXNpZ24gc3lzdGVtLCBjb21wb25lbnRzLCBhbmQgbGF5b3V0cy5cbiAqL1xuXG5AdXNlICdzYXNzOmNvbG9yJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMS4gQk9PVFNUUkFQIENPUkUgSU1QT1JUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQm9vdHN0cmFwIGZ1bmN0aW9ucyBmaXJzdCAobmVlZGVkIGZvciBjb2xvciBtYW5pcHVsYXRpb24sIGV0Yy4pXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDIuIFNPTElESU5WT0lDRSBCUkFORCBWQVJJQUJMRVMgKE92ZXJyaWRlIEJvb3RzdHJhcCBkZWZhdWx0cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUHJpbWFyeSBjb2xvcnNcbiRncmVlbi1iYXNlOiAjMmU5NjNhO1xuJGdyZWVuLWRhcms6ICMxZjZjMjk7XG4kZ3JlZW4tbGlnaHQ6ICNlOGY1ZTk7XG4kb3JhbmdlLWJhc2U6ICNmMGEwMTU7XG4kb3JhbmdlLWRhcms6ICNjODgyMGU7XG4kb3JhbmdlLWxpZ2h0OiAjZmZmOGUxO1xuXG4vLyBPdmVycmlkZSBCb290c3RyYXAgdmFyaWFibGVzXG4kcHJpbWFyeTogJGdyZWVuLWJhc2U7XG4kc2Vjb25kYXJ5OiAkb3JhbmdlLWJhc2U7XG5cbi8vIEJvZHkgYW5kIExpbmsgQ29sb3JzXG4kYm9keS1jb2xvcjogIzMzMzMzMztcbiRib2R5LWJnOiAjZjRmNmY4O1xuJGxpbmstY29sb3I6ICRwcmltYXJ5O1xuJGxpbmstaG92ZXItY29sb3I6ICRncmVlbi1kYXJrO1xuXG4vLyBCdXR0b24gc3RhdGVzXG4kYnRuLXByaW1hcnktYmc6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWJvcmRlci1jb2xvcjogJHByaW1hcnk7XG4kYnRuLXByaW1hcnktaG92ZXItYmc6ICRncmVlbi1kYXJrO1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJvcmRlci1jb2xvcjogJGdyZWVuLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJnOiAkZ3JlZW4tZGFyaztcbiRidG4tcHJpbWFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkZ3JlZW4tZGFyaztcbiRidG4tc2Vjb25kYXJ5LWJnOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktaG92ZXItYmc6ICRvcmFuZ2UtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJvcmRlci1jb2xvcjogJG9yYW5nZS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJnOiAkb3JhbmdlLWRhcms7XG4kYnRuLXNlY29uZGFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkb3JhbmdlLWRhcms7XG5cbi8vIEFsZXJ0IENvbG9yc1xuJGFsZXJ0LXByaW1hcnktYmc6ICRncmVlbi1saWdodDtcbiRhbGVydC1wcmltYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRncmVlbi1saWdodCwgJGxpZ2h0bmVzczogLTUlKTtcbiRhbGVydC1wcmltYXJ5LXRleHQ6ICRncmVlbi1kYXJrO1xuJGFsZXJ0LXNlY29uZGFyeS1iZzogJG9yYW5nZS1saWdodDtcbiRhbGVydC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJG9yYW5nZS1saWdodCwgJGxpZ2h0bmVzczogLTUlKTtcbiRhbGVydC1zZWNvbmRhcnktdGV4dDogJG9yYW5nZS1kYXJrO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAzLiBERVNJR04gU1lTVEVNIEZPVU5EQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGRlc2lnbiB0b2tlbnMgKGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgdHlwb2dyYXBoeSwgZXRjLilcbkBpbXBvcnQgJy4vZGVzaWduLXN5c3RlbS9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDQuIENPTVBPTkVOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGFsbCBjb21wb25lbnQgc3R5bGVzXG5AaW1wb3J0ICcuL2NvbXBvbmVudHMvaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA1LiBMQVlPVVQgUEFUVEVSTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGFsbCBsYXlvdXQgc3R5bGVzXG5AaW1wb3J0ICcuL2xheW91dHMvaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA2LiBGT1JNIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHZW5lcmljIGZvcm0gY29tcG9uZW50cyAocmV1c2FibGUgYWNyb3NzIHRoZSBhcHApXG5AaW1wb3J0ICcuL2Zvcm1zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNy4gUEFHRS1TUEVDSUZJQyBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29tcGFueSBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vY29tcGFueSc7XG5cbi8vIFNldHRpbmdzIHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9zZXR0aW5ncyc7XG5cbi8vIERhc2hib2FyZCBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2Rhc2hib2FyZCc7XG5cbi8vIENsaWVudCBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vY2xpZW50JztcblxuLy8gSW52b2ljZSB2aWV3IHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL2ludm9pY2Utdmlldyc7XG5cbi8vIEV4dGVybmFsIGludm9pY2UgdmlldyBwYWdlIHN0eWxlcyAocHVibGljLWZhY2luZylcbkBpbXBvcnQgJy4vZXh0ZXJuYWwtaW52b2ljZS12aWV3JztcblxuLy8gRXh0ZXJuYWwgcXVvdGUgdmlldyBwYWdlIHN0eWxlcyAocHVibGljLWZhY2luZylcbkBpbXBvcnQgJy4vZXh0ZXJuYWwtcXVvdGUtdmlldyc7XG5cbi8vIFF1b3RlIHZpZXcgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vcXVvdGUtdmlldyc7XG5cbi8vIFBheW1lbnQgbWFya2V0cGxhY2UgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vcGF5bWVudC1tYXJrZXRwbGFjZSc7XG5cbi8vIE5vdGlmaWNhdGlvbiBtYXJrZXRwbGFjZSBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9ub3RpZmljYXRpb24tbWFya2V0cGxhY2UnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA4LiBMRUdBQ1kgQk9PVFNUUkFQIE9WRVJSSURFUyAoVG8gYmUgY2xlYW5lZCB1cClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSBvdmVycmlkZXMgdGhhdCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZFxuLy8gdG8gdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBmaWxlcyBpbiB0aGUgZGVzaWduIHN5c3RlbS5cblxuLy8gS2VlcCBsZWdhY3kgYWN0aXZlIG5hdiBzdHlsaW5nIGZvciBub3dcblxuLyogLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZjJmZjtcbiAgICBjb2xvcjogIzRmNDZlNTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn0gKi9cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBNYWluIEluZGV4XG4gKlxuICogSW1wb3J0cyBhbGwgZGVzaWduIHN5c3RlbSBmb3VuZGF0aW9uIGZpbGVzLlxuICogVGhpcyBmaWxlIHNob3VsZCBiZSBpbXBvcnRlZCBlYXJseSBpbiBhcHAuc2NzcyxcbiAqIGFmdGVyIEJvb3RzdHJhcCBmdW5jdGlvbnMvdmFyaWFibGVzIGJ1dCBiZWZvcmUgY29tcG9uZW50cy5cbiAqL1xuXG4vLyBDb3JlIGRlc2lnbiB0b2tlbnMgKGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgZXRjLilcbkBpbXBvcnQgJ3Rva2Vucyc7XG5cbi8vIFR5cG9ncmFwaHkgc3lzdGVtXG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBEZXNpZ24gVG9rZW5zXG4gKlxuICogQ29yZSBkZXNpZ24gdG9rZW5zIGRlZmluaW5nIGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgYm9yZGVyIHJhZGl1cyxcbiAqIGFuZCB0cmFuc2l0aW9ucy4gQWxsIHZhbHVlcyBhcmUgZXhwb3NlZCBhcyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuXG4gKlxuICogVGhlc2UgYXJlIFRhYmxlcidzIG93biB0b2tlbnMsIG5vdCBhIHBhcmFsbGVsIG5hbWVzcGFjZS4gVGFibGVyIDEuNSByZW1vdmVkIHRoZSBgJHByZWZpeGBcbiAqIFNhc3MgdmFyaWFibGUsIHNvIHRoZXJlIGlzIG5vIHdheSB0byBjb21waWxlIGl0IHVuZGVyIGEgbmFtZSBvZiBvdXJzOyBhIHRva2VuIGRlY2xhcmVkIGhlcmVcbiAqIHdpdGggYSBuYW1lIFRhYmxlciBhbHNvIHVzZXMg4oCUIGAtLXRibHItcHJpbWFyeWAsIHRoZSBncmV5IHJhbXAsIHRoZSBzaGFkb3dzIOKAlCBvdmVyd3JpdGVzXG4gKiBUYWJsZXIncyBhbmQgY2FycmllcyB0aGUgYnJhbmQgdGhyb3VnaCBldmVyeSBjb21wb25lbnQgYnVpbHQgb24gaXQuIFRva2VucyB3aXRoIG5vIFRhYmxlclxuICogY291bnRlcnBhcnQgc2l0IGluIHRoZSBzYW1lIG5hbWVzcGFjZSByYXRoZXIgdGhhbiBhIHByaXZhdGUgb25lLCBzbyB0aGVyZSBpcyBhIHNpbmdsZSBhbnN3ZXJcbiAqIHRvIFwid2hlcmUgZG9lcyB0aGlzIHZhbHVlIGNvbWUgZnJvbVwiLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTE9SIFBBTEVUVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCcmFuZCBDb2xvcnMgKFByaW1hcnkgJiBTZWNvbmRhcnkpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gUHJpbWFyeTogR3JlZW4gLSBVc2VkIGZvciBtYWluIENUQXMsIGxpbmtzLCBhY3RpdmUgc3RhdGVzXG4gICAgLS10YmxyLXByaW1hcnk6ICMyZTk2M2E7XG4gICAgLS10YmxyLXByaW1hcnktcmdiOiA0NiwgMTUwLCA1ODtcbiAgICAtLXRibHItcHJpbWFyeS1ob3ZlcjogIzI2ODAzMjtcbiAgICAtLXRibHItcHJpbWFyeS1kYXJrOiAjMWY2YzI5O1xuICAgIC0tdGJsci1wcmltYXJ5LWxpZ2h0OiAjZThmNWU5O1xuICAgIC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXI6ICNmMWY5ZjI7XG5cbiAgICAvLyBBY2NlbnQ6IE9yYW5nZSAtIFVzZWQgc3BhcmluZ2x5LiBOb3QgYC0tdGJsci1zZWNvbmRhcnlgOiBUYWJsZXIgMS41IHVzZXMgdGhhdCBhcyB0aGVcbiAgICAvLyBtdXRlZCBncmV5IGJlaGluZCBgLnRleHQtc2Vjb25kYXJ5YCwgY2FyZCBzdWJ0aXRsZXMsIGZvcm0gaGludHMgYW5kIG5ldXRyYWwgYmFkZ2VzLlxuICAgIC0tdGJsci1hY2NlbnQ6ICNmMGEwMTU7XG4gICAgLS10YmxyLWFjY2VudC1yZ2I6IDI0MCwgMTYwLCAyMTtcbiAgICAtLXRibHItYWNjZW50LWhvdmVyOiAjZDg5MDEyO1xuICAgIC0tdGJsci1hY2NlbnQtZGFyazogI2M4ODIwZTtcbiAgICAtLXRibHItYWNjZW50LWxpZ2h0OiAjZmZmOGUxO1xuICAgIC0tdGJsci1hY2NlbnQtbGlnaHRlcjogI2ZmZmNmMDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBOZXV0cmFsIENvbG9ycyAoU2xhdGUtYmFzZWQgZ3JheSBzY2FsZSBmb3IgbW9kZXJuIGZlZWwpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS10YmxyLWdyYXktNTA6ICNmOGZhZmM7XG4gICAgLS10YmxyLWdyYXktMTAwOiAjZjFmNWY5O1xuICAgIC0tdGJsci1ncmF5LTIwMDogI2UyZThmMDtcbiAgICAtLXRibHItZ3JheS0zMDA6ICNjYmQ1ZTE7XG4gICAgLS10YmxyLWdyYXktNDAwOiAjOTRhM2I4O1xuICAgIC0tdGJsci1ncmF5LTUwMDogIzY0NzQ4YjtcbiAgICAtLXRibHItZ3JheS02MDA6ICM0NzU1Njk7XG4gICAgLS10YmxyLWdyYXktNzAwOiAjMzM0MTU1O1xuICAgIC0tdGJsci1ncmF5LTgwMDogIzFlMjkzYjtcbiAgICAtLXRibHItZ3JheS05MDA6ICMwZjE3MmE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2VtYW50aWMgQ29sb3JzIChGZWVkYmFjayAmIFN0YXR1cylcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBTdWNjZXNzXG4gICAgLy8gTk9URTogYHN1Y2Nlc3NgICgyLjU0OjEgb24gc3VyZmFjZSkgYW5kIGBzdWNjZXNzLWhvdmVyYCAoMy43NzoxKSBhcmUgZmlsbFxuICAgIC8vIGNvbG91cnMsIG5vdCB0ZXh0IGNvbG91cnMgLSBib3RoIGZhaWwgV0NBRyBBQSBhcyB0ZXh0LiBVc2UgYHN1Y2Nlc3MtZGFya2BcbiAgICAvLyBmb3IgYW55IHN1Y2Nlc3MtY29sb3VyZWQgKnRleHQqLiBTZWUgREVTSUdOLm1kIC0gVGhlIExlZ2libGUgU3RhdHVzIFJ1bGUuXG4gICAgLS10YmxyLXN1Y2Nlc3M6ICMxMGI5ODE7XG4gICAgLS10YmxyLXN1Y2Nlc3MtcmdiOiAxNiwgMTg1LCAxMjk7XG4gICAgLS10YmxyLXN1Y2Nlc3MtaG92ZXI6ICMwNTk2Njk7XG4gICAgLS10YmxyLXN1Y2Nlc3MtZGFyazogIzA0Nzg1NzsgICAvLyBFbWVyYWxkLTcwMCAtIEFBLXNhZmUgc3VjY2VzcyB0ZXh0ICg1LjQ4OjEgb24gc3VyZmFjZSwgNS4wNjoxIG9uIGJvZHktYmcpXG4gICAgLS10YmxyLXN1Y2Nlc3MtbGlnaHQ6ICNkMWZhZTU7XG4gICAgLS10YmxyLXN1Y2Nlc3MtbGlnaHRlcjogI2VjZmRmNTtcblxuICAgIC8vIERhbmdlclxuICAgIC8vIE5PVEU6IGBkYW5nZXJgICgzLjc2OjEgb24gc3VyZmFjZSkgaXMgYSBmaWxsIGNvbG91ciwgbm90IGEgdGV4dCBjb2xvdXIuXG4gICAgLy8gVXNlIGBkYW5nZXItZGFya2AgZm9yIGRhbmdlci1jb2xvdXJlZCAqdGV4dCouXG4gICAgLS10YmxyLWRhbmdlcjogI2VmNDQ0NDtcbiAgICAtLXRibHItZGFuZ2VyLXJnYjogMjM5LCA2OCwgNjg7XG4gICAgLS10YmxyLWRhbmdlci1ob3ZlcjogI2RjMjYyNjtcbiAgICAtLXRibHItZGFuZ2VyLWRhcms6ICNiOTFjMWM7ICAgIC8vIFJlZC03MDAgLSBBQS1zYWZlIGRhbmdlciB0ZXh0ICg2LjQ3OjEgb24gc3VyZmFjZSwgNS45NzoxIG9uIGJvZHktYmcpXG4gICAgLS10YmxyLWRhbmdlci1saWdodDogI2ZlZTJlMjtcbiAgICAtLXRibHItZGFuZ2VyLWxpZ2h0ZXI6ICNmZWYyZjI7XG5cbiAgICAvLyBXYXJuaW5nXG4gICAgLy8gTk9URTogYHdhcm5pbmdgICgyLjE1OjEgb24gc3VyZmFjZSkgaXMgYSBmaWxsIGNvbG91ciwgbm90IGEgdGV4dCBjb2xvdXIuXG4gICAgLy8gVXNlIGB3YXJuaW5nLWRhcmtgIGZvciB3YXJuaW5nLWNvbG91cmVkICp0ZXh0Ki5cbiAgICAtLXRibHItd2FybmluZzogI2Y1OWUwYjtcbiAgICAtLXRibHItd2FybmluZy1yZ2I6IDI0NSwgMTU4LCAxMTtcbiAgICAtLXRibHItd2FybmluZy1ob3ZlcjogI2Q5NzcwNjtcbiAgICAtLXRibHItd2FybmluZy1kYXJrOiAjOTI0MDBlOyAgIC8vIEFtYmVyLTgwMCAtIEFBLXNhZmUgd2FybmluZyB0ZXh0ICg3LjA5OjEgb24gc3VyZmFjZSwgNi41NDoxIG9uIGJvZHktYmcsIDYuMzc6MSBvbiB3YXJuaW5nLWxpZ2h0KVxuICAgIC0tdGJsci13YXJuaW5nLWxpZ2h0OiAjZmVmM2M3O1xuICAgIC0tdGJsci13YXJuaW5nLWxpZ2h0ZXI6ICNmZmZiZWI7XG5cbiAgICAvLyBJbmZvXG4gICAgLS10YmxyLWluZm86ICMzYjgyZjY7XG4gICAgLS10YmxyLWluZm8tcmdiOiA1OSwgMTMwLCAyNDY7XG4gICAgLS10YmxyLWluZm8taG92ZXI6ICMyNTYzZWI7XG4gICAgLS10YmxyLWluZm8tZGFyazogIzFkNGVkODsgLy8gQmx1ZS03MDAgLSBBQS1zYWZlIGluZm8gdGV4dCAoNi43MDoxIG9uIHN1cmZhY2UsIDYuMTk6MSBvbiBib2R5LWJnLCA1LjQ5OjEgb24gaW5mby1saWdodClcbiAgICAtLXRibHItaW5mby1saWdodDogI2RiZWFmZTtcbiAgICAtLXRibHItaW5mby1saWdodGVyOiAjZWZmNmZmO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFN1cmZhY2UgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS10YmxyLWJvZHktYmc6ICNmNGY2Zjg7XG4gICAgLS10YmxyLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgLS10YmxyLXN1cmZhY2UtaG92ZXI6ICNmOGZhZmM7XG4gICAgLS10YmxyLXN1cmZhY2UtZWxldmF0ZWQ6ICNmZmZmZmY7XG4gICAgLS10YmxyLXN1cmZhY2Utb3ZlcmxheTogcmdiKDE1IDIzIDQyIC8gNTAlKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBUZXh0IENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIERlZmF1bHQgYm9keSB0ZXh0LiBBbGlhc2VzIGB0ZXh0LXByaW1hcnlgIHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIHRoZVxuICAgIC8vIGxpdGVyYWwgLSBpdCB3YXMgYSBwdXJlICMzMzMzMzMgZ3JheSwgd2hpY2ggdGhlIFRpbnRlZCBOZXV0cmFscyBSdWxlXG4gICAgLy8gcHJvaGliaXRzLCBhbmQgdGhlcmUgaXMgbm8gcmVhc29uIGZvciB0aGUgdHdvIHRvIGV2ZXIgZGl2ZXJnZS5cbiAgICAtLXRibHItYm9keS1jb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIC0tdGJsci10ZXh0LXByaW1hcnk6ICMxZTI5M2I7XG4gICAgLS10YmxyLXRleHQtc2Vjb25kYXJ5OiAjNDc1NTY5O1xuICAgIC0tdGJsci10ZXh0LW11dGVkOiAjNjQ3NDhiO1xuXG4gICAgLy8gV0FSTklORzogMi41NjoxIG9uIHN1cmZhY2UsIDIuMzc6MSBvbiBib2R5LWJnIC0gRkFJTFMgV0NBRyBBQSAoMS40LjMpLlxuICAgIC8vIFNhZmUgT05MWSBmb3IgZGlzYWJsZWQgdGV4dCAoZXhlbXB0IGZyb20gMS40LjMpIGFuZCBkZWNvcmF0aXZlIGdseXBocy5cbiAgICAvLyBOZXZlciB1c2UgZm9yIHBsYWNlaG9sZGVycyBvciBhbnkgb3RoZXIgbWVhbmluZ2Z1bCB0ZXh0LlxuICAgIC0tdGJsci10ZXh0LWxpZ2h0OiAjOTRhM2I4O1xuICAgIC0tdGJsci10ZXh0LWludmVyc2U6ICNmZmZmZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQm9yZGVyIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tdGJsci1ib3JkZXI6ICNlMmU4ZjA7XG4gICAgLS10YmxyLWJvcmRlci1saWdodDogI2YxZjVmOTtcbiAgICAtLXRibHItYm9yZGVyLWRhcms6ICNjYmQ1ZTE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTGluayBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXRibHItbGluay1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAtLXRibHItbGluay1ob3Zlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTUEFDSU5HIFNDQUxFICg4cHggYmFzZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tdGJsci1zcGFjZS0wOiAwO1xuICAgIC0tdGJsci1zcGFjZS1weDogMXB4O1xuICAgIC0tdGJsci1zcGFjZS0wLTU6IDAuMTI1cmVtOyAgLy8gMnB4XG4gICAgLS10YmxyLXNwYWNlLTE6IDAuMjVyZW07ICAgICAvLyA0cHhcbiAgICAtLXRibHItc3BhY2UtMS01OiAwLjM3NXJlbTsgIC8vIDZweFxuICAgIC0tdGJsci1zcGFjZS0yOiAwLjVyZW07ICAgICAgLy8gOHB4XG4gICAgLS10YmxyLXNwYWNlLTItNTogMC42MjVyZW07ICAvLyAxMHB4XG4gICAgLS10YmxyLXNwYWNlLTM6IDAuNzVyZW07ICAgICAvLyAxMnB4XG4gICAgLS10YmxyLXNwYWNlLTMtNTogMC44NzVyZW07ICAvLyAxNHB4XG4gICAgLS10YmxyLXNwYWNlLTQ6IDFyZW07ICAgICAgICAvLyAxNnB4XG4gICAgLS10YmxyLXNwYWNlLTU6IDEuMjVyZW07ICAgICAvLyAyMHB4XG4gICAgLS10YmxyLXNwYWNlLTY6IDEuNXJlbTsgICAgICAvLyAyNHB4XG4gICAgLS10YmxyLXNwYWNlLTc6IDEuNzVyZW07ICAgICAvLyAyOHB4XG4gICAgLS10YmxyLXNwYWNlLTg6IDJyZW07ICAgICAgICAvLyAzMnB4XG4gICAgLS10YmxyLXNwYWNlLTk6IDIuMjVyZW07ICAgICAvLyAzNnB4XG4gICAgLS10YmxyLXNwYWNlLTEwOiAyLjVyZW07ICAgICAvLyA0MHB4XG4gICAgLS10YmxyLXNwYWNlLTExOiAyLjc1cmVtOyAgICAvLyA0NHB4XG4gICAgLS10YmxyLXNwYWNlLTEyOiAzcmVtOyAgICAgICAvLyA0OHB4XG4gICAgLS10YmxyLXNwYWNlLTE0OiAzLjVyZW07ICAgICAvLyA1NnB4XG4gICAgLS10YmxyLXNwYWNlLTE2OiA0cmVtOyAgICAgICAvLyA2NHB4XG4gICAgLS10YmxyLXNwYWNlLTIwOiA1cmVtOyAgICAgICAvLyA4MHB4XG4gICAgLS10YmxyLXNwYWNlLTI0OiA2cmVtOyAgICAgICAvLyA5NnB4XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJPUkRFUiBSQURJVVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tdGJsci1yYWRpdXMtbm9uZTogMDtcbiAgICAtLXRibHItcmFkaXVzLXNtOiAwLjM3NXJlbTsgICAgLy8gNnB4IC0gU21hbGwgZWxlbWVudHMsIHRhZ3NcbiAgICAtLXRibHItcmFkaXVzLW1kOiAwLjVyZW07ICAgICAgLy8gOHB4IC0gRm9ybSBjb250cm9scywgYnV0dG9uc1xuICAgIC0tdGJsci1yYWRpdXMtbGc6IDAuNzVyZW07ICAgICAvLyAxMnB4IC0gQ2FyZHMsIG1vZGFsc1xuICAgIC0tdGJsci1yYWRpdXMteGw6IDFyZW07ICAgICAgICAvLyAxNnB4IC0gTGFyZ2UgY2FyZHMsIGRpYWxvZ3NcbiAgICAtLXRibHItcmFkaXVzLTJ4bDogMS41cmVtOyAgICAgLy8gMjRweCAtIEV4dHJhIGxhcmdlIGVsZW1lbnRzXG4gICAgLS10YmxyLXJhZGl1cy1mdWxsOiA5OTk5cHg7ICAgIC8vIFBpbGwgc2hhcGVcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBRE9XUyAoU3VidGxlLCBtb2Rlcm4gZWxldmF0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gRWxldmF0aW9uIHNoYWRvd3NcbiAgICAtLXRibHItc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgLS10YmxyLXNoYWRvdy1zbTogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMTAlKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXRibHItc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tdGJsci1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMTAlKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXRibHItc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tdGJsci1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuXG4gICAgLy8gSW5uZXIgc2hhZG93XG4gICAgLS10YmxyLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLy8gQ29sb3JlZCBzaGFkb3dzIGZvciBidXR0b25zIGFuZCBpbnRlcmFjdGl2ZSBlbGVtZW50c1xuICAgIC0tdGJsci1zaGFkb3ctcHJpbWFyeTogMCA0cHggMTRweCAwIHJnYig0NiAxNTAgNTggLyAyNSUpO1xuICAgIC0tdGJsci1zaGFkb3ctcHJpbWFyeS1sZzogMCA4cHggMjBweCAwIHJnYig0NiAxNTAgNTggLyAzMCUpO1xuICAgIC0tdGJsci1zaGFkb3ctZGFuZ2VyOiAwIDRweCAxNHB4IDAgcmdiKDIzOSA2OCA2OCAvIDI1JSk7XG4gICAgLS10YmxyLXNoYWRvdy1kYW5nZXItbGc6IDAgOHB4IDIwcHggMCByZ2IoMjM5IDY4IDY4IC8gMzAlKTtcblxuICAgIC8vIEZvY3VzIHJpbmcgc2hhZG93XG4gICAgLS10YmxyLXJpbmctcHJpbWFyeTogMCAwIDAgM3B4IHJnYig0NiAxNTAgNTggLyAxNSUpO1xuICAgIC0tdGJsci1yaW5nLWRhbmdlcjogMCAwIDAgM3B4IHJnYigyMzkgNjggNjggLyAxNSUpO1xuICAgIC0tdGJsci1yaW5nLW9mZnNldDogMCAwIDAgMnB4IHZhcigtLXRibHItc3VyZmFjZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRSQU5TSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBEdXJhdGlvbnNcbiAgICAtLXRibHItZHVyYXRpb24tZmFzdDogMTUwbXM7XG4gICAgLS10YmxyLWR1cmF0aW9uLWJhc2U6IDIwMG1zO1xuICAgIC0tdGJsci1kdXJhdGlvbi1zbG93OiAzMDBtcztcbiAgICAtLXRibHItZHVyYXRpb24tc2xvd2VyOiA0MDBtcztcblxuICAgIC8vIFRpbWluZyBmdW5jdGlvbnNcbiAgICAtLXRibHItZWFzZS1saW5lYXI6IGxpbmVhcjtcbiAgICAtLXRibHItZWFzZS1pbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgLS10YmxyLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAtLXRibHItZWFzZS1pbi1vdXQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG5cbiAgICAvLyBDb21tb24gdHJhbnNpdGlvbnNcbiAgICAtLXRibHItdHJhbnNpdGlvbi1mYXN0OiB2YXIoLS10YmxyLWR1cmF0aW9uLWZhc3QpIHZhcigtLXRibHItZWFzZS1pbi1vdXQpO1xuICAgIC0tdGJsci10cmFuc2l0aW9uLWJhc2U6IHZhcigtLXRibHItZHVyYXRpb24tYmFzZSkgdmFyKC0tdGJsci1lYXNlLWluLW91dCk7XG4gICAgLS10YmxyLXRyYW5zaXRpb24tc2xvdzogdmFyKC0tdGJsci1kdXJhdGlvbi1zbG93KSB2YXIoLS10YmxyLWVhc2UtaW4tb3V0KTtcblxuICAgIC8vIFByb3BlcnR5LXNwZWNpZmljIHRyYW5zaXRpb25zXG4gICAgLS10YmxyLXRyYW5zaXRpb24tY29sb3JzOiBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuICAgIC0tdGJsci10cmFuc2l0aW9uLXNoYWRvdzogYm94LXNoYWRvdyB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgLS10YmxyLXRyYW5zaXRpb24tdHJhbnNmb3JtOiB0cmFuc2Zvcm0gdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuICAgIC0tdGJsci10cmFuc2l0aW9uLWFsbDogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gWi1JTkRFWCBTQ0FMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS10YmxyLXotZHJvcGRvd246IDEwMDA7XG4gICAgLS10YmxyLXotc3RpY2t5OiAxMDIwO1xuICAgIC0tdGJsci16LWZpeGVkOiAxMDMwO1xuICAgIC0tdGJsci16LW1vZGFsLWJhY2tkcm9wOiAxMDQwO1xuICAgIC0tdGJsci16LW1vZGFsOiAxMDUwO1xuICAgIC0tdGJsci16LXBvcG92ZXI6IDEwNjA7XG4gICAgLS10YmxyLXotdG9vbHRpcDogMTA3MDtcbiAgICAtLXRibHItei10b2FzdDogMTA4MDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUE9ORU5ULVNQRUNJRklDIFRPS0VOU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gQ2FyZFxuICAgIC0tdGJsci1jYXJkLWJnOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIC0tdGJsci1jYXJkLWJvcmRlcjogdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIC0tdGJsci1jYXJkLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIC0tdGJsci1jYXJkLXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIC0tdGJsci1jYXJkLXBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgLS10YmxyLWNhcmQtaGVhZGVyLXBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICAtLXRibHItY2FyZC1mb290ZXItcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgLy8gRm9ybSBjb250cm9sc1xuICAgIC0tdGJsci1pbnB1dC1iZzogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAtLXRibHItaW5wdXQtYm9yZGVyOiB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgLS10YmxyLWlucHV0LXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIC0tdGJsci1pbnB1dC1wYWRkaW5nLXk6IHZhcigtLXRibHItc3BhY2UtMi01KTtcbiAgICAtLXRibHItaW5wdXQtcGFkZGluZy14OiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIC0tdGJsci1pbnB1dC1mb2N1cy1ib3JkZXI6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgLS10YmxyLWlucHV0LWZvY3VzLXJpbmc6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcblxuICAgIC8vIEJ1dHRvbnNcbiAgICAtLXRibHItYnRuLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIC0tdGJsci1idG4tcGFkZGluZy15OiB2YXIoLS10YmxyLXNwYWNlLTItNSk7XG4gICAgLS10YmxyLWJ0bi1wYWRkaW5nLXg6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgLS10YmxyLWJ0bi1mb250LXdlaWdodDogNTAwO1xuXG4gICAgLy8gTW9kYWxcbiAgICAtLXRibHItbW9kYWwtYmc6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgLS10YmxyLW1vZGFsLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMteGwpO1xuICAgIC0tdGJsci1tb2RhbC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXhsKTtcbiAgICAtLXRibHItbW9kYWwtcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcblxuICAgIC8vIFRhYmxlXG4gICAgLS10YmxyLXRhYmxlLWJnOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIC0tdGJsci10YWJsZS1ib3JkZXI6IHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAtLXRibHItdGFibGUtaGVhZGVyLWJnOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIC0tdGJsci10YWJsZS1yb3ctaG92ZXItYmc6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgLS10YmxyLXRhYmxlLWNlbGwtcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgLy8gQWxlcnRcbiAgICAtLXRibHItYWxlcnQtcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgLS10YmxyLWFsZXJ0LXBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG5cbiAgICAvLyBNb25leSBkaXNwbGF5IChzaWduYXR1cmUgY29tcG9uZW50IC0gc2VlIGNvbXBvbmVudHMvX21vbmV5LnNjc3MpXG4gICAgLy8gRXZlcnkgY29sb3VyIGhlcmUgaXMgQUEtY29tcGxpYW50IGFnYWluc3QgQk9USCBgc3VyZmFjZWAgYW5kIGBib2R5LWJnYCxcbiAgICAvLyBiZWNhdXNlIG1vbmV5IG11c3QgbmV2ZXIgYmUgbWlzcmVhZGFibGUgb24gYW55IHN1cmZhY2UgaXQgbGFuZHMgb24uXG4gICAgLS10YmxyLW1vbmV5LWN1cnJlbmN5OiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTsgIC8vIDcuNTg6MSAvIDYuOTk6MVxuICAgIC0tdGJsci1tb25leS1uZXV0cmFsOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7ICAgICAvLyAxNC42MzoxIC8gMTMuNTA6MVxuICAgIC0tdGJsci1tb25leS1wYWlkOiB2YXIoLS10YmxyLXN1Y2Nlc3MtZGFyayk7ICAgICAgICAvLyA1LjQ4OjEgLyA1LjA2OjFcbiAgICAtLXRibHItbW9uZXktb3ZlcmR1ZTogdmFyKC0tdGJsci1kYW5nZXItZGFyayk7ICAgICAgLy8gNi40NzoxIC8gNS45NzoxXG5cbiAgICAvLyBSZWxhdGl2ZSBzdGVwIGFwcGxpZWQgdG8gYSBgLm1vbmV5LS10b3RhbGAgYW1vdW50LiBVbml0bGVzcyBtdWx0aXBsaWVyIHNvXG4gICAgLy8gdGhlIHN0ZXAgaXMgY29ycmVjdCBhdCBldmVyeSBpbmhlcml0ZWQgYmFzZSBzaXplLlxuICAgIC0tdGJsci1tb25leS10b3RhbC1zY2FsZTogMS4xMjU7XG5cbiAgICAvLyBSZWxhdGl2ZSBzaXplIG9mIHRoZSBjdXJyZW5jeSBjb2RlIGFnYWluc3QgaXRzIGFtb3VudC4gVGhlIGNvZGUgaXMgYSB1bml0LFxuICAgIC8vIG5vdCBhIHNlY29uZCBudW1iZXIsIGFuZCByZWFkcyBhcyBzdWJvcmRpbmF0ZSByYXRoZXIgdGhhbiBjb21wZXRpbmcuXG4gICAgLS10YmxyLW1vbmV5LWN1cnJlbmN5LXNjYWxlOiAwLjc1ZW07XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gVHlwb2dyYXBoeVxuICpcbiAqIFR5cG9ncmFwaHkgc2NhbGUsIGZvbnQgZmFtaWxpZXMsIHdlaWdodHMsIGFuZCBsaW5lIGhlaWdodHMuXG4gKiBVc2VzIHN5c3RlbSBmb250cyBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgbmF0aXZlIGZlZWwuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBGQU1JTElFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gU3lzdGVtIGZvbnQgc3RhY2sgLSBNb2Rlcm4sIHBlcmZvcm1hbnQsIG5hdGl2ZSBmZWVsXG4gICAgLS10YmxyLWZvbnQtc2FuczogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCAnU2Vnb2UgVUknLCByb2JvdG8sXG4gICAgICAgICAgICAgICAgICAgICAnSGVsdmV0aWNhIE5ldWUnLCBhcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsXG4gICAgICAgICAgICAgICAgICAgICAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgICdOb3RvIENvbG9yIEVtb2ppJztcblxuICAgIC8vIE1vbm9zcGFjZSBmb3IgY29kZSwgbnVtYmVycyBpbiB0YWJsZXNcbiAgICAtLXRibHItZm9udC1tb25vOiB1aS1tb25vc3BhY2UsIHNmbW9uby1yZWd1bGFyLCAnU0YgTW9ubycsIG1lbmxvLCBtb25hY28sXG4gICAgICAgICAgICAgICAgICAgICBjb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcblxuICAgIC8vIERlZmF1bHQgZm9udCBmYW1pbHlcbiAgICAtLXRibHItZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1zYW5zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBTSVpFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS10YmxyLXRleHQteHM6IDAuNzVyZW07ICAgICAgIC8vIDEycHggLSBGaW5lIHByaW50LCBiYWRnZXNcbiAgICAtLXRibHItdGV4dC1zbTogMC44MTI1cmVtOyAgICAgLy8gMTNweCAtIEhlbHAgdGV4dCwgY2FwdGlvbnNcbiAgICAtLXRibHItdGV4dC1iYXNlOiAwLjkzNzVyZW07ICAgLy8gMTVweCAtIEJvZHkgdGV4dCAoc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gMTRweCBmb3IgcmVhZGFiaWxpdHkpXG4gICAgLS10YmxyLXRleHQtbWQ6IDFyZW07ICAgICAgICAgIC8vIDE2cHggLSBFbXBoYXNpemVkIGJvZHlcbiAgICAtLXRibHItdGV4dC1sZzogMS4xMjVyZW07ICAgICAgLy8gMThweCAtIENhcmQgdGl0bGVzLCBzZWN0aW9uIGhlYWRlcnNcbiAgICAtLXRibHItdGV4dC14bDogMS4yNXJlbTsgICAgICAgLy8gMjBweCAtIFBhZ2Ugc3VidGl0bGVzXG4gICAgLS10YmxyLXRleHQtMnhsOiAxLjVyZW07ICAgICAgIC8vIDI0cHggLSBQYWdlIHRpdGxlc1xuICAgIC0tdGJsci10ZXh0LTN4bDogMS44NzVyZW07ICAgICAvLyAzMHB4IC0gSGVybyB0aXRsZXNcbiAgICAtLXRibHItdGV4dC00eGw6IDIuMjVyZW07ICAgICAgLy8gMzZweCAtIExhcmdlIGRpc3BsYXlcbiAgICAtLXRibHItdGV4dC01eGw6IDNyZW07ICAgICAgICAgLy8gNDhweCAtIEV4dHJhIGxhcmdlIGRpc3BsYXlcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBIRUlHSFRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXRibHItbGVhZGluZy1ub25lOiAxO1xuICAgIC0tdGJsci1sZWFkaW5nLXRpZ2h0OiAxLjI1O1xuICAgIC0tdGJsci1sZWFkaW5nLXNudWc6IDEuMzc1O1xuICAgIC0tdGJsci1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAgIC0tdGJsci1sZWFkaW5nLXJlbGF4ZWQ6IDEuNjI1O1xuICAgIC0tdGJsci1sZWFkaW5nLWxvb3NlOiAyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT05UIFdFSUdIVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tdGJsci1mb250LXRoaW46IDEwMDtcbiAgICAtLXRibHItZm9udC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS10YmxyLWZvbnQtbGlnaHQ6IDMwMDtcbiAgICAtLXRibHItZm9udC1ub3JtYWw6IDQwMDtcbiAgICAtLXRibHItZm9udC1tZWRpdW06IDUwMDtcbiAgICAtLXRibHItZm9udC1zZW1pYm9sZDogNjAwO1xuICAgIC0tdGJsci1mb250LWJvbGQ6IDcwMDtcbiAgICAtLXRibHItZm9udC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLXRibHItZm9udC1ibGFjazogOTAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMRVRURVIgU1BBQ0lOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS10YmxyLXRyYWNraW5nLXRpZ2h0ZXI6IC0wLjA1ZW07XG4gICAgLS10YmxyLXRyYWNraW5nLXRpZ2h0OiAtMC4wMjVlbTtcbiAgICAtLXRibHItdHJhY2tpbmctbm9ybWFsOiAwO1xuICAgIC0tdGJsci10cmFja2luZy13aWRlOiAwLjAyNWVtO1xuICAgIC0tdGJsci10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tdGJsci10cmFja2luZy13aWRlc3Q6IDAuMWVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBPR1JBUEhZIFVUSUxJVFkgQ0xBU1NFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQYWdlIHRpdGxlIC0gTGFyZ2UsIHByb21pbmVudCBoZWFkaW5nXG5cbi50ZXh0LXBhZ2UtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXRibHItbGVhZGluZy10aWdodCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGJsci10cmFja2luZy10aWdodCk7XG59XG5cbi8vIFBhZ2Ugc3VidGl0bGVcblxuLnRleHQtcGFnZS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS10YmxyLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLy8gQ2FyZCB0aXRsZVxuXG4udGV4dC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXRibHItbGVhZGluZy1zbnVnKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBDYXJkIHN1YnRpdGxlXG5cbi50ZXh0LWNhcmQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXRibHItbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBTZWN0aW9uIHRpdGxlICh3aXRoIGljb24gcGF0dGVybilcblxuLnRleHQtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS10YmxyLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vIExhYmVsIHRleHQgKGZvcm0gbGFiZWxzLCB0YWJsZSBoZWFkZXJzKVxuXG4udGV4dC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tdGJsci1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vLyBCb2R5IHRleHRcblxuLnRleHQtYm9keSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS10YmxyLWxlYWRpbmctcmVsYXhlZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvcik7XG59XG5cbi8vIFNtYWxsL0hlbHAgdGV4dFxuXG4udGV4dC1oZWxwIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS10YmxyLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLy8gTW9ub3NwYWNlIHRleHQgKGZvciBJRHMsIGNvZGVzKVxuXG4udGV4dC1tb25vIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbn1cblxuLy8gVGFibGUgaGVhZGVyIHRleHRcblxuLnRleHQtdGFibGUtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXRibHItbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibHItdHJhY2tpbmctd2lkZXIpO1xufVxuXG4vLyBFbXBoYXNpemVkL0hpZ2hsaWdodCB0ZXh0XG5cbi50ZXh0LWVtcGhhc2lzIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBNdXRlZCB0ZXh0XG5cbi50ZXh0LXN1YnRsZSB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG59XG5cbi8vIExpbmsgc3R5bGluZ1xuXG4udGV4dC1saW5rIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1saW5rLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWxpbmstaG92ZXItY29sb3IpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi8vIFRydW5jYXRlIHRleHQgd2l0aCBlbGxpcHNpc1xuXG4udGV4dC10cnVuY2F0ZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vLyBNdWx0aS1saW5lIHRydW5jYXRpb24gKHJlcXVpcmVzIC13ZWJraXQpXG5cbi50ZXh0LWxpbmUtY2xhbXAtMiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnRleHQtbGluZS1jbGFtcC0zIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIENvbXBvbmVudCBJbmRleFxuICpcbiAqIEN1c3RvbSBjb21wb25lbnQgc3R5bGVzIHRoYXQgZXh0ZW5kIEJvb3RzdHJhcC9UYWJsZXIuXG4gKiBPbmx5IGFkZCBzdHlsZXMgaGVyZSB0aGF0IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBiZXlvbmQgd2hhdCBCb290c3RyYXAvVGFibGVyIG9mZmVyLlxuICpcbiAqIE5vdGU6IE1vc3QgY29tcG9uZW50IHN0eWxpbmcgY29tZXMgZnJvbSBCb290c3RyYXAgNSBhbmQgVGFibGVyLlxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucywgbm90IHJlcGxhY2VtZW50cy5cbiAqL1xuXG4vLyBTaGFyZWQgRm9ybSBQYWdlIC0gQ29uc29saWRhdGVkIGZvcm0tcGFnZSBsYXlvdXQgcGF0dGVyblxuQGltcG9ydCAnZm9ybS1wYWdlJztcblxuLy8gRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBsYXlvdXQgZm9yIEludm9pY2UgYW5kIFF1b3RlIHZpZXcgcGFnZXNcbkBpbXBvcnQgJ2RvY3VtZW50LXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIGxheW91dCBmb3IgcHVibGljLWZhY2luZyBJbnZvaWNlIGFuZCBRdW90ZSBwYWdlc1xuQGltcG9ydCAnZXh0ZXJuYWwtZG9jLXZpZXcnO1xuXG4vLyBNYXJrZXRwbGFjZSAtIFNoYXJlZCBzdHlsZXMgZm9yIFBheW1lbnQgYW5kIE5vdGlmaWNhdGlvbiBtYXJrZXRwbGFjZSBwYWdlc1xuQGltcG9ydCAnbWFya2V0cGxhY2UnO1xuXG4vLyBHbG9iYWwgU2VhcmNoIC0gVG9wIG5hdmlnYXRpb24gc2VhcmNoIGJhciB3aXRoIGxpdmUgcmVzdWx0cyBkcm9wZG93blxuQGltcG9ydCAnZ2xvYmFsLXNlYXJjaCc7XG5cbi8vIERhdGFHcmlkIC0gTW9kZXJuIHRhYmxlL2dyaWQgY29tcG9uZW50IHN0eWxlc1xuQGltcG9ydCAnZGF0YWdyaWQnO1xuXG4vLyBDbGllbnQgRm9ybSAtIE1vZGVybiBjbGllbnQgY3JlYXRpb24gZm9ybVxuQGltcG9ydCAnY2xpZW50LWZvcm0nO1xuXG4vLyBCaWxsaW5nIEZvcm0gLSBTaGFyZWQgc3R5bGVzIGZvciBJbnZvaWNlIGFuZCBRdW90ZSBjcmVhdGlvbiBmb3Jtc1xuQGltcG9ydCAnYmlsbGluZy1mb3JtJztcblxuLy8gUGF5bWVudCBQYWdlIC0gSW52b2ljZSBwYXltZW50IGZvcm0gd2l0aCBtZXRob2Qgc2VsZWN0aW9uXG5AaW1wb3J0ICdwYXltZW50LXBhZ2UnO1xuXG4vLyBQYXltZW50cyBMaXN0IC0gUGF5bWVudHMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzIGFuZCBmaWx0ZXJzXG5AaW1wb3J0ICdwYXltZW50cy1saXN0JztcblxuLy8gVXNlcnMgUGFnZSAtIFVzZXJzIGxpc3Qgd2l0aCBLUEkgY2FyZHMgYW5kIHRhYnNcbkBpbXBvcnQgJ3VzZXJzLXBhZ2UnO1xuXG4vLyBQcm9maWxlIFBhZ2UgLSBVc2VyIHByb2ZpbGUgYW5kIHNldHRpbmdzIHBhZ2VzXG5AaW1wb3J0ICdwcm9maWxlLXBhZ2UnO1xuXG4vLyBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uIC0gMkZBIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2luIHBhZ2VzXG5AaW1wb3J0ICd0d28tZmFjdG9yJztcblxuLy8gTm90aWZpY2F0aW9ucyBQYWdlIC0gVXNlciBub3RpZmljYXRpb24gcHJlZmVyZW5jZXNcbkBpbXBvcnQgJ25vdGlmaWNhdGlvbnMtcGFnZSc7XG5cbi8vIFN1YnNjcmlwdGlvbiBQYWdlcyAtIFRyaWFsIGV4cGlyZWQsIGNhbmNlbGxlZCwgcGVuZGluZyBzdWJzY3JpcHRpb24gc3RhdGVzXG5AaW1wb3J0ICdzdWJzY3JpcHRpb24tcGFnZXMnO1xuXG4vLyBPbmJvYXJkaW5nIENoZWNrbGlzdCAtIERhc2hib2FyZCBjaGVja2xpc3Qgd2lkZ2V0IHN0eWxlc1xuQGltcG9ydCAnb25ib2FyZGluZy1jaGVja2xpc3QnO1xuXG4vLyBPbmJvYXJkaW5nIFdpemFyZCAtIEZpcnN0LXJ1biBmbG93ICgvb25ib2FyZGluZykgc3R5bGVzXG5AaW1wb3J0ICdvbmJvYXJkaW5nLXdpemFyZCc7XG5cbi8vIE1vbmV5IC0gU2lnbmF0dXJlIGNvbXBvbmVudDsgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgZXZlcnkgY3VycmVuY3kgdmFsdWVcbkBpbXBvcnQgJ21vbmV5JztcblxuLy8gU3RhdHVzIENoaXAgLSBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBldmVyeSBzdGF0dXMgd29yZFxuQGltcG9ydCAnc3RhdHVzLWNoaXAnO1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTaGFyZWQgRm9ybSBQYWdlIFN0eWxlc1xuICpcbiAqIENvbnNvbGlkYXRlZCBmb3JtLXBhZ2UgbGF5b3V0IHBhdHRlcm4gdXNlZCBhY3Jvc3MgVGF4QnVuZGxlLCBDbGllbnRCdW5kbGUsXG4gKiBVc2VyQnVuZGxlIChQcm9maWxlLCBJbnZpdGUsIENoYW5nZVBhc3N3b3JkKSBhbmQgc2ltaWxhciBmb3JtIHBhZ2VzLlxuICpcbiAqIFRlbXBsYXRlIHN0cnVjdHVyZTpcbiAqICAgLmZvcm0tcGFnZSA+IC5mb3JtLXBhZ2UtY29udGFpbmVyWy0tbmFycm93fC0tbWVkaXVtfC0td2lkZV0gPlxuICogICAgIC5mb3JtLXBhZ2UtaGVhZGVyID4gLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCA+XG4gKiAgICAgICAuZm9ybS1wYWdlLWljb25bLS1zZWN1cml0eV0gKyBkaXYoLmZvcm0tcGFnZS10aXRsZSArIC5mb3JtLXBhZ2Utc3VidGl0bGUpXG4gKiAgICAgLmZvcm0tcGFnZS1zZWN0aW9ucyA+IC5mb3JtLXBhZ2Utc2VjdGlvbiA+XG4gKiAgICAgICAuc2VjdGlvbi1oZWFkZXIgPiAuc2VjdGlvbi1pY29uWy0tc2VjdXJpdHldICsgLnNlY3Rpb24taGVhZGVyLXRleHRcbiAqICAgICAgICAgKC5zZWN0aW9uLXRpdGxlICsgLnNlY3Rpb24tZGVzY3JpcHRpb24pXG4gKiAgICAgICAuc2VjdGlvbi1jb250ZW50ID4gLmZvcm0tZ3JpZCA+IC5mb3JtLWZpZWxkWy5mb3JtLWZpZWxkLXdpZGVdXG4gKiAgICAgLmZvcm0tcGFnZS1hY3Rpb25zID4gLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyWy0tbWVkaXVtXVxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgV1JBUFBFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBXSURUSC1DT05TVFJBSU5FRCBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1jb250YWluZXIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTI0KTtcblxuICAgICYtLW5hcnJvdyB7IG1heC13aWR0aDogODAwcHg7IH1cblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cblxuICAgICYtLXdpZGUgICB7IG1heC13aWR0aDogMTEwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNikgMDtcbn1cblxuLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLmZvcm0tcGFnZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4yKSAwJSwgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uZm9ybS1wYWdlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5mb3JtLXBhZ2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tdGJsci1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTlMgTElTVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkRJVklEVUFMIFNFQ1RJT04gQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBUkVEIFNFQ1RJT04gSEVBREVSICh1c2VkIGluc2lkZSBmb3JtLXBhZ2Utc2VjdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpIHZhcigtLXRibHItc3BhY2UtNikgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG59XG5cbi5zZWN0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1zZWN1cml0eSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMTUpIDAlLCByZ2JhKHZhcigtLXRibHItc3VjY2Vzcy1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uc2VjdGlvbi1oZWFkZXItdGV4dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLnNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBCT0RZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRXTy1DT0xVTU4gRk9STSBHUklEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgfVxufVxuXG4uZm9ybS1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZm9ybS1maWVsZC13aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVElDS1kgRk9PVEVSIEFDVElPTlMgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwIHZhcigtLXRibHItc3BhY2UtNCk7XG5cbiAgICAmLS1tZWRpdW0geyBtYXgtd2lkdGg6IDkwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVOSEFOQ0VEIFNBVkUgQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4tc2F2ZSxcbi5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctcHJpbWFyeSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctcHJpbWFyeS1sZyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5mb3JtLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmZvcm0tcGFnZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gRG9jdW1lbnQgVmlldyBTaGFyZWQgU3R5bGVzXG4gKlxuICogU2hhcmVkIGxheW91dCBhbmQgY29tcG9uZW50IHN0eWxlcyBmb3IgSW52b2ljZSBhbmQgUXVvdGUgdmlldyBwYWdlcy5cbiAqIFVzZXMgZ2VuZXJpYyBgZG9jLXZpZXctKmAgLyBgZG9jLSpgIGNsYXNzIG5hbWVzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLlxuICogQm90aCBpbnZvaWNlLXZpZXcuc2NzcyBhbmQgcXVvdGUtdmlldy5zY3NzIHVzZSB0aGVzZSBjbGFzc2VzIGRpcmVjdGx5LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1wYWdlIHtcbiAgICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIH1cbn1cblxuLmRvYy12aWV3LWhlYWRlci1sZWZ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uZG9jLXZpZXctaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xufVxuXG4uZG9jLXZpZXctdGl0bGUtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG59XG5cbi5kb2Mtdmlldy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteGwsIDEuMjVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLmRvYy12aWV3LW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uZG9jLXZpZXctbWV0YS1pdGVtIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbn1cblxuLy8gSGVhZGVyIEFjdGlvbnNcblxuLmRvYy12aWV3LWhlYWRlci1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG59XG5cbi5kb2Mtdmlldy11dGlsaXR5LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG59XG5cbi8vIERyb3Bkb3duIHN0eWxpbmdcblxuLmRvYy12aWV3LWhlYWRlciAuZHJvcGRvd24tbWVudSB7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1sZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuXG4gICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGV4dC1kYW5nZXI6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXRibHItc3BhY2UtMikgMDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRVJPIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLWhlcm8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS01KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5idG4taGVyby11cmdlbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItZGFuZ2VyKSAwJSwgdmFyKC0tdGJsci1kYW5nZXItaG92ZXIpIDEwMCUpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LWRhbmdlcik7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1kYW5nZXItaG92ZXIpIDAlLCB2YXIoLS10YmxyLWRhbmdlcikgMTAwJSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LWRhbmdlci1sZyk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQUlOIENPTlRFTlQgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDM0MHB4O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gMTAyNHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRE9DVU1FTlQgQVJFQSAoTWFpbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWRvY3VtZW50IHtcbiAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgb3ZlcmZsb3dcbn1cblxuLmRvYy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gUGlsbC1zaGFwZWQgc3RhdHVzIGNoaXBzIHdoZXJldmVyIHRoZXkgYXBwZWFyIGluc2lkZSB0aGUgZG9jdW1lbnQgdmlldyBvciBpdHNcbi8vIHNpZGViYXIsIG1hdGNoaW5nIHRoZSBkZXNpZ24gc3lzdGVtIHNwZWMgKHJhZGl1cy1mdWxsLCB3ZWlnaHQgNTAwLCAycHggeCAxMHB4KS5cblxuLmRvYy1jYXJkIC5iYWRnZSxcbi5kb2MtcGFnZS1oZWFkZXIgLmJhZGdlLFxuLmRvYy12aWV3LWhlYWRlciAuYmFkZ2UsXG4uZG9jLXZpZXctc2lkZWJhciAuYmFkZ2Uge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuXG4gICAgLy8gVGFibGVyIGJpbmRzIGB0ZXh0LWdyYXktZmdgIHRvIGFtYmVyIHZpYSAtLWJzLXNlY29uZGFyeTsgdGhpcyBtYWtlcyBhXG4gICAgLy8gYENhbmNlbGxlZGAgY2hpcCByZWFkIGFzIGEgd2FybmluZy4gUGluIHRoZSBuZXV0cmFsIGNoaXAgdG8gc2xhdGUgc28gdGhlXG4gICAgLy8gY29sb3VyIG1hdGNoZXMgd2hhdCB0aGUgY2xhc3MgbmFtZSBpbXBsaWVzLlxuXG4gICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBIZWFkZXIgKEZyb20vVG8pXG5cbi5kb2MtaGVhZGVyLWZyb20tdG8ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS04KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLXRibHItZ3JheS01MCkgMCUsIHZhcigtLXRibHItc3VyZmFjZSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICB9XG59XG5cbi5kb2MtcGFydHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi5kb2MtcGFydHktbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLmRvYy1wYXJ0eS1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZywgMS4xMjVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTIpIDA7XG59XG5cbi5kb2MtcGFydHktZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cblxuICAgIC5kZXRhaWwtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCI6XCI7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGV0YWlsLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cblxuICAgIGEuZGV0YWlsLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIExpbmUgSXRlbXMgVGFibGVcblxuLmRvYy1pdGVtcyB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5kb2MtaXRlbXMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cbiAgICB0aGVhZCB7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICYuY29sdW1uLXByaWNlLFxuICAgICAgICAgICAgJi5jb2x1bW4tcXR5LFxuICAgICAgICAgICAgJi5jb2x1bW4tdGF4LFxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0YWJsZSBoZWFkZXIgb24gbW9iaWxlXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIHJvd3MgYXMgY2FyZHMgb24gbW9iaWxlXG4gICAgICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cbiAgICAgICAgICAgICYuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmNvbHVtbi1wcmljZSxcbiAgICAgICAgICAgICYuY29sdW1uLXF0eSxcbiAgICAgICAgICAgICYuY29sdW1uLXRheCxcbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIGNlbGxzIG9uIG1vYmlsZVxuICAgICAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXR0cihkYXRhLWxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHdpZHRocyAoZGVza3RvcCBvbmx5KVxuICAgIEBtZWRpYSAod2lkdGggPj0gNjQxcHgpIHtcblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdGF4IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUb3RhbHMgU2VjdGlvblxuXG4uZG9jLXRvdGFscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgcGFkZGluZy10b3A6IDA7XG59XG5cbi5kb2MtdG90YWxzLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xufVxuXG4udG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSAwO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cbn1cblxuLy8gUGF5bWVudHMgcmVjZWl2ZWQgYXJlIG1vbmV5IGluOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZSBoZXJlLlxuXG4udG90YWxzLXJvdy1wYXltZW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xufVxuXG4vLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYSBzdWNjZXNzIHN0YXRlLiBTdGF5IG5ldXRyYWw7IHF1aWV0ICQwIGNhc2VzLlxuXG4udG90YWxzLXJvdy1kaXNjb3VudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLnRvdGFscy1yb3ctZmluYWwge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIEdyYW5kIHRvdGFsIGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIGlzIHJlc2VydmVkIGZvciBhY3R1YWxseS1wYWlkIHN0YXRlc1xuICAgIC8vIChoYW5kbGVkIGJ5IC5zdW1tYXJ5LWl0ZW0tcGFpZCAvIC50b3RhbHMtcm93LXBheW1lbnQpLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnLCAxLjEyNXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBGb290ZXIgKFRlcm1zICYgTm90ZXMpXG5cbi5kb2MtZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbn1cblxuLmRvYy1mb290ZXItc2VjdGlvbiB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLmRvYy1mb290ZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMikgMDtcbn1cblxuLmRvYy1mb290ZXItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSURFQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMDI0cHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gICAgfVxufVxuXG4uZG9jLXNpZGViYXItY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLW11dGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1zdWNjZXNzIHtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRibHItc3VjY2Vzcyk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10YmxyLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1zdWNjZXNzIC5kb2Mtc2lkZWJhci1jYXJkLWljb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VjY2Vzcy1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLy8gU3VtbWFyeSBHcmlkXG5cbi5kb2Mtc3VtbWFyeS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4vLyBTdW1tYXJ5IEl0ZW1zXG5cbi5zdW1tYXJ5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuXG4gICAgLnN1bW1hcnktbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICB9XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgIC8vIEFtb3VudCBmaWVsZDogdG90YWwgaW52b2ljZSB2YWx1ZS4gTmV1dHJhbCBieSBkZWZhdWx0OyB0aGUgc3RhdHVzIHJvdyBjYXJyaWVzXG4gICAgLy8gdGhlIFwiUGFpZCAvIE92ZXJkdWUgLyBEcmFmdFwiIG1lYW5pbmcuIEdyZWVuIGhlcmUgd291bGQgZG91YmxlLWVuY29kZS5cblxuICAgIC5zdW1tYXJ5LXZhbHVlLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC8vIEJhbGFuY2Ugc3RpbGwgb3dlZDogYW1iZXIgYXR0ZW50aW9uIGlzIGFwcHJvcHJpYXRlLlxuXG4gICAgLnN1bW1hcnktdmFsdWUtYmFsYW5jZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItd2FybmluZyk7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1pdGVtLW92ZXJkdWUge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luOiBjYWxjKC0xICogdmFyKC0tdGJsci1zcGFjZS0yKSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuXG4gICAgLnN1bW1hcnktdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgIH1cbn1cblxuLnN1bW1hcnktaXRlbS1wYWlkIHtcblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4vLyBDbGllbnQgSW5mbyAodXNlZCBpbiBzaWRlYmFyKVxuXG4uY2xpZW50LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3RzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LWNvbnRhY3Qge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG59XG5cbi5jb250YWN0LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xufVxuXG4uY29udGFjdC1lbWFpbCxcbi5jb250YWN0LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4vLyBQYXltZW50cyBMaXN0ICh1c2VkIGluIGludm9pY2Ugc2lkZWJhcilcblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS10YmxyLWdyYXktMzAwKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHRlcik7XG59XG5cbi5wYXltZW50LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi5wYXltZW50LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ib2xkLCA3MDApO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LWNhcmQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLFxuLnBheW1lbnQtZGF0ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xufVxuXG4vLyBSZWxhdGVkIGRvY3VtZW50IGxpbmtzXG5cbi5yZWxhdGVkLXF1b3RlLWxpbmssXG4ucmVsYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLnJlbGF0ZWQtaW52b2ljZS1zdGF0dXMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmRvYy12aWV3LXBhZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZG9jLXZpZXctY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5kb2MtY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAuZG9jLWhlYWRlci1mcm9tLXRvIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgIH1cblxuICAgIC5kb2MtaXRlbXMtdGFibGUge1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZG9jLXRvdGFscy1ncmlkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmRvYy1mb290ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAubm8tcHJpbnQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBzdHlsZXMgZm9yIHB1YmxpYy1mYWNpbmcgaW52b2ljZSBhbmQgcXVvdGUgdmlld3MuXG4gKiBJbnZvaWNlLXNwZWNpZmljOiBleHRlcm5hbC1pbnZvaWNlLXZpZXcuc2Nzc1xuICogUXVvdGUtc3BlY2lmaWM6IGV4dGVybmFsLXF1b3RlLXZpZXcuc2Nzc1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgV1JBUFBFUiAoc2hhcmVkIGJhc2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCwgI2Y4ZmFmYyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFQUCBCUkFORElORyBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwcC1icmFuZGluZy1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG5cbiAgICAuYXBwLWxvZ28ge1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB9XG5cbiAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zZWNvbmRhcnksICM2NDc0OGIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ1RJT04gQkFSIChUT1ApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWFjdGlvbi1iYXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBPR1JBUEhZICYgVklTVUFMIEhJRVJBUkNIWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb21wYW55IG5hbWUgaW4gaGVhZGVyXG5cbi5leHQtZG9jLWNvbXBhbnktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4vLyBEb2N1bWVudCBudW1iZXIgLSBsYXJnZSBhbmQgcHJvbWluZW50XG5cbi5leHQtZG9jLW51bWJlciB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLmV4dC1kb2MtbnVtYmVyLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vLyBWQVQgbnVtYmVyIC0gc3VidGxlIG9wYWNpdHlcblxuLmV4dC1kb2MtdmF0LW51bWJlciB7XG4gICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgb3BhY2l0eTogMC43NTtcbn1cblxuLy8gTG9nbyBjb250YWluZXJcblxuLmV4dC1kb2MtbG9nbyB7XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVRBREFUQSBDQVJEIC0gRGF0ZSwgRHVlIERhdGUsIFRvdGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLW1ldGFkYXRhLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy1tZXRhZGF0YS1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLW1vbmV5LW5ldXRyYWwsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZST00gLyBUTyBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1wYXJ0aWVzLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5leHQtZG9jLXBhcnR5LWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLmV4dC1kb2MtcGFydHktZGV0YWlsIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIElURU1TIFRBQkxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuXG4gICAgdGhlYWQge1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvciwgI2NiZDVlMSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTAsICNmOGZhZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICB9XG5cbiAgICAuaXRlbS1hbW91bnQge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPVEFMUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtdG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjYyNXJlbSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5leHQtZG9jLXRvdGFscy1maW5hbCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWRhcmssICM5NGEzYjgpO1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtcm93IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1tb25leS1uZXV0cmFsLCAjMWUyOTNiKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtZm9vdGVyIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cblxuICAgIC5idG4tc20ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28gaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDogMjRweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FSRCBSRUZJTkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdGF0dXMgYmFkZ2VzXG5cbi5iYWRnZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLy8gSG9yaXpvbnRhbCBydWxlc1xuXG5ociB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLy8gRm9jdXMgc3R5bGVzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXG5cbi5idG46Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmNhcmQtbGcge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDIuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gOTkxcHgpIHtcblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQgLmNhcmQtYm9keSxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3cHgpIHtcblxuICAgIC5leHQtZG9jLW51bWJlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS10b3RhbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy1maW5hbCAuZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFydGllcy1zZWN0aW9uIHtcblxuICAgICAgICAuY29sLXNtLTY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIH1cblxuICAgIC5jYXJkLWxnIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCAuY2FyZC1ib2R5LFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cblxuICAgIC8vIEFwcCBicmFuZGluZyBoZWFkZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5hcHAtYnJhbmRpbmctaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb290ZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWZvb3RlciB7XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RhY2sgbWV0YWRhdGEgaXRlbXMgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIHtcblxuICAgICAgICAuY29sLXNtLTQsXG4gICAgICAgIC5jb2wtc20tNiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIGFjdGlvbiBidXR0b25zIHN0YWNrIG5pY2VseSBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWFjdGlvbi1iYXIge1xuXG4gICAgICAgIC5kLWZsZXguanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogMC43NXJlbTtcblxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLXByaW1hcnksXG4gICAgICAgICAgICAuYnRuLWRhbmdlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSBhZGp1c3RtZW50c1xuXG4gICAgLmV4dC1kb2MtaXRlbXMtdGFibGUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5uby1wcmludCxcbiAgICAuZC1wcmludC1ub25lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAcGFnZSB7XG4gICAgICAgIG1hcmdpbjogMWNtO1xuICAgIH1cblxuICAgIGh0bWwsXG4gICAgYm9keSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFnZSxcbiAgICAucGFnZS13cmFwcGVyLFxuICAgIC5wYWdlLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNWNtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2FyZCxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkLFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cblxuICAgIHRyIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgYnJlYWstYWZ0ZXI6IGF1dG87XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgLmJnLWxpZ2h0LFxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQsXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuYmctZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwsXG4gICAgLmV4dC1kb2MtdG90YWxzLWZpbmFsIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAjMWUyOTNiICFpbXBvcnRhbnQ7ICAgLyogbW9uZXkgaXMgbmV1dHJhbCBpbiBwcmludCB0b28gKi9cbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LXByaW1hcnkge1xuICAgICAgICBjb2xvcjogIzFmNmMyOSAhaW1wb3J0YW50OyAgIC8qIDYuNDk6MSBvbiBwYXBlciAtIGJyYW5kIHRleHQgb25seSAqL1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6ICNiOTFjMWMgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LXN1Y2Nlc3Mge1xuICAgICAgICBjb2xvcjogIzA0Nzg1NyAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtaXRlbXMtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQ6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaHIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNjYmQ1ZTEgIWltcG9ydGFudDtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU2hhcmVkIE1hcmtldHBsYWNlIFN0eWxlc1xuICpcbiAqIENvbW1vbiBzdHlsZXMgc2hhcmVkIGJldHdlZW4gUGF5bWVudEJ1bmRsZSBhbmQgTm90aWZpY2F0aW9uQnVuZGxlIG1hcmtldHBsYWNlIHBhZ2VzLlxuICogUGFnZS1zcGVjaWZpYyBzdHlsZXMgcmVtYWluIGluIHBheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyBhbmQgbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlLnNjc3MuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFSS0VUUExBQ0UgUEFORUwgLSBMZWZ0IFNpZGUgU3RpY2t5IFBhbmVsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXRibHItc3BhY2UtMTYpKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXNtKTtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDZweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0zMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tdGJsci10cmFuc2l0aW9uLWNvbG9ycyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNDAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1hcmtldHBsYWNlLWhlYWRlciB7XG5cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZm9ybS1jb250cm9sOmZvY3VzKSB7XG5cbiAgICAgICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFTEVURSBDT05GSVJNQVRJT04gTkVTVEVEIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNjAlKTtcbiAgICB6LWluZGV4OiAxMDYwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjE1cyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNzA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMTVzIGVhc2U7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2NhbGUtaW4gMC4ycyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24taGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG5cbiAgICBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmRlbGV0ZS1pY29uLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQVJFRCBBTklNQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2UtZmFkZS1pbiB7XG5cbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuXG4gICAgdG8geyBvcGFjaXR5OiAxOyB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2NhbGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFkZ2Utc20ge1xuICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xufVxuXG4ubWFya2V0cGxhY2Utc2VhcmNoLWNsZWFyIHtcbiAgICB6LWluZGV4OiAxMDtcbiAgICByaWdodDogOHB4ICFpbXBvcnRhbnQ7XG59XG4iLCIvKipcbiAqIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG4gKi9cblxuLmdsb2JhbC1zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuXG4gICAgJi1pbnB1dC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICYtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMC43NXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICYtaW5wdXQge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAvLyAwLjc1cmVtIGljb24tbGVmdCArIDFyZW0gaWNvbi13aWR0aCArIDAuNXJlbSBnYXAgPSAyLjI1cmVtXG4gICAgICAgIC8vIFJpZ2h0OiBoZWxwLWJ0biAyMHB4ICsgZ2FwIDZweCArIHNob3J0Y3V0IH42NXB4ICsgbWFyZ2luIDEwcHggPSB+MTAxcHgg4omIIDYuNXJlbVxuICAgICAgICBwYWRkaW5nOiAwIDYuNXJlbSAwIDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtaW5wdXQtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSBlYXNlLWluLW91dCwgYm94LXNoYWRvdyB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgZWFzZS1pbi1vdXQ7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCBzZWFyY2ggY2FuY2VsIGJ1dHRvblxuXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMC42MjVyZW07XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgIH1cblxuICAgICYtc2hvcnRjdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAga2JkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xcmVtIDAuMzVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC10cmlnZ2VyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIGVhc2UsIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgZWFzZTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLnNlYXJjaC1oZWxwLXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLnNlYXJjaC1oZWxwLW9wIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm9zcGFjZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5zZWFyY2gtaGVscC1leGFtcGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAzcHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbiNzZWFyY2hIZWxwTW9kYWwgLm1vZGFsLWJvZHkge1xuICAgIC8vIFRoZSBzZWFyY2ggZ3VpZGUgbGF5cyBvdXQgaXRzIG93biBmdWxsLWJsZWVkIHNlY3Rpb25zIChiYW5kcywgZGl2aWRlcnMsXG4gICAgLy8gY29sdW1ucyksIHNvIHRoZSBtb2RhbCBib2R5IG11c3Qgbm90IGFkZCBwYWRkaW5nIG9mIGl0cyBvd24uXG4gICAgcGFkZGluZzogMDtcbn1cblxuLnNlYXJjaC1kcm9wZG93biB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWluLXdpZHRoOiA1MjBweDtcblxuICAgIC8vIEV4dGVuZCBzeW1tZXRyaWNhbGx5IGJleW9uZCB0aGUgaW5wdXQgZm9yIGEgd2lkZXIgcGFuZWxcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG5cbiAgICAvLyBVc2UgaXNvbGF0aW9uIHRvIGF2b2lkIHN0YWNraW5nIGNvbnRleHQgaXNzdWVzIGZyb20gdGhlIG5hdmJhclxuICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICB6LWluZGV4OiA5OTk5O1xuXG4gICAgJi5pcy1vcGVuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGFuaW1hdGlvbjogc2VhcmNoLWRyb3Bkb3duLWluIDAuMTJzIGVhc2Utb3V0O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzZWFyY2gtZHJvcGRvd24taW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgwLjk5KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5zZWFyY2gtc3Bpbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uc2VhcmNoLXJlc3VsdHMge1xuICAgIG1heC1oZWlnaHQ6IDQ0MHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiA0cHg7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgfVxufVxuXG4uc2VhcmNoLWdyb3VwIHtcblxuICAgICYgKyAmIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgICYtbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAwLjg3NXJlbSAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWl0ZW0ge1xuXG4gICAgJi5pcy1hY3RpdmUgLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIC5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjA4cyBlYXNlO1xufVxuXG4uc2VhcmNoLXJlc3VsdC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDM0cHg7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIHBhZGRpbmc6IDZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnNlYXJjaC1yZXN1bHQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc2VhcmNoLXJlc3VsdC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5zZWFyY2gtcmVzdWx0LXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuNzc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYXNpZGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjJyZW07XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LWJhZGdlIHtcbiAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNDVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LW1ldGEge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5zZWFyY2gtZW1wdHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIuNXJlbSAxcmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgJi1pY29uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmLXRleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4uc2VhcmNoLWVycm9yIHtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLnNlYXJjaC1jaGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtcmVtb3ZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtY2hpcHMtYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgbWluLWhlaWdodDogMDtcblxuICAgICY6ZW1wdHkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLnNlYXJjaC1zdWdnZXN0aW9ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYygxMDAlICsgNHB4KTtcbiAgICBsZWZ0OiAwO1xuICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gMDtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgJi5pcy1vcGVuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW0gMC4xcmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgJi1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERhdGFHcmlkIENvbXBvbmVudCBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4sIGNsZWFuIGRhdGEgZ3JpZCBzdHlsaW5nIGZvbGxvd2luZyB0aGUgU29saWRJbnZvaWNlIGRlc2lnbiBzeXN0ZW0uXG4gKiBVc2VzIGRlc2lnbiB0b2tlbnMgZnJvbSBfdG9rZW5zLnNjc3MgZm9yIGNvbnNpc3RlbmN5LlxuICovXG5cbi8vIE5vIGAuZGF0YWdyaWRgLCBgLmRhdGFncmlkLXRpdGxlYCBvciBgLmRhdGFncmlkLWl0ZW1gIHJ1bGVzIGhlcmU6IHRob3NlIGFyZSBUYWJsZXIncyBrZXkvdmFsdWVcbi8vIGdyaWQgKHRoZSBwcm9maWxlIGRldGFpbHMsIHRoZSBpbnN0YWxsZXIgc3VtbWFyeSksIGFuZCB0aGUgZ3JpZCBjb21wb25lbnQgbmV2ZXIgdXNlcyB0aGVtLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUFSQ0ggJiBGSUxURVIgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZGF0YWdyaWQtdG9vbGJhci1lbmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5kYXRhZ3JpZC1zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogMzIwcHg7XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWljb24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTIpIHZhcigtLXRibHItc3BhY2UtMTApO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ1RJVkUgRklMVEVSUyAoQ2hpcHMgaW4gdG9vbGJhcilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMSkgdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0KTtcblxuICAgICAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1yZW1vdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLWtleSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJzonO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItdmFsdWUge1xuICAgICAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1yZW1vdmUge1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJTFRFUiBQQU5FTCAoRHJvcGRvd24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1maWx0ZXItZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBFbnN1cmUgbmVzdGVkIGRyb3Bkb3ducyAobGlrZSBzZWxlY3QyKSBhcHBlYXIgYWJvdmUgdGhlIHBhbmVsXG5cbiAgICAuZHJvcGRvd24tbWVudSxcbiAgICAuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAgICAgICB6LWluZGV4OiAxMDYwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAzNTBweCk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmRhdGFncmlkLWZpbHRlci1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3ducyB3aXRoaW4gZmllbGRzIGhhdmUgcHJvcGVyIHotaW5kZXhcblxuICAgIC5mb3JtLXNlbGVjdCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgLy8gRGF0ZSByYW5nZSBmaWVsZHNcblxuICAgIC5yb3cge1xuICAgICAgICAtLWJzLWd1dHRlci14OiAwLjVyZW07XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXdpZGdldCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciBmb3JtIHdpZGdldHNcblxuICAgIC8vIERhdGUgcmFuZ2UgZmllbGRzIC0gZGlzcGxheSBpbmxpbmUgKHNpZGUgYnkgc2lkZSlcbiAgICAvLyBUaGUgRGF0ZVJhbmdlRm9ybVR5cGUgY3JlYXRlcyBhIGNvbnRhaW5lciBkaXYgd2l0aCBzdGFydC9lbmQgZGF0ZSBmaWVsZHNcblxuICAgID4gZGl2Omhhcyg+IGRpdiA+IGlucHV0W3R5cGU9XCJkYXRlXCJdKSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIC8vIEVhY2ggZGF0ZSBmaWVsZCBjb250YWluZXJcblxuICAgICAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImRhdGVcIl0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgY2hvaWNlIChjaGVja2JveGVzL3JhZGlvcykgLSByZW5kZXIgYXMgc3RhbmRhcmQgY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgYW55IHN3aXRjaCBzdHlsZXMgLSBmb3JjZSByZWd1bGFyIGNoZWNrYm94IGFwcGVhcmFuY2VcblxuICAgICAgICAmLmZvcm0tc3dpdGNoIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWRhcmspO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZW1vdmUgc3dpdGNoL3BpbGwgYXBwZWFyYW5jZVxuXG4gICAgICAgICAgICAmW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblxuICAgICAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAgMjAnJTNlJTNjcGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzMnIGQ9J002IDEwbDMgM2w2LTYnLyUzZSUzYy9zdmclM2VcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW5vcm1hbCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNwYWNlIGJldHdlZW4gY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWZvb3RlciB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyBGb3JtIGVsZW1lbnRzIHdpdGhpbiBmaWx0ZXIgcGFuZWxcblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgLy8gU3RhbmRhcmQgZm9ybSBjb250cm9sc1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyKTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhpZGUgbmVzdGVkIGxhYmVscyBmcm9tIERhdGVSYW5nZUZvcm1UeXBlICh3ZSBzaG93IG91ciBvd24pXG5cbiAgICAuZGF0YWdyaWQtZmlsdGVyLWZpZWxkID4gLmZvcm0tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIERhdGUgcmFuZ2Ugc3ViLWxhYmVsc1xuXG4gICAgLmRhdGFncmlkLWZpbHRlci1maWVsZCAucm93IHtcblxuICAgICAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtMSk7XG5cbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlwbGUgY2hvaWNlIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTEtNSkgdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBtdWx0aXBsZSBjaGVja2JveGVzIGluIGEgbGlzdFxuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IGRyb3Bkb3duIGFkanVzdG1lbnRzXG5cbiAgICBzZWxlY3RbbXVsdGlwbGVdIHtcbiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMSk7XG5cbiAgICAgICAgb3B0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG5cbiAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVYUE9SVCBNRU5VIChEcm9wZG93bilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWV4cG9ydC1kcm9wZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUge1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWhlYWRlciB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IHZhcigtLXRibHItc3BhY2UtMSkgMCAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcblxuICAgIC5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uOmhvdmVyICYsXG4gICAgLmRhdGFncmlkLWV4cG9ydC1vcHRpb246Zm9jdXMtdmlzaWJsZSAmIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWhpbnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09MVU1OIFZJU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWNvbHVtbi1waWNrZXIge1xuXG4gICAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1kYXJrKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgZGVmYXVsdCBkcm9wZG93biBjYXJldFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMjBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIGFjY2VudC1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCTEUgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10YWJsZS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgfVxuXG4gICAgdGJvZHkge1xuICAgICAgICAvLyBUYWJ1bGFyIGZpZ3VyZXMgYWNyb3NzIHRoZSB0YWJsZSBzbyBhbW91bnRzLCBJRHMgYW5kIGRhdGVzIGFsaWduIGNsZWFubHlcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB9XG5cbiAgICB0Ym9keSB0ciB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHR5cGVzXG5cbiAgICAuY29sLWNoZWNrYm94IHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICB0aC5jb2wtY2hlY2tib3gge1xuICAgICAgICAvLyBLZWVwIGhlYWRlciBjaGVja2JveCBjZW50ZXJlZCB0byBtYXRjaCBjZWxsc1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbC1pZCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ubyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmNvbC1kYXRlIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBNb25leSBjb2x1bW5zOiByaWdodC1hbGlnbiBib3RoIGhlYWRlciBhbmQgY2VsbCwgdGFidWxhciBmaWd1cmVzIG9uIHN5c3RlbSBmb250LlxuICAgIC8vIE1vbm8gaXMgcmVzZXJ2ZWQgZm9yIGlkZW50aWZpZXJzIHBlciB0aGUgZGVzaWduIHN5c3RlbTsgbW9uZXkgcmVhZHMgYXMgZGF0YSwgbm90IGNvZGUuXG5cbiAgICAuY29sLWFtb3VudCxcbiAgICAuY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICB0aC5jb2wtYW1vdW50LFxuICAgIHRoLmNvbC1tb25leSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC8vIFRoZSBzb3J0YWJsZSBsaW5rIGluc2lkZSBhIHJpZ2h0LWFsaWduZWQgaGVhZGVyIG5lZWRzIGl0cyBjb250ZW50IHB1c2hlZCByaWdodCB0b29cblxuICAgIHRoLmNvbC1hbW91bnQgLmRhdGFncmlkLXNvcnQtbGluayxcbiAgICB0aC5jb2wtbW9uZXkgLmRhdGFncmlkLXNvcnQtbGluayB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLmNvbC1zdGF0dXMge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2wtYWN0aW9ucyB7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGFibGVyIGJhZGdlcyBsaXZlIGluc2lkZSBzdGF0dXMgY2VsbHMuIFRoZSBkZXNpZ24gc3lzdGVtIG1hbmRhdGVzIHBpbGwgY2hpcHMuXG5cbiAgICB0Ym9keSAuYmFkZ2Uge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgcGFkZGluZzogMnB4IDEwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAgICAgLy8gYHRleHQtZ3JheS1mZ2AgaXMgYW1iZXItYm91bmQ7IG5ldXRyYWxpc2UgdGhlIENhbmNlbGxlZCBjaGlwIGV4cGxpY2l0bHkuXG5cbiAgICAgICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gU29ydGFibGUgY29sdW1uIGhlYWRlcnNcblxuLmRhdGFncmlkLXNvcnQtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgICYuc29ydGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNvcnQtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBvcGFjaXR5OiAwLjM1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlciAuZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJPVyBBQ1RJT05TIChJY29uIEJ1dHRvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yb3ctYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xufVxuXG4uZGF0YWdyaWQtYWN0aW9uLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi12aWV3OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItaW5mby1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi1lZGl0OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi1kZWxldGU6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBtZW51IGJ1dHRvblxuXG4uZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyLFxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBkcm9wZG93biBtZW51IGNvbnRhaW5lclxuXG4uZGF0YWdyaWQtbW9yZS1tZW51IHtcblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAxNjBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1tZCk7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGV4dC1kYW5nZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItZGFuZ2VyKTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1kaXZpZGVyIHtcbiAgICAgICAgbWFyZ2luOiB2YXIoLS10YmxyLXNwYWNlLTEpIDA7XG4gICAgfVxufVxuXG4vLyBTaG93IG1vcmUgYnV0dG9uIG9uIHJvdyBob3ZlciBvbmx5IChzdWJ0bGUgVVgpXG5cbnRib2R5IHRyOm5vdCg6aG92ZXIpIC5kYXRhZ3JpZC1tb3JlLWJ0biB7XG4gICAgb3BhY2l0eTogMDtcbn1cblxudGJvZHkgdHI6aG92ZXIgLmRhdGFncmlkLW1vcmUtYnRuLFxuLmRhdGFncmlkLW1vcmUtbWVudS5zaG93IC5kYXRhZ3JpZC1tb3JlLWJ0biB7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEVDS0JPWCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGFjY2VudC1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWVtcHR5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTE2KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhdGFncmlkLWVtcHR5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogODBweDtcbiAgICBoZWlnaHQ6IDgwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ncmF5LTMwMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZW1wdHktdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1tZXNzYWdlIHtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLmRhdGFncmlkLWVtcHR5LWFjdGlvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZMT0FUSU5HIEJVTEsgQUNUSU9OIEJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtYnVsay1iYXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDI0cHg7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDEwMHB4KTtcbiAgICB6LWluZGV4OiA5OTk5OyAvLyBWZXJ5IGhpZ2ggdG8gZW5zdXJlIHZpc2liaWxpdHkgYWJvdmUgZXZlcnl0aGluZ1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICBvcGFjaXR5IDMwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLFxuICAgICAgICAgICAgICAgIHZpc2liaWxpdHkgMHMgMzAwbXM7XG5cbiAgICAmLnZpc2libGUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eSAwcztcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWJhci1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS05MDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy14bCk7XG59XG5cbi5kYXRhZ3JpZC1idWxrLWNvdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1pbnZlcnNlKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLmNvdW50IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS05MDApO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uZGF0YWdyaWQtYnVsay1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtaW52ZXJzZSk7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMTAlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG4gICAgfVxuXG4gICAgJi5idG4tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYigyMzkgNjggNjggLyAyMCUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1kaXZpZGVyIHtcbiAgICB3aWR0aDogMXB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAyMCUpO1xufVxuXG4uZGF0YWdyaWQtYnVsay1jbG9zZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ncmF5LTQwMCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMTAlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0lOQVRJT04gRk9PVEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1mb290ZXItaW5mbyB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtcGVyLXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0xLTUpIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1wYWdpbmF0aW9uIHtcblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuXG4gICAgLnBhZ2UtaXRlbSB7XG5cbiAgICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1saWdodCk7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVRVUyBCQURHRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXN0YXR1cyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0wLTUpIHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcblxuICAgICYuc3RhdHVzLXN1Y2Nlc3Mge1xuICAgICAgICBjb2xvcjogIzA2NWY0NjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiAjOTkxYjFiO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy13YXJuaW5nIHtcbiAgICAgICAgY29sb3I6ICM5MjQwMGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItd2FybmluZy1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1pbmZvIHtcbiAgICAgICAgY29sb3I6ICMxZTQwYWY7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItaW5mby1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWdyYXktNzAwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUxBVElWRSBEQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yZWxhdGl2ZS1kYXRlIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkIHZhcigtLXRibHItYm9yZGVyLWRhcmspO1xuICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4O1xuICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9BRElORyBTVEFURVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtbG9hZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gNzAlKTtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtbG9hZGluZy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgei1pbmRleDogMTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmRhdGFncmlkLWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXRhYmxlIHtcblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstYmFyLWlubmVyIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1idWxrLWRpdmlkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVhQQU5EQUJMRSBST1dTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10YWJsZSB7XG4gICAgLy8gRXhwYW5kIGNvbHVtbiBzdHlsaW5nXG5cbiAgICAuY29sLWV4cGFuZCB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwYW5kLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi8vIERldGFpbCByb3cgKGhpZGRlbiBieSBkZWZhdWx0KVxuXG4uZGF0YWdyaWQtZGV0YWlsLXJvdyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1kZXRhaWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGFuaW1hdGlvbjogZGF0YWdyaWQtc2xpZGUtZG93biAyMDBtcyBlYXNlO1xuXG4gICAgLy8gT3ZlcnJpZGUgbmVzdGVkIGRhdGFncmlkIGNhcmQgc3R5bGVzIHdoZW4gaW5zaWRlIGRldGFpbCByb3dcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBkYXRhZ3JpZC1zbGlkZS1kb3duIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVBJIFRPS0VOIEhJU1RPUlkgKEV4cGFuZGFibGUgUm93IERldGFpbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwaS10b2tlbi1oaXN0b3J5IHtcblxuICAgIGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci13aGl0ZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkge1xuXG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyOmxhc3QtY2hpbGQgdGQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQ2xpZW50IEZvcm0gU3R5bGVzXG4gKlxuICogQ2xpZW50LXNwZWNpZmljIHN0eWxlcyBmb3IgdGhlIGNsaWVudCBjcmVhdGlvbi9lZGl0IGZvcm0uXG4gKiBPdXRlciBmb3JtLXBhZ2UgbGF5b3V0IHVzZXMgc2hhcmVkIGNsYXNzZXMgZnJvbSBfZm9ybS1wYWdlLnNjc3MuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT1BUSU9OQUwgU0VDVElPTiBWQVJJQU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1zZWN0aW9uLW9wdGlvbmFsIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xuXG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVSVJFRCAvIE9QVElPTkFMIFNFQ1RJT04gSUNPTiBNT0RJRklFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1pY29uLXJlcXVpcmVkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRBQ1QgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLmNvbnRhY3QtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG59XG5cbi5jb250YWN0LWNhcmQtdGl0bGUge1xuICAgIGZsZXg6IDE7XG59XG5cbi5jb250YWN0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtY2FyZC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLmNvbnRhY3QtY2FyZC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uY29udGFjdC1mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtZmllbGQtZW1haWwge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXRibHItYm9yZGVyKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxNDBweCAxZnIgYXV0bztcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgICAgIC5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgICAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1hZGQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5hZGQtZGV0YWlsLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZHJlc3Nlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uYWRkcmVzcy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5hZGRyZXNzLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG59XG5cbi5hZGRyZXNzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1pbmZvLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvKTtcbn1cblxuLmFkZHJlc3MtY2FyZC10aXRsZSB7XG4gICAgZmxleDogMTtcbn1cblxuLmFkZHJlc3MtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4uYWRkcmVzcy1jYXJkLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uYWRkcmVzcy1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5hZGRyZXNzLWZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBREQgSVRFTSBBQ1RJT04gQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGQtaXRlbS1hY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS10YmxyLWJvcmRlcik7XG59XG5cbi5hZGQtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMi01KSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OIEZPUiBORVcgSVRFTVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBjbGllbnQtc2xpZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4uY29udGFjdC1jYXJkLFxuLmFkZHJlc3MtY2FyZCB7XG4gICAgYW5pbWF0aW9uOiBjbGllbnQtc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEUgU1RZTElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29udGFjdHMtbGlzdDplbXB0eTo6YmVmb3JlLFxuLmFkZHJlc3Nlcy1saXN0OmVtcHR5OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5lbXB0eS1jb250YWN0cy1oaW50LFxuLmVtcHR5LWFkZHJlc3Nlcy1oaW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIEJpbGxpbmcgRm9ybSBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4sIGNsZWFuIGludm9pY2UgY3JlYXRpb24gZm9ybSB3aXRoIDItY29sdW1uIGxheW91dCxcbiAqIHN0aWNreSB0b3RhbHMgc2lkZWJhciwgYW5kIGNvbGxhcHNpYmxlIHNlY3Rpb25zLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJJTExJTkcgRk9STSBQQUdFIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi5iaWxsaW5nLWZvcm0tY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yNCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0taGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNikgMDtcbn1cblxuLmJpbGxpbmctZm9ybS1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbn1cblxuLmJpbGxpbmctZm9ybS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4uYmlsbGluZy1mb3JtLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXRibHItc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJJTExJTkcgREVUQUlMUyBTRUNUSU9OIChDbGllbnQsIEludm9pY2UgSUQsIERhdGVzLCBEaXNjb3VudClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZGV0YWlscy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAvLyBNb2RpZmllciBmb3IgZm9ybXMgd2l0aG91dCBkYXRlIGZpZWxkcyAoZS5nLiwgUXVvdGVzKVxuXG4gICAgJi0tbm8tZGF0ZXMge1xuXG4gICAgICAgIC5iaWxsaW5nLWRldGFpbHMtcmlnaHQge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZGV0YWlscy1yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLy8gSW52b2ljZSBJRCB3aXRoIGlubGluZSBlZGl0XG5cbi5iaWxsaW5nLWlkLWRpc3BsYXkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcblxuICAgIC5iaWxsaW5nLWlkLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuXG4gICAgICAgIC8vIElkZW50aWZpZXJzIGFyZSBub3QgbW9uZXkuIFByaW1hcnkgZ3JlZW4gaXMgcmVzZXJ2ZWQgZm9yIHBhaWQgc3RhdGVzIGFuZCBDVEFzLlxuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC1lZGl0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWlkLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi8vIERhdGUgZmllbGRzIHJvd1xuXG4uaW52b2ljZS1kYXRlcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJRU5UIFNFTEVDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXNlbGVjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNoYW5nZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtY29udGFjdHMge1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5jb250YWN0cy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLmNvbnRhY3QtY2hlY2tib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5jb250YWN0LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgfVxuXG4gICAgLmNvbnRhY3QtZW1haWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFJTiBDT05URU5UIC0gMiBDT0xVTU4gTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tbWFpbiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzMjBweDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMTAwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSVRFTVMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1pdGVtcy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJpbGxpbmctaXRlbXMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi8vIExpbmUgaXRlbXMgbGlzdCAocmVzcG9uc2l2ZSBncmlkKVxuXG4uYmlsbGluZy1pdGVtcy1saXN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMi42ZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDE0MHB4LCAwLjlmcikgbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gV2l0aG91dCB0YXggY29sdW1uIC0gZ2l2ZSBkZXNjcmlwdGlvbiBldmVuIG1vcmUgc3BhY2VcblxuLmJpbGxpbmctaXRlbXMtbGlzdDpub3QoOmhhcyguY29sdW1uLXRheCkpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMy44ZnIpIG1pbm1heCgxMDBweCwgMC45ZnIpIDU2cHggbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIC8vIFR3byBjb2x1bW5zLCBub3Qgb25lOiB0aGlzIHVuZG9lcyB0aGUgZGVza3RvcCB0ZW1wbGF0ZSBhYm92ZSwgYW5kIHRoZSBzdGFja2VkXG4gICAgICAgICAgICAvLyBgZ3JpZC10ZW1wbGF0ZS1hcmVhc2AgcHV0cyBwcmljZSBiZXNpZGUgcXR5LiBBIHNpbmdsZSBjb2x1bW4gbGVhdmVzIHRoZSBzZWNvbmRcbiAgICAgICAgICAgIC8vIG9uZSBpbXBsaWNpdCBhbmQgYGF1dG9gLCB3aGljaCBsZXRzIHF0eSBzdGFydmUgcHJpY2Ugb2YgaXRzIHdpZHRoLlxuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBXaGVuIHRoZSBUYXggY29sdW1uIGV4aXN0cyBidXQgbm8gbGluZS10YXggZHJvcGRvd25zIGFyZSBhZGRlZCBvbiBhbnkgcm93LFxuLy8gc2hyaW5rIHRoZSBUYXggc2xvdCBzbyB0aGUgXCIrIEFkZCB0YXhcIiBidXR0b24gZG9lc24ndCBsZWF2ZSBhIHZpc2libGUgZ2FwXG4vLyBiZXR3ZWVuIFRheCBhbmQgVG90YWwuIFRoZSB3aWRlciBzbG90IHJldHVybnMgdGhlIG1vbWVudCBhIHRheCByb3cgYXBwZWFycy5cblxuLmJpbGxpbmctaXRlbXMtbGlzdDpoYXMoLmNvbHVtbi10YXgpOm5vdCg6aGFzKC5saW5lLXRheC1yb3cpKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyOHB4IG1pbm1heCgwLCAzLjJmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoODBweCwgMC41ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIC8vIFR3byBjb2x1bW5zLCBub3Qgb25lOiB0aGlzIHVuZG9lcyB0aGUgZGVza3RvcCB0ZW1wbGF0ZSBhYm92ZSwgYW5kIHRoZSBzdGFja2VkXG4gICAgICAgICAgICAvLyBgZ3JpZC10ZW1wbGF0ZS1hcmVhc2AgcHV0cyBwcmljZSBiZXNpZGUgcXR5LiBBIHNpbmdsZSBjb2x1bW4gbGVhdmVzIHRoZSBzZWNvbmRcbiAgICAgICAgICAgIC8vIG9uZSBpbXBsaWNpdCBhbmQgYGF1dG9gLCB3aGljaCBsZXRzIHF0eSBzdGFydmUgcHJpY2Ugb2YgaXRzIHdpZHRoLlxuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDIuNmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCgxNDBweCwgMC45ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgID4gZGl2IHtcbiAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IGdyaWQgYmxvd291dFxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLy8gUHJldmVudCBncmlkIGJsb3dvdXRcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlc2NyaXB0aW9uIGlzIHNlY29uZGFyeSB0byB0aGUgbmFtZSwgYW5kIG1vc3QgbGluZXMgbmV2ZXIgZ2V0IG9uZS4gQSBjbG9zZWRcbiAgICAvLyBgPGRldGFpbHM+YCBrZWVwcyB0aGUgY29tbW9uIGNhc2UgdG8gdGhlIHNpbmdsZSBpbnB1dCBpdCB3YXMgYmVmb3JlIHRoZSBuYW1lIGV4aXN0ZWQsXG4gICAgLy8gYW5kIGNvc3RzIGEgY2xpY2sg4oCUIG5vdCBhIHRyaXAgZWxzZXdoZXJlIOKAlCB3aGVuIGEgbGluZSBkb2VzIG5lZWQgZGV0YWlsLlxuXG4gICAgLmxpbmUtZGVzY3JpcHRpb24ge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuXG4gICAgICAgID4gc3VtbWFyeSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcblxuICAgICAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZbb3Blbl0gPiBzdW1tYXJ5IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ+KIkic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXByaWNlLFxuICAgIC5jb2x1bW4tcXR5LFxuICAgIC5jb2x1bW4tdGF4IHtcblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgIC8vIFNsaW0gZG93biB0aGUgbGVhZGluZyBjdXJyZW5jeS1zeW1ib2wgYWRkb24gKHRoZSBcIiRcIi9cIuKCrFwiIHByZWZpeClcbiAgICAgICAgLy8gc28gaXQgc3RvcHMgZWF0aW5nIH4zMCUgb2YgdGhlIGNvbHVtbidzIHVzYWJsZSBpbnB1dCB3aWR0aC5cblxuICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNHJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1xdHkge1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMSk7XG5cbiAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgIC5jb2x1bW4tZHJhZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIC8vIEFsaWducyB0aGUgZ3JpcCB3aXRoIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBkZXNjcmlwdGlvbiwgbm90IHRoZSB0b3Agb2YgaXRzIGJveC5cbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLy8gUXVpZXQgdW50aWwgdGhlIHJvdyBpcyBob3ZlcmVkIG9yIHRoZSBoYW5kbGUgaXMgdGFiYmVkIHRvLCBzbyBhIGNvbHVtbiBvZiBncmlwcyBkb2VzXG4gICAgLy8gbm90IGNvbXBldGUgd2l0aCB0aGUgZmllbGRzIGZvciBhdHRlbnRpb24uXG5cbiAgICAubGluZS1kcmFnLWhhbmRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgIGN1cnNvcjogZ3JhYjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgIG9wYWNpdHkgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgYmFja2dyb3VuZCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBjdXJzb3I6IGdyYWJiaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAxcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIC5saW5lLWRyYWctaGFuZGxlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBNb2JpbGUgcmVzcG9uc2l2ZSBsYXlvdXRcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICAgJ2Rlc2MgZGVzYydcbiAgICAgICAgICAgICdwcmljZSBxdHknXG4gICAgICAgICAgICAndGF4IHRheCdcbiAgICAgICAgICAgICdhY3Rpb25zIHRvdGFsJztcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IGRlc2M7XG5cbiAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHByaWNlO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHF0eTtcblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10YXgge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiB0YXg7XG5cbiAgICAgICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBhY3Rpb25zO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3V0IG9mIHRoZSBzdGFja2VkIGZsb3cgYW5kIGludG8gdGhlIGNhcmQncyBjb3JuZXI6IHRoZSBhcmVhcyBiZWxvdyBoYXZlIG5vIGNvbHVtblxuICAgICAgICAvLyB0byBzcGFyZSwgYW5kIHRoZXJlIGlzIG5vIGhvdmVyIHRvIHJldmVhbCBpdCBvbiBhIHRvdWNoIHNjcmVlbi5cblxuICAgICAgICAuY29sdW1uLWRyYWcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICAgICAgcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5saW5lLWRyYWctaGFuZGxlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogdG90YWw7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuXG4gICAgICAgICAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUmVtb3ZlIGl0ZW0gYnV0dG9uXG5cbi5yZW1vdmUtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLy8gQWRkIGl0ZW0gYnV0dG9uXG5cbi5hZGQtaXRlbS1hY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xufVxuXG4uYWRkLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBFUi1MSU5FIE1VTFRJLVRBWCAoU3RhY2tlZCByb3dzIGluIHRoZSBUYXggY29sdW1uKVxuLy8gRWFjaCAubGluZS10YXgtcm93IHVzZXMgYSBzaW5nbGUtcm93IGZsZXggbGF5b3V0OlxuLy8gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilJBcbi8vICAg4pSCIHRheCBkcm9wZG93biAgICAgICAgICAgICAgICAgICAg4pSCICDDlyAg4pSCXG4vLyAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUmFxuLy8gQ29tcG91bmQgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgdW5kZXJseWluZyBUYXggcmF0ZSAoc25hcHNob3R0ZWQgaW50byBMaW5lVGF4XG4vLyB2aWEgYHNuYXBzaG90RnJvbWApIOKAlCB0aGVyZSdzIG5vIHBlci1saW5lIG92ZXJyaWRlLCBzbyB0aGUgZm9ybSBkb2Vzbid0XG4vLyBleHBvc2UgaXQuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5saW5lLXRheC1jb2xsZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmxpbmUtdGF4LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDRweDtcbn1cblxuLmxpbmUtdGF4LXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4ubGluZS10YXgtZmllbGQtdGF4IHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgICBzZWxlY3QsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgcGFkZGluZzogNHB4IDIycHggNHB4IDhweDtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCA2cHggY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEycHg7XG4gICAgfVxufVxuXG4ubGluZS10YXgtYWN0aW9ucyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubGluZS10YXgtcmVtb3ZlLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSwgYmFja2dyb3VuZCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItZGFuZ2VyLXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmxpbmUtdGF4LWFkZC1idG4ge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFLUxFVkVMIFRBWEVTIChXaXRoaG9sZGluZyAmIGFkanVzdG1lbnRzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS02KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1zdWJ0aXRsZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXgtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuXG4gICAgLy8gVGhlIGRpcmVjdGlvbiBzZWxlY3QgY2FycmllcyBib3RoIGEgY2FyZXQgYW5kIGEgY2xlYXIgYnV0dG9uLCBzbyBhIGJhcmUgYDFmcmAgY29sbGFwc2VzXG4gICAgLy8gZmFyIGVub3VnaCBmb3IgdGhlIGxvbmdlc3Qgb3B0aW9uIChcIkluZm9ybWF0aW9uYWxcIikgdG8gcnVuIHVuZGVybmVhdGggdGhlbS5cbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAyZnIpIG1pbm1heCgxMHJlbSwgMWZyKSBtaW5tYXgoMCwgM2ZyKSBhdXRvO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmludm9pY2UtdGF4LWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuXG4gICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZvaWNlLXRheC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UQUxTIFNJREVCQVIgKFN0aWNreSBvbiBEZXNrdG9wKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy10b3RhbHMtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxufVxuXG4uYmlsbGluZy10b3RhbHMtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5iaWxsaW5nLXRvdGFscy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmJpbGxpbmctdG90YWxzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG59XG5cbi5iaWxsaW5nLXRvdGFscy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYmlsbGluZy10b3RhbHMtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KTtcbn1cblxuLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi50b3RhbHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi50b3RhbHMtcm93LWRpc2NvdW50IHtcbiAgICAvLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFF1aWV0IGl0IGRvd24gaW5zdGVhZCBvZiBmbGFnZ2luZyBpdCByZWQuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4udG90YWxzLXJvdy10b3RhbCB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZ3JhbmQgdG90YWwgaXMgaW5mb3JtYXRpb25hbCwgbm90IGEgXCJQYWlkXCIgc3RhdGUuIEdyZWVuIG9ubHkgd2hlbiB0aGVcbiAgICAvLyBpbnZvaWNlIGlzIGFjdHVhbGx5IHBhaWQ7IG9uIHRoZSBlZGl0IHNjcmVlbiB0aGlzIHN0YXlzIG5ldXRyYWwgdGV4dC5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG59XG5cbi8vIERpc2NvdW50IGZpZWxkIGluIHNpZGViYXJcblxuLmRpc2NvdW50LWZpZWxkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEVSTVMgJiBOT1RFUyBDT0xMQVBTSUJMRSBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLXRlcm1zLXNlY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJltvcGVuXSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgLnRlcm1zLXN1bW1hcnkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXJtcy1zdW1tYXJ5LWljb24ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGVybXMtc3VtbWFyeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4udGVybXMtc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRleHQge1xuICAgIGZsZXg6IDE7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbn1cblxuXG4udGVybXMtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbn1cblxuLnRlcm1zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlMgKFN0aWNreSBGb290ZXIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4vLyBTcGxpdCBidXR0b24gZ3JvdXAgZm9yIHNhdmUgYWN0aW9uc1xuXG4uc2F2ZS1idXR0b24tZ3JvdXAge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcblxuICAgIC5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LWxnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTItNSkgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PQklMRSBMSU5FIElURU0gQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtdGFibGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW1zLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA+PSA3NjlweCkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC10b3RhbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuXG4gICAgLml0ZW0tdG90YWwtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgYmlsbGluZy1zbGlkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmJpbGxpbmctZm9ybS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIwKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgMDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWZvcm0tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1kZXRhaWxzLXNlY3Rpb24sXG4gICAgLmJpbGxpbmctaXRlbXMtc2VjdGlvbixcbiAgICAuYmlsbGluZy10b3RhbHMtY2FyZCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtZGlzcGxheSB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAuYmlsbGluZy1pZC1sYWJlbCxcbiAgICAgICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFQ1VSUklORyBJTlZPSUNFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWN1cnJpbmcgU2NoZWR1bGUgU2VjdGlvbiAob24gY3JlYXRlL2VkaXQgcGFnZSlcblxuLnJlY3VycmluZy1zY2hlZHVsZS1zZWN0aW9uIHtcbiAgICBtYXJnaW4tYmxvY2s6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICAuc2VjdGlvbi1oZWFkZXItaWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXByaW1hcnkpIDAlLCB2YXIoLS10YmxyLXByaW1hcnktZGFyaykgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlY3Rpb24taGVhZGVyLWNvbnRlbnQge1xuICAgICAgICAgICAgZmxleDogMTtcblxuICAgICAgICAgICAgLnNlY3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMSkgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnJlY3VycmluZy1zY2hlZHVsZS1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLy8gUmVjdXJyaW5nIE9wdGlvbnMgV3JhcHBlciAtIFN0eWxlIGZvcm0gZmllbGRzIHJlbmRlcmVkIGJ5IER5bmFtaWNGb3JtQnVpbGRlclxuXG4ucmVjdXJyaW5nLW9wdGlvbnMtd3JhcHBlciB7XG4gICAgLy8gVHlwZSBmaWVsZCAocmFkaW8gYnV0dG9ucykgLSBNYWtlIHRoZW0gdmlzdWFsIGNhcmRzXG5cbiAgICBbaWQkPSdfdHlwZSddLCBbaWQkPSdfZW5kVHlwZSddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tdGJsci1zcGFjZS0yKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwucmVxdWlyZWQ6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5mb3JtLWNoZWNrIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBbaWQkPSdfZW5kVHlwZSddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLy8gRGF5cyBmaWVsZCBmb3IgV2Vla2x5L1llYXJseSAoY2hlY2tib3hlcyBmb3IgZGF5cy9tb250aHMpIC0gTWFrZSB0aGVtIGJ1dHRvbiB0b2dnbGVzXG5cbiAgICBbaWQkPSdfZGF5cyddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDgwcHgsIDFmcikpO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tdGJsci1zcGFjZS0yKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDcwcHgsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRleHQgY29udGVudCBpcyB2aXNpYmxlXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlY3VycmluZy1mcmVxdWVuY3ktZGlzcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG5cbiAgICAucmVjdXJyaW5nLWZyZXF1ZW5jeS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LXRleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVmFyaWFibGUgSGVscCAtIENvbGxhcHNpYmxlIEluZm8gQm94XG5cbi5yZWN1cnJpbmctdmFyaWFibGVzLWhlbHAge1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItaW5mby1ib3JkZXItc3VidGxlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1pbmZvLWJnLXN1YnRsZSk7XG5cbiAgICAudmFyaWFibGVzLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWluZm8tdGV4dC1lbXBoYXNpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudmFyaWFibGVzLWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMXB4IHNvbGlkIHZhcigtLXRibHItaW5mby1ib3JkZXItc3VidGxlKTtcblxuICAgICAgICAudmFyaWFibGVzLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAudmFyaWFibGVzLWxpc3Qge1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTMpIDA7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICAgICAgICAgY29kZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnZhcmlhYmxlLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnZhcmlhYmxlLWV4YW1wbGUge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAzcHggc29saWQgdmFyKC0tdGJsci1pbmZvKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXhhbXBsZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltvcGVuXSAudmFyaWFibGVzLXN1bW1hcnkge1xuICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVDVVJSSU5HIElOVk9JQ0UgVklFVyBQQUdFIFNJREVCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSGlnaGxpZ2h0ZWQgY2FyZCAoZS5nLiwgUmVjdXJyaW5nIFNjaGVkdWxlIGNhcmQpXG5cbi5pbnZvaWNlLXNpZGViYXItY2FyZC1oaWdobGlnaHQge1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMDMpLCB0cmFuc3BhcmVudCk7XG59XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBHcmlkIChsYWJlbCB8IHZhbHVlIHBhaXJzKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vLyBVcGNvbWluZyBPY2N1cnJlbmNlcyBMaXN0XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ub2NjdXJyZW5jZS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIEdlbmVyYXRlZCBJbnZvaWNlcyBMaXN0XG5cbi5nZW5lcmF0ZWQtaW52b2ljZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG5cbiAgICAgICAgLmdlbmVyYXRlZC1pbnZvaWNlLW51bWJlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLW51bWJlciB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLXRvdGFsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4udmlldy1hbGwtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gUGF5bWVudCBQYWdlIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gcGF5bWVudCBwYWdlIHdpdGggdHdvLWNvbHVtbiBsYXlvdXQsXG4gKiBjYXJkLWJhc2VkIHBheW1lbnQgbWV0aG9kIHNlbGVjdGlvbiwgYW5kIGludm9pY2Ugc3VtbWFyeS5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KSAwO1xufVxuXG4ucGF5bWVudC1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbn1cblxuLnBheW1lbnQtaGVhZGVyLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLnBheW1lbnQtaGVhZGVyLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXRibHItc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRXTy1DT0xVTU4gTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWxheW91dCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFIFNVTU1BUlkgQ0FSRCAoTGVmdCBDb2x1bW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWludm9pY2Utc3VtbWFyeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgIH1cbn1cblxuLmludm9pY2Utc3VtbWFyeS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItaW5mby1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1pbmZvLXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWluZm8pO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KTtcbn1cblxuLy8gU3VtbWFyeSBTZWN0aW9uc1xuXG4uc3VtbWFyeS1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LXNlY3Rpb24tbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uc3VtbWFyeS1jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuY2xpZW50LW5hbWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMS01KSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VjY2Vzcy1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbn1cblxuLy8gSW52b2ljZSBEZXRhaWxzIEdyaWRcblxuLmludm9pY2UtZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG59XG5cbi5kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBMaW5lIEl0ZW1zIFByZXZpZXdcblxuLmxpbmUtaXRlbXMtcHJldmlldyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLmxpbmUtaXRlbS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xufVxuXG4ubGluZS1pdGVtLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogNjAlO1xufVxuXG4ubGluZS1pdGVtLWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gU3VtbWFyeSBUb3RhbHNcblxuLnN1bW1hcnktdG90YWxzIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpIDA7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIEEgZGlzY291bnQgaXMgYSBkZWR1Y3Rpb24sIG5vdCBhbiBlcnJvci4gU3RheSBuZXV0cmFsLlxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctZGlzY291bnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG59XG5cbi8vIFBheW1lbnRzIGFscmVhZHkgcmVjZWl2ZWQgYXJlIHBvc2l0aXZlIG1vbmV5IGluLlxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctcGF5bWVudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWJhbGFuY2Uge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgYW1vdW50LXRvLXBheSBpcyBpbmZvcm1hdGlvbmFsOyBncmVlbiB3b3VsZCBpbXBseSBcIlBhaWRcIiwgd2hpY2ggaXRcbiAgICAvLyBpc24ndCB5ZXQuIFRoZSBcIkJhbGFuY2UgcmVtYWluaW5nXCIgY2FsbG91dCBuZXh0IHRvIHRoZSBhbW91bnQgZmllbGRcbiAgICAvLyBhbHJlYWR5IGNhcnJpZXMgdGhlIGF0dGVudGlvbi5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIENBUkQgKFJpZ2h0IENvbHVtbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZm9ybS1zZWN0aW9uIHtcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgIH1cbn1cblxuLnBheW1lbnQtZm9ybS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBheW1lbnQtZm9ybS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItc3VjY2Vzcy1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xufVxuXG4ucGF5bWVudC1mb3JtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KTtcbn1cblxuLnBheW1lbnQtZm9ybS1mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIEJPRFkgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgLy8gU3R5bGUgZm9ybSBsYWJlbHNcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMik7XG5cbiAgICAgICAgJi5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyAqJztcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3JtIGhlbHAgdGV4dFxuXG4gICAgLmZvcm0tdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIEZpeCBmb3IgbW9uZXkgdHlwZSBpbnB1dCBncm91cHNcblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cblxuICAgIC8vIFRleHRhcmVhIHN0eWxpbmdcblxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHByb3BlciBzcGFjaW5nIGJldHdlZW4gZm9ybSBncm91cHNcblxuICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIE1FVEhPRFMgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpoYXMoLnBheW1lbnQtbWV0aG9kLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhhcygucGF5bWVudC1tZXRob2QtaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59XG5cbi5wYXltZW50LW1ldGhvZC1wcmVmZXJyZWQge1xuICAgIG9yZGVyOiAtMTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWlucHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3BhY2l0eTogMDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0yMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2Utb25saW5lIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWluZm8tbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2UtY3JlZGl0IHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTU9VTlQgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuZm9ybS1sYWJlbCxcbiAgICAuZm9ybS1zZWN0aW9uLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5hbW91bnQtYmFsYW5jZS1oaW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTEpIHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXNtKTtcblxuICAgIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBUFRVUkUgT05MSU5FIEZJRUxEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jYXB0dXJlLW9ubGluZS1maWVsZCB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWhlbHAge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDIuNXJlbSArIHZhcigtLXRibHItc3BhY2UtMikpO1xuICAgIH1cbn1cblxuLy8gSGlkZSBjYXB0dXJlIG9ubGluZSBzZWN0aW9uIHdoZW4gb2ZmbGluZSBtZXRob2Qgc2VsZWN0ZWRcblxuW2RhdGEtcGF5bWVudC1tZXRob2Qtc2VsZWN0LXRhcmdldD1cImNhcHR1cmVPbmxpbmVcIl0uZC1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUNLQUJMRSBMSU5LUyAoQ2xpZW50ICYgSW52b2ljZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1uYW1lLWxpbmssXG4uaW52b2ljZS1pZC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbGllbnQtbmFtZS1saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG59XG5cbi5pbnZvaWNlLWlkLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8sIG1vbm9zcGFjZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgSElTVE9SWSBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWhpc3RvcnktY2FyZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItd2FybmluZy1saWdodCwgI2ZlZjNjNykgMCUsIHJnYigyNDUgMTU4IDExIC8gMjAlKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItd2FybmluZywgI2Y1OWUwYik7XG59XG5cbi5wYXltZW50LWhpc3RvcnktdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LWhpc3RvcnktY291bnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG59XG5cbi5wYXltZW50LWhpc3RvcnktYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIENBUkRTIChNYXRjaGluZyBQUiAjMjIxNSBzdHlsZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS10YmxyLWdyYXktMzAwKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHRlciwgcmdiKDE2IDE4NSAxMjkgLyA1JSkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWZhaWxlZCB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXRibHItZGFuZ2VyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyLCByZ2IoMjM5IDY4IDY4IC8gNSUpKTtcbn1cblxuLnBheW1lbnQtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLnBheW1lbnQtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LWNhcmQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWSBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1wYXkge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAucGF5bWVudC1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTE2KTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIDA7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtaGVhZGVyLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlci10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5wYXltZW50LW1ldGhvZHMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5pbnZvaWNlLWRldGFpbHMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5wYXltZW50LWZvcm0tZm9vdGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFBheW1lbnRzIExpc3QgUGFnZSBTdHlsZXNcbiAqXG4gKiBNaW5pbWFsIHN0eWxpbmcgZm9yIHRoZSBwYXltZW50cyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMuXG4gKiBNb3N0IHN0eWxlcyBjb21lIGZyb20gVGFibGVyL0Jvb3RzdHJhcCAtIHRoaXMgZmlsZSBvbmx5IGFkZHMgc3BlY2lmaWMgY3VzdG9taXphdGlvbnMuXG4gKi9cblxuLy8gS1BJIFN0YXRpc3RpY3MgQ2FyZHMgLSBzdWJ0bGUgaG92ZXIgZWZmZWN0XG5cbi5yb3ctZGVjayAuY2FyZC1zbSB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFVzZXJzIFBhZ2UgU3R5bGVzXG4gKlxuICogTW9kZXJuIHVzZXJzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcyBhbmQgdGFiYmVkIGludGVyZmFjZS5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVU0VSUyBQQUdFIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udXNlcnMtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gS1BJIFNUQVRTIENBUkRTIChUb3Agb2YgUGFnZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXNlcyBzdGFuZGFyZCBCb290c3RyYXAgY2FyZC1zbSBzdHlsaW5nIGZyb20gcmVjZW50IHJlZGVzaWduc1xuLy8gTm8gY3VzdG9tIHN0eWxlcyBuZWVkZWQgLSBCb290c3RyYXAvVGFibGVyIGhhbmRsZXMgdGhpc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUJTIElOIENBUkQgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFVzZXMgc3RhbmRhcmQgbmF2LXRhYnMgY2FyZC1oZWFkZXItdGFicyBwYXR0ZXJuXG4vLyBDdXN0b20gdGFiIHN0eWxlcyBhcmUgaW4gX3RhYnMuc2NzcyBjb21wb25lbnRcbi8vIE5vIGFkZGl0aW9uYWwgY3VzdG9tIHN0eWxlcyBuZWVkZWRcblxuLy8gRW1wdHkgc3RhdGUgdXNlcyBUYWJsZXIncyBidWlsdC1pbiAuZW1wdHkgY29tcG9uZW50IGNsYXNzZXNcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gUHJvZmlsZSBQYWdlIFN0eWxlc1xuICpcbiAqIFN0eWxlcyBmb3IgdGhlIHVzZXIgcHJvZmlsZSB2aWV3IGFuZCBzaWRlYmFyIG5hdmlnYXRpb24uXG4gKiBGb3JtIHBhZ2VzIChlZGl0LCBjaGFuZ2UtcGFzc3dvcmQpIHVzZSBzaGFyZWQgY2xhc3NlcyBmcm9tIF9mb3JtLXBhZ2Uuc2Nzcy5cbiAqIEluY2x1ZGVzOiBzaWRlYmFyIG5hdmlnYXRpb24sIHByb2ZpbGUgdmlldywgc2VjdXJpdHkgc3RhdHVzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNJREVCQVIgTkFWSUdBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tdGJsci1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkxLjk4cHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5wcm9maWxlLW5hdi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG59XG5cbi5wcm9maWxlLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ucHJvZmlsZS1uYXYtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtbmF2LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBjb2xvcjogY3VycmVudGNvbG9yO1xufVxuXG4ucHJvZmlsZS1uYXYtdGV4dCB7XG4gICAgZmxleDogMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJPRklMRSBWSUVXIC0gSEVBREVSIFdJVEggQVZBVEFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXNtKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtYXZhdGFyIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ib2xkKTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLnByb2ZpbGUtaGVhZGVyLWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi5wcm9maWxlLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wcm9maWxlLWVtYWlsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXRibHItc3BhY2UtMSkgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBJTkZPUk1BVElPTiBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi10aXRsZSB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBERVRBSUwgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1kZXRhaWwtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS01KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5kZXRhaWwtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1pdGVtLXdpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi5kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIFNFQ1VSSVRZIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdXJpdHktc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xufVxuXG4uc2VjdXJpdHktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4uc2VjdXJpdHktaXRlbS1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5zZWN1cml0eS1pdGVtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWljb24td2FybmluZyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS10YmxyLXdhcm5pbmctcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci13YXJuaW5nKTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tY29udGVudCB7XG4gICAgZmxleDogMTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMC01KTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5zZWN1cml0eS1pdGVtLWFjdGlvbiB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdPT0dMRSBTSUdOLUlOIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZ29vZ2xlLXNpZ25pbi1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItZGFyayk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpO1xuICAgIH1cblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFTU1dPUkQgUkVRVUlSRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXNzd29yZC1yZXF1aXJlbWVudHMge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdGJsci1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tdGJsci1pbmZvLXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS02KTtcbn1cblxuLnBhc3N3b3JkLXJlcXVpcmVtZW50cy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItaW5mby1yZ2IpLCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5wYXNzd29yZC1yZXF1aXJlbWVudHMtbGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcblxuICAgIGxpIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMSkgMCB2YXIoLS10YmxyLXNwYWNlLTEpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJ+Kckyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUYWJsZXQgYWRqdXN0bWVudHNcbkBtZWRpYSAod2lkdGggPj0gNzY4cHgpIGFuZCAod2lkdGggPD0gOTkxLjk4cHgpIHtcblxuICAgIC5wcm9maWxlLXNpZGViYXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgIC8vIFByb2ZpbGUgc2VjdGlvbiBmb290ZXIgYnV0dG9uc1xuXG4gICAgLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAucHJvZmlsZS1zZWN0aW9uLWZvb3RlcixcbiAgICAucHJvZmlsZS1zaWRlYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUExBVEZPUk0gUFJPRklMRSBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRoZSBwbGF0Zm9ybSdzIHByb2ZpbGUgcGFnZXMgcmVuZGVyIHBsYWluIFRhYmxlciBjYXJkczsgdGludCB0aGVpciBoZWFkZXJzIHRvIG1hdGNoIHRoZVxuLy8gc2VjdGlvbiBoZWFkZXJzIHRoZSBhcHAncyBvd24gcGFnZXMgaGFkLlxuLnN3cC1wcm9maWxlIC5jYXJkLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvbiBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4gMkZBIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2luIHBhZ2VzIHdpdGggZWxlZ2FudCBkZXNpZ24uXG4gKiBNYXRjaGVzIHRoZSBwcm9maWxlIHBhZ2UgcGF0dGVybnMgYW5kIFRhYmxlciBkZXNpZ24gc3lzdGVtLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQVRJT04gUEFHRSAtIDJGQSBTRVRUSU5HUyBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udHdvLWZhY3Rvci1zZXR0aW5ncyB7XG5cbiAgICAuZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLy8gU2VjdGlvbiBDb250ZW50IExheW91dFxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnR3by1mYWN0b3Itc2VjdGlvbi1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UUCBTRVRVUCBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udG90cC1zZXR1cC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgMDtcbn1cblxuLnNldHVwLXN0ZXBzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgfVxufVxuXG4uc2V0dXAtc3RlcHMgLnN0ZXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRjb2xvcjtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSAuc3RlcC1udW1iZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLnFyLWNvZGUtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxufVxuXG4ucXItY29kZS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xufVxuXG4ubWFudWFsLWVudHJ5LWRldGFpbHMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIHN1bW1hcnkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vIFZlcmlmaWNhdGlvbiBGb3JtXG5cbi52ZXJpZmljYXRpb24tZm9ybS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgMDtcbn1cblxuLnZlcmlmaWNhdGlvbi1jb2RlLWlucHV0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgIWltcG9ydGFudDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM2VtO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQkFDS1VQIENPREVTIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iYWNrdXAtY29kZXMtbW9kYWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSAwO1xufVxuXG4uYmFja3VwLWNvZGVzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi5iYWNrdXAtY29kZS1pdGVtIHtcblxuICAgIGNvZGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1tb25vKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9HSU4gUEFHRVMgLSAyRkEgVkVSSUZJQ0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50d28tZmFjdG9yLWxvZ2luLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi50d28tZmFjdG9yLWxvZ2luLWNhcmQge1xuXG4gICAgLmNhcmQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiKDAgMCAwIC8gOCUpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5jYXJkLXN0YXR1cy10b3Age1xuICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS04KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNikgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQXZhdGFyIEljb25cblxuLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICB3aWR0aDogNzJweDtcbiAgICBoZWlnaHQ6IDcycHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgJi50d28tZmFjdG9yLWF2YXRhci1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4yKSAwJSwgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4yKTtcbiAgICB9XG59XG5cbi8vIExvZ2luIEhlYWRpbmdcblxuLnR3by1mYWN0b3ItbG9naW4tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnR3by1mYWN0b3ItbG9naW4tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBWZXJpZmljYXRpb24gQ29kZSBJbnB1dCAoZm9yIGxvZ2luIHBhZ2VzKVxuXG4udHdvLWZhY3Rvci1jb2RlLWlucHV0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTMpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyBGb3JtIEhpbnRcblxuLnR3by1mYWN0b3ItZm9ybS1oaW50IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRydXN0IERldmljZSBPcHRpb25cblxuLnRydXN0LWRldmljZS1vcHRpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS10YmxyLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS10YmxyLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgbWFyZ2luOiB2YXIoLS10YmxyLXNwYWNlLTQpIDA7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMTVlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBNZXRob2RzIFNlY3Rpb25cblxuLmFsdGVybmF0aXZlLW1ldGhvZHMge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYWx0ZXJuYXRpdmUtbWV0aG9kcy10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbn1cblxuLy8gU2VjdXJpdHkgTm90aWNlXG5cbi50d28tZmFjdG9yLXNlY3VyaXR5LW5vdGljZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi8vIEVtYWlsIFJlc2VuZCBTZWN0aW9uXG5cbi5lbWFpbC1yZXNlbmQtc2VjdGlvbiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItaW5mby1yZ2IpLCAwLjA1KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS10YmxyLWluZm8tcmdiKSwgMC4yKTtcblxuICAgIC5yZXNlbmQtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5yZXNlbmQtbGluayB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmV4cGlyeS13YXJuaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci13YXJuaW5nKTtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgMDtcbiAgICB9XG5cbiAgICAuc2V0dXAtc3RlcHMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIH1cblxuICAgIC52ZXJpZmljYXRpb24tZm9ybS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIDA7XG4gICAgfVxuXG4gICAgLmJhY2t1cC1jb2Rlcy1ncmlkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFkgSU1QUk9WRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZvY3VzIHZpc2libGUgc3R5bGVzXG5cbi5iYWNrdXAtY29kZS1pdGVtIGNvZGU6Zm9jdXMtdmlzaWJsZSxcbi5tYW51YWwtZW50cnktZGV0YWlscyBzdW1tYXJ5OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8vIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0XG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuXG4gICAgLmJhY2t1cC1jb2RlLWl0ZW0gY29kZSB7XG4gICAgICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIH1cbn1cblxuLy8gUmVkdWNlZCBtb3Rpb24gc3VwcG9ydFxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5iYWNrdXAtY29kZS1pdGVtIGNvZGUsXG4gICAgLnNldHVwLXN0ZXBzIC5zdGVwLFxuICAgIC5tYW51YWwtZW50cnktZGV0YWlscyBzdW1tYXJ5LFxuICAgIC50d28tZmFjdG9yLWNvZGUtaW5wdXQge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gTm90aWZpY2F0aW9ucyBQYWdlIFN0eWxlc1xuICpcbiAqIE5vdGlmaWNhdGlvbiBwcmVmZXJlbmNlcyBwYWdlIHdpdGggY2FyZC1iYXNlZCBsYXlvdXQgYW5kIGNhdGVnb3J5IGdyb3VwaW5nLlxuICogUGFnZSBjb250YWluZXIvaGVhZGVyL2Zvb3RlciB1c2Ugc2hhcmVkIGZvcm0tcGFnZS0qIGNsYXNzZXMgZnJvbSBfZm9ybS1wYWdlLnNjc3MuXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgb25seSBub3RpZmljYXRpb24tc3BlY2lmaWMgc3R5bGVzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOVEVHUkFUSU9OIE1BTkFHRU1FTlQgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMTUpIDAlLCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tdGJsci1zcGFjZS01KSB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5pbnRlZ3JhdGlvbi1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMS01KTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gR1JPVVBTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyAvLyBTaW5nbGUgY29sdW1uIG9uIG1vYmlsZVxuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xufVxuXG4ubm90aWZpY2F0aW9uLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uZ3JvdXAtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk9USUZJQ0FUSU9OIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tY2FyZHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyLWRhcmspO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwOyAvLyBBbGxvd3MgdGV4dCB0cnVuY2F0aW9uXG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMDgpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWluZm8ge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMC01KTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQU5ORUwgQ0hFQ0tCT1hFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEJvb3RzdHJhcCBmb3JtLWNoZWNrIGludGVncmF0aW9uIC0gY29tcGFjdCBpbmxpbmUgc3R5bGVcblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgLy8gSGlkZSBjaGVja2JveCB2aXN1YWxseSBidXQga2VlcCBpdCBhY2Nlc3NpYmxlIGZvciBmb3JtIHN1Ym1pc3Npb25cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZm9jdXMgcmluZyB0byBsYWJlbCB3aGVuIGNoZWNrYm94IGlzIGZvY3VzZWRcblxuICAgICAgICAgICAgJjpmb2N1cyArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0xLTUpIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0OmNoZWNrZWQgKyAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1vYmlsZSAoPCA3NjhweClcbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIC5ncm91cC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTItNSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQtY2hhbm5lbHMge1xuXG4gICAgICAgIC5ub3RpZmljYXRpb24tY2hhbm5lbHMtbGlzdCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEtNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjayAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMi01KSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb25zLWVtcHR5LXN0YXRlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS04KSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuXG4gICAgICAgIC5lbXB0eS1zdGF0ZS1pY29uIHtcbiAgICAgICAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA2NHB4O1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGFibGV0IGFuZCBEZXNrdG9wICg+IDc2OHB4KSAtIDIgY29sdW1uIGxheW91dCBmb3IgY2F0ZWdvcmllc1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OUyAtIERpc2FibGVkIGZvciBjbGVhbmVyLCBmYXN0ZXIgcmVuZGVyaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEFuaW1hdGlvbnMgcmVtb3ZlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjbGVhbmVyIGZlZWxcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU3Vic2NyaXB0aW9uIFBhZ2VzIFN0eWxlc1xuICpcbiAqIEJpbGxpbmcsIHBsYW4tcGlja2VyLCBhbmQgc3Vic2NyaXB0aW9uLXN0YXRlIHBhZ2VzIChwcmljaW5nLCBvdmVydmlldyxcbiAqIGNoYW5nZSwgY2FuY2VsbGVkLCBwYXVzZWQsIHBlbmRpbmcsIHRyaWFsIGV4cGlyZWQpLlxuICpcbiAqIEFsbCB2YWx1ZXMgYXJlIGAtLXRibHItKmAgZGVzaWduIHRva2Vucy4gU3RhdGUgaXMgY2FycmllZCBieSBhIHNvZnQgaWNvblxuICogbWVkYWxsaW9uICsgaGVhZGluZywgbmV2ZXIgYnkgYSBkZWNvcmF0aXZlIGFjY2VudCBzdHJpcGUsIGEgY29sb3JlZCBnbG93LCBvclxuICogYSBsb29waW5nIGFuaW1hdGlvbi4gQ29sb3VyIHN0YXlzIG9uIHRoZSBicmFuZDogVHJ1c3QgR3JlZW4gaXMgdGhlIG9ubHlcbiAqIGFjY2VudDsgdGhlcmUgaXMgbm8gVGFibGVyIGJsdWUgYW5kIG5vIGFtYmVyLWJ5LWFjY2lkZW50IGhlcmUuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQkFTRSBQQUdFIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS10YmxyLXNwYWNlLTI0KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMTIpIHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDY0MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTEwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3cteGwpO1xuICAgIGFuaW1hdGlvbjogc3Vic2NyaXB0aW9uLWZhZGUtaW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBzdWJzY3JpcHRpb24tZmFkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVBREVSIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFnZSBoZWFkZXIgKGFib3ZlIHN1YnNjcmlwdGlvbiBjb250YWluZXIpXG5cbi5zdWJzY3JpcHRpb24tcGFnZS1oZWFkZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG5cbiAgICAuaDQge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gU29mdCBtZWRhbGxpb24sIGZsYXQgdGludCArIHRpbnRlZCBnbHlwaCAodGhlIHNhbWUgbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZFxuLy8gZW1wdHkgc3RhdGVzIGFuZCBvbmJvYXJkaW5nIHdpemFyZCB1c2UpLiBObyBncmFkaWVudCBkaXNjLlxuXG4uc3Vic2NyaXB0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMteGwpO1xuICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXRibHItc3BhY2UtOCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgIH1cbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItd2FybmluZy1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItd2FybmluZyk7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1kYW5nZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24taW5mbyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1pbmZvLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLXBhdXNlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uc3Vic2NyaXB0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS10YmxyLXNwYWNlLTEwKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCRU5FRklUUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy14cyk7XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LW1kKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yLTUpIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ2FuY2VsbGVkIHBhZ2U6IGxvY2tlZCBmZWF0dXJlcyBhcmUgbXV0ZWQsIG5vdCBhbGFybWVkIGluIHJlZC4gTG9zaW5nIGFjY2Vzc1xuLy8gdG8gYSBmZWF0dXJlIHlvdSBjaG9zZSB0byBjYW5jZWwgaXMgaW5mb3JtYXRpb24sIG5vdCBhbiBlcnJvci5cblxuLnN1YnNjcmlwdGlvbi1jYW5jZWxsZWQtcGFnZSAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTlMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcblxuICAgIC5idG4tbGcge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMtNSkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctbWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1tZCksIHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4tZ2hvc3Qge1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFURS1TUEVDSUZJQyBQQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiBtZWRhbGxpb24gKyBoZWFkaW5nICsgY29weS4gVGhlIHByZXZpb3VzIDRweFxuLy8gdG9wIGFjY2VudCBzdHJpcGVzIG9uIGAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lcmAgd2VyZSB0aGUgYWNjZW50LXN0cmlwZVxuLy8gYW50aS1wYXR0ZXJuICh0aGUgXCI+MXB4IGNvbG91cmVkIGJvcmRlclwiIHJ1bGUpIHJvdGF0ZWQgdG8gdGhlIHRvcCBlZGdlLCBhbmRcbi8vIHRoZSByZWQgZGFuZ2VyIGZyYW1pbmcgb24gdGhlIGNhbmNlbGxlZCBwYWdlIHNjb2xkZWQgYSB1c2VyIGZvciBhIGNob2ljZVxuLy8gdGhleSBtYWRlOyBib3RoIGFyZSBnb25lLlxuXG4uc3Vic2NyaXB0aW9uLXBhdXNlZC1wYWdlIHtcbiAgICAvLyBQYXVzZWQgYmVuZWZpdHMgYXJlIG5laXRoZXIgYWNoaWV2ZW1lbnRzIChncmVlbikgbm9yIGxvc3NlcyAocmVkKSAtIHRoZXlcbiAgICAvLyBhcmUgc2ltcGx5IG9uIGhvbGQuXG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFMRVJUIEJBTk5FUiAoVG9wIG9mIHBhZ2UgaW5qZWN0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWxlcnQtYmFubmVyIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgICBib3JkZXItdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuXG4gICAgLmQtZmxleCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC8vIFdhcm5pbmcgYmFubmVyICh0cmlhbClcblxuICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItd2FybmluZy1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGJsci13YXJuaW5nLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci13YXJuaW5nKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItd2FybmluZy1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYW5nZXIgYmFubmVyIChjYW5jZWxsZWQpXG5cbiAgICAmLmFsZXJ0LWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItaG92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklDSU5HIFBBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wcmljaW5nLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSksXG4gICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAvLyBIb3ZlciBsaWZ0cyBieSBzaGFkb3cgb25seSAobm8gdHJhbnNmb3JtKSwgcGVyIHRoZSBkZXNpZ24gc3lzdGVtJ3MgY2FyZFxuICAgIC8vIHJ1bGVzLlxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAvLyBSZXNlcnZlIHRoZSBiYW5uZXIncyBoZWlnaHQgb24gZXZlcnkgcGFpZCBjYXJkIHNvIHRoZSBwcmljZSBiYXNlbGluZSBpc1xuICAgIC8vIHRoZSBzYW1lIHdoZXRoZXIgb3Igbm90IHRoZSBjYXJkIGNhcnJpZXMgYSBiYW5uZXIgKHRoZSBiYW5uZXIgaXRzZWxmIGlzXG4gICAgLy8gdGFrZW4gb3V0IG9mIGZsb3cgYmVsb3cpLlxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtOSk7XG4gICAgfVxufVxuXG4ucGxhbi1jYXJkLXJlY29tbWVuZGVkIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1tZCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3cteGwpO1xuICAgIH1cbn1cblxuLy8gUmliYm9uIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBjYXJkLiBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgc28gaXQgbmV2ZXIgcHVzaGVzXG4vLyB0aGUgcHJpY2UgZG93biAodGhlIGNhcmQgYm9keSByZXNlcnZlcyBtYXRjaGluZyB0b3AgcGFkZGluZyBhYm92ZSksIGFuZCBpblxuLy8gVHJ1c3QgR3JlZW4gLSBub3QgdGhlIFRhYmxlci1ibHVlIGl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvLlxuXG4ucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBpbnNldC1pbmxpbmU6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1pbnZlcnNlKTtcbiAgICAvLyBSZWNvbW1lbmRlZCBiYW5uZXI6IHdoaXRlIHRleHQgb24gLS10YmxyLXByaW1hcnkgaXMgMy43OToxIGF0IDEycHguXG4gICAgLy8gLS10YmxyLXByaW1hcnktZGFyayBpcyA2LjQ5OjEuXG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBDdXJyZW50IHBsYW46IHRoZSBkYXJrZXIgZW1lcmFsZCBzdGVwLCBiZWNhdXNlIHdoaXRlIG9uIC0tc3dwLXN1Y2Nlc3MgaXNcbi8vIDIuNTQ6MSBhbmQgdGhpcyBpcyAxMnB4IHRleHQuIC0tc3dwLXN1Y2Nlc3MtZGFyayBpcyA1LjQ4OjEuXG5cbi5wbGFuLWNhcmQtY3VycmVudCAucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWRhcmspO1xufVxuXG4vLyBGcmVlIHBsYW46IHByZXNlbnRlZCBhcyBhIHNsaW0gc2Vjb25kYXJ5IGNhcmQgYmVsb3cgdGhlIG1haW4gZ3JpZC5cblxuLnBsYW4tY2FyZC1mcmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAucGxhbi1jYXJkLWZlYXR1cmVzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wbGFuLWNhcmQtZnJlZS1oZWFkZXIge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLnBsYW4tY2FyZC1mcmVlLWN0YSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8vIElubGluZSBmZWF0dXJlIGxpc3QgZmxvd3MgaG9yaXpvbnRhbGx5IGFuZCB3cmFwczsga2VlcHMgdGhlIGZyZWUgc3RyaXAgc2xpbS5cblxuLnBsYW4tY2FyZC1mZWF0dXJlcy1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcblxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8vIFRoZSBkaXNwbGF5IHByaWNlIHJlbmRlcnMgdGhyb3VnaCB0aGUgYC5tb25leWAgY29tcG9uZW50IChgbW9uZXktLXRvdGFsYCksXG4vLyB3aGljaCBpbmhlcml0cyBpdHMgc2l6ZSBmcm9tIGhlcmU7IHRoZSBpbnRlcnZhbCBzaXRzIHF1aWV0bHkgYmVzaWRlIGl0LlxuXG4ucGxhbi1jYXJkLXByaWNlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC00eGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5wbGFuLWNhcmQtaW50ZXJ2YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbm9ybWFsKTtcbn1cblxuLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XG59XG5cbi8vIEEgY291cG9uIC8gcHJvbW8gY2FyZCAodHJpYWwtZXhwaXJlZCBwYWdlKS4gVG9rZW5pc2VkIGdyZWVuLXRpbnQgcGFuZWwsXG4vLyByZXBsYWNpbmcgdGhlIG9mZi1zeXN0ZW0gVGFibGVyIGBhenVyZWAgdXRpbGl0aWVzLlxuXG4uc3Vic2NyaXB0aW9uLWNvdXBvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuXG4gICAgLy8gVGhlIGNvdXBvbiBjb2RlIGl0c2VsZiwgaW4gc29saWQgVHJ1c3QgR3JlZW4gc28gaXQgcmVhZHMgYXMgdGhlIG9uZSB0aGluZ1xuICAgIC8vIHRvIGNvcHkuIFdpdGhvdXQgdGhpcyBhIGJhcmUgYC5iYWRnZWAgZmFsbHMgYmFjayB0byB0aGUgdGhlbWUncyBhbWJlci5cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtaW52ZXJzZSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBXRUxDT01FIC8gQUNUSVZBVElPTiBQQUdFIChjYXJkLXJlcXVpcmVkIG9uYm9hcmRpbmcpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPbmUgcGxhbiwgb25lIGNhbGwgdG8gYWN0aW9uLiBUaGUgcGFnZSByZWFzc3VyZXMgcmF0aGVyIHRoYW4gc2VsbHM6IHRoZVxuLy8gcGxhbiBpcyBhIGNhbG0gc3VtbWFyeSwgbm90IGEgcGljay1tZSBjYXJkLCBhbmQgdGhlIHRocmVlIGd1YXJhbnRlZXMgYmVsb3cgaXRcbi8vIGV4aXN0IHRvIG1lbHQgdGhlIGhlc2l0YXRpb24gb2YgZW50ZXJpbmcgYSBjYXJkIGJlZm9yZSB0aGUgdHJpYWwgc3RhcnRzLlxuXG4uc3Vic2NyaXB0aW9uLXdlbGNvbWUtcGFnZSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgfVxufVxuXG4ud2VsY29tZS1wbGFuIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LXhzKTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC8vIFRoZSBwbGFuJ3Mgb3duIGZlYXR1cmUgbGlzdCBpcyByZXVzZWQgZnJvbSB0aGUgcGlja2VyOyBoZXJlIGl0IHNpdHMgaW5zaWRlXG4gICAgLy8gYSBzdW1tYXJ5IGNhcmQsIHNvIGRyb3AgdGhlIHBpY2tlcidzIGJvdHRvbSBtYXJnaW4uXG5cbiAgICAucGxhbi1jYXJkLWZlYXR1cmVzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi53ZWxjb21lLXBsYW4tcHJpY2luZyB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLndlbGNvbWUtcGxhbi1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi8vIFRocmVlIHF1aWV0IHJlYXNzdXJhbmNlczsgdGhlIEJvb3RzdHJhcCBncmlkIHN0YWNrcyB0aGVtIG9uIG1vYmlsZS5cblxuLndlbGNvbWUtcmVhc3N1cmUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMi01KTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0wLTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1ncm91cCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXN1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbWQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYWN0aW9ucyB7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbGVydC1iYW5uZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGFibGV0IGFkanVzdG1lbnRzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSBhbmQgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtOCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZWQgbW90aW9uOiBkcm9wIHRoZSBjb250YWluZXIgcmV2ZWFsIGFuZCB0aGUgaG92ZXIgc2hhZG93IHRyYW5zaXRpb25zLlxuLy8gVGhlcmUgaXMgbm8gbG9vcGluZy9wdWxzaW5nIGFuaW1hdGlvbiBsZWZ0IGluIHRoaXMgZmlsZSB0byBndWFyZC5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAucGxhbi1jYXJkLFxuICAgIC5wbGFuLWNhcmQtZnJlZSxcbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMgLmJ0bi1sZyB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuYWxlcnQtYmFubmVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIHdpZGdldFxuICpcbiAqIFRoZSBmaXJzdCBjb21wb25lbnQgYSBuZXcgdXNlciBtZWV0cy4gUHJpb3JpdGllcywgaW4gb3JkZXI6XG4gKiAgIDEuIENvbnZleSBzdGF0ZSAodG9kbyAvIGRvbmUgLyBob3ZlcmVkIC8gZm9jdXNlZCkuIE5ldmVyIGRlY29yYXRpb24uXG4gKiAgIDIuIFN0YXkgb24gdGhlIFNvbGlkSW52b2ljZSBkZXNpZ24gc3lzdGVtIC0gYC0tdGJsci0qYCB0b2tlbnMgb25seS5cbiAqICAgMy4gUmVhZCBjb3JyZWN0bHkgd2hldGhlciBhIHJvdyBpcyBhbiA8YT4gKGFjdGlvbmFibGUpIG9yIGEgPHNwYW4+IChkb25lKS5cbiAqXG4gKiBTdHJ1Y3R1cmUgY29tZXMgZnJvbSBUYWJsZXIgKGBjYXJkYCwgYGNhcmQtc3RhbXBgLCBgY2FyZC1saW5rLXBvcGAsXG4gKiBgb2ZmY2FudmFzYCwgYHZpc3VhbGx5LWhpZGRlbmApLiBUaGlzIGZpbGUgb25seSBhZGRzIHdoYXQgVGFibGVyIGRvZXMgbm90XG4gKiBhbHJlYWR5IHByb3ZpZGUgLSBpdCBkb2VzIG5vdCByZXN0YXRlIG9yIGZpZ2h0IGl0LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNVQ0NFU1MgQ0FSRCAtIGFsbCBzdGVwcyBjb21wbGV0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBNYXRjaGVzIGA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWFjdGl2ZVwiPmAuIE5vdCBpbnRlcmFjdGl2ZSAoaXRzIG9ubHkgY29udHJvbFxuLy8gaXMgdGhlIGRpc21pc3MgYnV0dG9uIGluc2lkZSksIHNvIGl0IGdldHMgbm8gaG92ZXIgc3RhdGUgLSBhIGxpZnQgaGVyZSB3b3VsZFxuLy8gYmUgYSBmYWxzZSBhZmZvcmRhbmNlLiBBIGZsYXQgc3VjY2VzcyB0aW50IHBsdXMgYSBmdWxsIDFweCBib3JkZXIgY2Fycmllc1xuLy8gdGhlIHN0YXRlOyB0aGUgY2FyZCBrZWVwcyBUYWJsZXIncyByZXN0aW5nIGBzaGFkb3ctc21gLlxuXG4uY2FyZC5jYXJkLWFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VjY2Vzcy1saWdodGVyKTtcbn1cblxuLy8gRGVjb3JhdGl2ZSB3YXRlcm1hcmsgYmVoaW5kIHRoZSBjYXJkIHRpdGxlIChUYWJsZXIgYC5jYXJkLXN0YW1wYCkuXG5cbi5jYXJkLXN0YW1wLWljb24ge1xuICAgIG9wYWNpdHk6IDAuMTU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIRUNLTElTVCBJVEVNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2hlY2tsaXN0LWl0ZW1zLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMi01KTtcbn1cblxuLy8gUmVuZGVycyBhcyA8YT4gd2hpbGUgaW5jb21wbGV0ZSBhbmQgPHNwYW4+IG9uY2UgY29tcGxldGUsIHNvIGV2ZXJ5XG4vLyBpbnRlcmFjdGl2ZSBzdHlsZSBpcyBnYXRlZCBiZWhpbmQgYDpub3QoLmNvbXBsZXRlZClgLlxuXG4uY2hlY2tsaXN0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBjb2xvciB2YXIoLS10YmxyLWR1cmF0aW9uLWZhc3QpIHZhcigtLXRibHItZWFzZS1vdXQpLFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRibHItZHVyYXRpb24tZmFzdCkgdmFyKC0tdGJsci1lYXNlLW91dCksXG4gICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS10YmxyLWR1cmF0aW9uLWZhc3QpIHZhcigtLXRibHItZWFzZS1vdXQpLFxuICAgICAgICBib3gtc2hhZG93IHZhcigtLXRibHItZHVyYXRpb24tZmFzdCkgdmFyKC0tdGJsci1lYXNlLW91dCk7XG5cbiAgICAvLyBIb3ZlciBhbmQgZm9jdXMgcmVzb2x2ZSB0byB0aGUgc2FtZSBzdXJmYWNlIHNvIHBvaW50ZXIgYW5kIGtleWJvYXJkXG4gICAgLy8gdXNlcnMgYXJlIHNob3duIHRoZSBzYW1lIHRhcmdldDsgZm9jdXMgYWRkcyB0aGUgaGFsbyBiZWxvdy5cblxuICAgICY6bm90KC5jb21wbGV0ZWQpOmlzKDpob3ZlciwgOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG5cbiAgICAgICAgLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvY3VzIEhhbG8uIGAtLXRibHItcmluZy1wcmltYXJ5YCBpcyBhIDE1JS1hbHBoYSBncmVlbiAofjEuMToxIG9uIHdoaXRlKVxuICAgIC8vIGFuZCBjYW5ub3QgY2FycnkgYSBmb2N1cyBpbmRpY2F0b3Igb24gaXRzIG93biwgc28gdGhlIGJvcmRlciBzaGlmdHMgdG9cbiAgICAvLyBmdWxsIGAtLXRibHItcHJpbWFyeWAgYWxvbmdzaWRlIGl0IHRvIG1lZXQgV0NBRyAyLjEgU0MgMi40LjExLlxuXG4gICAgJjpub3QoLmNvbXBsZXRlZCk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBEb25lLiBTaWduYWxsZWQgYnkgdGludCArIHN0cmlrZXRocm91Z2ggKyB3ZWlnaHQgZHJvcCArIGRlLWVtcGhhc2lzLCBzb1xuICAgIC8vIGl0IHN1cnZpdmVzIHdpdGhvdXQgaHVlLiBUaGUgcHJvZ3JhbW1hdGljIHNpZ25hbCBpcyBBNSdzXG4gICAgLy8gdmlzdWFsbHktaGlkZGVuIHN0YXR1cyB0ZXh0LCBub3QgYW55dGhpbmcgaW4gaGVyZS5cblxuICAgICYuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICAgICAuaXRlbS1uYW1lIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgIH1cblxuICAgICAgICAuaXRlbS1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm90aGluZyBsZWZ0IHRvIG5hdmlnYXRlIHRvLlxuXG4gICAgICAgIC5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ29tcGxldGlvbiBtYXJrZXIuIEdyZWVuIGNoZWNrIHdoZW4gZG9uZTsgYSBuZXV0cmFsIHJpbmcgd2hlbiBub3QuXG5cbi5jaGVja2xpc3QtaXRlbS1pY29uIHtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtOm5vdCguY29tcGxldGVkKSAuY2hlY2tsaXN0LWl0ZW0taWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRibHItZ3JheS00MDApO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0tY29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLy8gU2NvcGVkIHRvIHRoZSByb3c6IGBpdGVtLWljb25gIC8gYGl0ZW0tbmFtZWAgYXJlIHRvbyBnZW5lcmljIHRvIG93biBnbG9iYWxseS5cblxuLmNoZWNrbGlzdC1pdGVtIC5pdGVtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtIC5pdGVtLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tdGJsci1sZWFkaW5nLW5vcm1hbCk7XG59XG5cbi8vIEFsd2F5cyB2aXNpYmxlLCBub3QgaG92ZXItcmV2ZWFsZWQ6IGhvdmVyIG5ldmVyIGZpcmVzIG9uIHRvdWNoLCBzbyBhXG4vLyBob3Zlci1vbmx5IGFmZm9yZGFuY2UgaXMgaW52aXNpYmxlIHRvIGhhbGYgdGhlIHVzZXJzIHdobyBuZWVkIGl0LlxuXG4uY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT0ZGQ0FOVkFTIFBBTkVMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyB7XG4gICAgd2lkdGg6IDQyMHB4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLy8gUHJvZ3Jlc3Mgc3VtbWFyeSBjYXJkIGF0IHRoZSB0b3Agb2YgdGhlIHBhbmVsLiBTY29wZWQgdG8gdGhpcyB3aWRnZXQgLSB0aGVcbi8vIHVuc2NvcGVkIGAub2ZmY2FudmFzLWJvZHkgLmNhcmRgIGl0IHJlcGxhY2VzIHdvdWxkIHJlc3R5bGUgZXZlcnkgY2FyZCBpblxuLy8gZXZlcnkgb2ZmY2FudmFzIGluIHRoZSBhcHAuXG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyAub2ZmY2FudmFzLWJvZHkgLmNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xufVxuXG4ub25ib2FyZGluZy1wcm9ncmVzcy1sYWJlbCB7XG4gICAgbWluLXdpZHRoOiAzcmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE5vIG1vdGlvbiBzdXJ2aXZlcyBpbiB0aGlzIGZpbGUgLSBubyB0cmFuc2Zvcm1zLCBubyBrZXlmcmFtZXMuIFdoYXQgaXMgbGVmdFxuLy8gaXMgYSAxNTBtcyBjb2xvdXIvc2hhZG93IGNyb3NzLWZhZGUsIHdoaWNoIGlzIG5vdCB2ZXN0aWJ1bGFyLiBUaGlzIGJsb2NrIGlzXG4vLyBkZWZlbnNpdmUgb25seSwgYW5kIGlzIHBvaW50ZWQgYXQgYSBzZWxlY3RvciB0aGF0IGFjdHVhbGx5IGV4aXN0cy5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuY2hlY2tsaXN0LWl0ZW0ge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogT25ib2FyZGluZyBXaXphcmQgLSB0aGUgZmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKVxuICpcbiAqIFRoaXMgaXMgdGhlIGZpcnN0IHNjcmVlbiBldmVyeSBuZXcgdXNlciBtZWV0czogcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXNpZ251cCxcbiAqIGEgdXNlciB3aXRoIG5vIGNvbXBhbnkgaXMgcmVkaXJlY3RlZCBoZXJlIHRvIGNyZWF0ZSB0aGVpciBjb21wYW55LCBhblxuICogb3B0aW9uYWwgZmlyc3QgY2xpZW50LCBhbmQgYSBmaXJzdCBpbnZvaWNlLlxuICpcbiAqIEl0IHVzZWQgdG8gYmUgc3R5bGVkIHdpdGggaW5saW5lIDxzdHlsZT4gYmxvY2tzIHRoYXQgY29udHJhZGljdGVkIHRoZSBkZXNpZ25cbiAqIHN5c3RlbSB3aG9sZXNhbGUgLSBCb290c3RyYXAgYmx1ZSAoIzA2NmZkMSkgaW5zdGVhZCBvZiBUcnVzdCBHcmVlbiwgZ3JhZGllbnRzXG4gKiBvbiB0aGUgY2FudmFzIC8gc3RlcCBpY29uIC8gYmFkZ2UsIGEgM3B4IGBib3JkZXItbGVmdGAgc2lkZS1zdHJpcGUgb24gdGhlXG4gKiBiZW5lZml0cyBib3ggKGEgaGFyZCBiYW4pLCBhbmQgYSBib3VuY2UvZWxhc3RpYyBjZWxlYnJhdGlvbiB3aXRoIGFuIGluZmluaXRlXG4gKiBwdWxzZSBhbmQgbm8gcmVkdWNlZC1tb3Rpb24gZmFsbGJhY2suIFRoaXMgZmlsZSByZXBsYWNlcyBhbGwgb2YgaXQgd2l0aFxuICogYC0tdGJsci0qYCB0b2tlbnMsIGZsYXQgc3VyZmFjZXMsIGFuZCBlYXNlLW91dCBtb3Rpb24uXG4gKlxuICogRXZlcnl0aGluZyBpcyBzY29wZWQgdW5kZXIgYC5vbmJvYXJkaW5nLWNvbnRhaW5lcmAgYmVjYXVzZSB0aGUgY2xhc3MgbmFtZXNcbiAqIChgc3RlcC1pY29uYCwgYHN0ZXAtYmVuZWZpdHNgLCBgd2VsY29tZS1iYWRnZWAsIC4uLikgYXJlIGdlbmVyaWMgYW5kIHVzZWRcbiAqIG5vd2hlcmUgZWxzZSAtIHNjb3Bpbmcga2VlcHMgdGhlbSBmcm9tIGxlYWtpbmcgaW50byB0aGUgcmVzdCBvZiB0aGUgYXBwLlxuICpcbiAqIFN0cnVjdHVyZSAoQm9vdHN0cmFwIGdyaWQsIGBjYXJkYCwgYGJ0bmAsIGBmb3JtLWNvbnRyb2xgLCBgcHJvZ3Jlc3NgKSBjb21lc1xuICogZnJvbSBUYWJsZXI7IHRoaXMgZmlsZSBvbmx5IHN0eWxlcyB0aGUgY3VzdG9tIHdpemFyZCBjaHJvbWUuXG4gKi9cblxuLm9uYm9hcmRpbmctY29udGFpbmVyIHtcbiAgICAvLyBQYXBlci1vbi1kZXNrIGNhbnZhczogdGhlIGFwcCdzIG93biBmbGF0IGJvZHkgYmFja2dyb3VuZC4gVGhlIHByZXZpb3VzXG4gICAgLy8gZ3JleSBkaWFnb25hbCBncmFkaWVudCB3YXMgZGVjb3JhdGlvbiB0aGUgZGVzaWduIHN5c3RlbSBkb2VzIG5vdCBwZXJtaXQuXG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ib2R5LWJnKTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFBST0dSRVNTIEhFQURFUlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLm9uYm9hcmRpbmctcHJvZ3Jlc3Mge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIFVwY29taW5nIHN0ZXAgYXQgcmVzdDogbmV1dHJhbCBzbGF0ZS5cblxuICAgIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLWR1cmF0aW9uLXNsb3cpIHZhcigtLXRibHItZWFzZS1vdXQpLFxuICAgICAgICAgICAgY29sb3IgdmFyKC0tdGJsci1kdXJhdGlvbi1zbG93KSB2YXIoLS10YmxyLWVhc2Utb3V0KSxcbiAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tdGJsci1kdXJhdGlvbi1zbG93KSB2YXIoLS10YmxyLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAvLyBSZWFjaGVkICh0aGUgY3VycmVudCBzdGVwIG9yIGFuIGVhcmxpZXIgb25lKTogYSBzb2Z0IGdyZWVuIHRpbnQuXG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuYWN0aXZlIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGN1cnJlbnQgc3RlcDogZmlsbGVkIFRydXN0IEdyZWVuIHdpdGggdGhlIHN0YW5kYXJkIGZvY3VzIGhhbG8sIHNvIHRoZVxuICAgIC8vIHVzZXIncyBwb3NpdGlvbiByZWFkcyBhdCBhIGdsYW5jZS5cblxuICAgIC5zdGVwLWluZGljYXRvci5jdXJyZW50IC5zdGVwLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtaW52ZXJzZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGJsci1kdXJhdGlvbi1zbG93KSB2YXIoLS10YmxyLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAvLyBwcmltYXJ5LWRhcmsgKCMxZjZjMjkpIG9uIHRoZSB3aGl0ZSBoZWFkZXIgaG9sZHMgQUEgY29tZm9ydGFibHk7IHRoZSByYXdcbiAgICAvLyBwcmltYXJ5IHdvdWxkIG5vdCBmb3IgdGV4dCB0aGlzIHNtYWxsLlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmFjdGl2ZSAuc3RlcC1sYWJlbCxcbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAuc3RlcC1jb25uZWN0b3Ige1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgbWFyZ2luOiAwIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLWR1cmF0aW9uLXNsb3cpIHZhcigtLXRibHItZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC5zdGVwLWNvbm5lY3Rvci5jb21wbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgQ0FSRFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gUGFwZXIgb24gdGhlIGNhbnZhczogc3VyZmFjZSwgc29mdCByZXN0aW5nIHNoYWRvdywgZ2VuZXJvdXMgcmFkaXVzLiBOb3QgYVxuICAgIC8vIGhlYXZpZXIgY3VzdG9tIHNoYWRvdyAtIHRoZSBkZXNpZ24gc3lzdGVtJ3MgYHNoYWRvdy1zbWAgaXMgdGhlIGNhcmQgcmVzdC5cblxuICAgIC5vbmJvYXJkaW5nLXN0ZXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMTIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXhsKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgSUNPTiBNRURBTExJT05cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIEZsYXQgcHJpbWFyeSB0aW50IHdpdGggYSBUcnVzdCBHcmVlbiBnbHlwaCAtIHRoZSBzYW1lIHNvZnQtbWVkYWxsaW9uXG4gICAgLy8gbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZCBlbXB0eSBzdGF0ZXMgdXNlLiBUaGUgcHJldmlvdXMgc2F0dXJhdGVkIGJsdWVcbiAgICAvLyBncmFkaWVudCBkaXNjIHdhcyB0aGUgQUktc2xvcCBoZXJvLWljb24gdGVsbC5cblxuICAgIC5zdGVwLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFdFTENPTUUgU0VDVElPTiArIEJBREdFXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAud2VsY29tZS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS04KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC53ZWxjb21lLWJhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBCRU5FRklUUyAvIFwiV0hZIFRISVMgTUFUVEVSU1wiIEJPWFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gQSBmdWxsIDFweCBib3JkZXIgcGx1cyBhbiBhbWJpZW50IGdyZWVuIHdhc2guIE5PIHNpZGUtc3RyaXBlOiBhIGNvbG91cmVkXG4gICAgLy8gYGJvcmRlci1sZWZ0YCB0aGlja2VyIHRoYW4gMXB4IGlzIGEgaGFyZCBiYW4sIGFuZCB0aGUgbGVhZGluZyBpY29uIGluc2lkZVxuICAgIC8vIGFscmVhZHkgY2FycmllcyB0aGUgYWNjZW50LlxuXG4gICAgLnN0ZXAtYmVuZWZpdHMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tdGJsci1zcGFjZS01KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpICsgbGkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENPTVBMRVRJT04gU0NSRUVOXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAuY2VsZWJyYXRpb24taWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFN1Y2Nlc3MgbWVkYWxsaW9uOiBzdWNjZXNzLWxpZ2h0IGRpc2MsIEFBLXNhZmUgc3VjY2Vzcy1kYXJrIGNoZWNrLiBFbnRlcnNcbiAgICAvLyBvbmNlIHdpdGggYSBnZW50bGUgZWFzZS1vdXQgc2NhbGUsIG5ldmVyIGJvdW5jZXMsIG5ldmVyIGxvb3BzLlxuXG4gICAgLnN1Y2Nlc3MtY2hlY2ttYXJrIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcy1kYXJrKTtcbiAgICAgICAgYW5pbWF0aW9uOiBvbmJvYXJkaW5nLWNlbGVicmF0ZSB2YXIoLS10YmxyLWR1cmF0aW9uLXNsb3cpIHZhcigtLXRibHItZWFzZS1vdXQpIGJvdGg7XG4gICAgfVxuXG4gICAgLy8gQSBxdWlldCwgbmV1dHJhbCB0aXAgbm90ZSAtIGRpc3RpbmN0IGZyb20gdGhlIGdyZWVuIGJlbmVmaXRzIGJveCBhbmQgbm9cbiAgICAvLyBsb25nZXIgYSByYXcgQm9vdHN0cmFwIGBhbGVydC1pbmZvYCBibHVlLlxuXG4gICAgLm9uYm9hcmRpbmctdGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTAtNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1hY2NlbnQtZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSRVNQT05TSVZFXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAgICAgLm9uYm9hcmRpbmctc3RlcC1jYXJkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtOCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGtleWZyYW1lcyBvbmJvYXJkaW5nLWNlbGVicmF0ZSB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlZCBtb3Rpb24gaXMgbm90IG9wdGlvbmFsLiBUaGUgcHJvZ3Jlc3MtaW5kaWNhdG9yIGNyb3NzLWZhZGVzIGFyZVxuLy8gbm9uLXZlc3RpYnVsYXIsIGJ1dCB0aGUgY2VsZWJyYXRpb24gc2NhbGUgaXMgYSB0cmFuc2Zvcm0sIHNvIGl0IGlzIGRpc2FibGVkXG4vLyBvdXRyaWdodCBhbmQgdGhlIGZpbmFsIHN0YXRlIHNob3dzIGluc3RhbnRseS5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAub25ib2FyZGluZy1jb250YWluZXIge1xuXG4gICAgICAgIC5zdGVwLW51bWJlcixcbiAgICAgICAgLnN0ZXAtbGFiZWwsXG4gICAgICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN1Y2Nlc3MtY2hlY2ttYXJrIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBNb25leSBEaXNwbGF5XG4gKlxuICogVGhlIHNpZ25hdHVyZSBjb21wb25lbnQgKERFU0lHTi5tZCBzZWN0aW9uIDUpLiBFdmVyeSBjdXJyZW5jeSB2YWx1ZSBpbiB0aGVcbiAqIGFwcGxpY2F0aW9uIHJlbmRlcnMgdGhyb3VnaCBgLm1vbmV5YDsgaXQgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yXG4gKiBtb25leSBkaXNwbGF5LCBhbmQgcmF3IGB7eyBhbW91bnQgfX1gIHJlbmRlcmluZyBpcyBwcm9oaWJpdGVkLlxuICpcbiAqIENvbnRyYWN0OlxuICogICA8c3BhbiBjbGFzcz1cIm1vbmV5XCI+XG4gKiAgICAgPHNwYW4gY2xhc3M9XCJtb25leS1jdXJyZW5jeVwiPlVTRDwvc3Bhbj5cbiAqICAgICA8c3Ryb25nIGNsYXNzPVwibW9uZXktYW1vdW50XCI+MSwyMzQuNTY8L3N0cm9uZz5cbiAqICAgPC9zcGFuPlxuICpcbiAqIE1vZGlmaWVycyAob24gdGhlIGAubW9uZXlgIHJvb3QsIGNvbWJpbmFibGUpOlxuICogICAubW9uZXktLXBhaWQgICAgICBBbW91bnQgaW4gQUEtc2FmZSBzdWNjZXNzLiBPTkxZIHZhbGlkIGFsb25nc2lkZSBhblxuICogICAgICAgICAgICAgICAgICAgICBleHBsaWNpdCBcIlBhaWRcIiBsYWJlbCAodGhlIE1vbmV5LUNvbG9yIFJ1bGUpLlxuICogICAubW9uZXktLW92ZXJkdWUgICBBbW91bnQgaW4gQUEtc2FmZSBkYW5nZXIuIFNhbWUgbGFiZWxsaW5nIHJ1bGUuXG4gKiAgIC5tb25leS0tdG90YWwgICAgIFdlaWdodCA2MDAsIGFtb3VudCBvbmUgc2l6ZSBzdGVwIHVwLlxuICogICAobm9uZSkgICAgICAgICAgICBOZXV0cmFsIC0gdGhlIGRlZmF1bHQgYW5kIHRoZSBjb21tb24gY2FzZS5cbiAqXG4gKiBUaGUgY29tcG9uZW50IG5ldmVyIHNldHMgaXRzIG93biBmb250LXNpemUuIEl0IGluaGVyaXRzIGZyb20gY29udGV4dCwgc28gdGhlXG4gKiBzYW1lIG1hcmt1cCBpcyBjb3JyZWN0IGlubGluZSBpbiBhIHRhYmxlIGNlbGwsIGluIGEgaGVhZGluZywgYW5kIGF0XG4gKiBgLnN0YXQtdmFsdWVgIHNjYWxlIGluIHRoZSBkYXNoYm9hcmQgaGVybyB0aWxlcy4gT25seSBgLm1vbmV5LS10b3RhbGAgc3RlcHNcbiAqIHRoZSBhbW91bnQsIGFuZCBpdCBzdGVwcyByZWxhdGl2ZWx5IHNvIHRoZSByZXN1bHQgaXMgcmlnaHQgYXQgZXZlcnkgYmFzZS5cbiAqL1xuXG4ubW9uZXkge1xuICAgIC8vIGlubGluZS1mbGV4IHJhdGhlciB0aGFuIHBsYWluIGlubGluZSwgZm9yIHR3byByZWFzb25zOlxuICAgIC8vICAxLiBUaGUgZ2FwIGJldHdlZW4gY3VycmVuY3kgYW5kIGFtb3VudCBpcyBkZXRlcm1pbmlzdGljIHdoZXRoZXIgb3Igbm90XG4gICAgLy8gICAgIHRoZSBlbWl0dGVkIG1hcmt1cCBoYXBwZW5zIHRvIGNhcnJ5IHdoaXRlc3BhY2UgYmV0d2VlbiB0aGUgc3BhbnNcbiAgICAvLyAgICAgKGZsZXggZHJvcHMgd2hpdGVzcGFjZS1vbmx5IGFub255bW91cyBib3hlcykuXG4gICAgLy8gIDIuIGBhbGlnbi1pdGVtczogYmFzZWxpbmVgIGtlZXBzIGEgc2l6ZS1zdGVwcGVkIGAubW9uZXktLXRvdGFsYCBhbW91bnRcbiAgICAvLyAgICAgc2hhcmluZyBhIGJhc2VsaW5lIHdpdGggaXRzIGN1cnJlbmN5LCBpbnN0ZWFkIG9mIGNlbnRyaW5nIGFnYWluc3QgaXQuXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcblxuICAgIC8vIE1vbmV5IGNsYXJpdHk6IGEgY3VycmVuY3kgY29kZSBtdXN0IG5ldmVyIGJlIG9ycGhhbmVkIGZyb20gaXRzIG51bWJlci5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLy8gVGhlIFRhYnVsYXIgRmlndXJlcyBSdWxlIC0gYW1vdW50cyBhbGlnbiBpbiBjbGVhbiB2ZXJ0aWNhbCBjb2x1bW5zLlxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIEN1cnJlbmN5IGNvZGUgb3Igc3ltYm9sLiBEaW1tZWQgcmVsYXRpdmUgdG8gdGhlIGFtb3VudCwgYnV0IGl0IGlzIG1lYW5pbmdmdWxcbi8vIHRleHQgcmF0aGVyIHRoYW4gZGVjb3JhdGlvbiwgc28gaXQgaG9sZHMgQUEgb24gZXZlcnkgc3VyZmFjZSBpbiB0aGUgc3lzdGVtLlxuXG4ubW9uZXktY3VycmVuY3kge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLW1vbmV5LWN1cnJlbmN5KTtcbn1cblxuLy8gVGhlIGFtb3VudC4gV2VpZ2h0IGlzIG5vcm1hbGlzZWQgaGVyZSBzbyB0aGF0IHRoZSBVQSBkZWZhdWx0IG9mIDcwMCBvblxuLy8gYDxzdHJvbmc+YCBkb2VzIG5vdCBwcmUtZW1wdCB0aGUgYC5tb25leS0tdG90YWxgIHN0ZXAgdXAgdG8gNjAwLlxuXG4ubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1tb25leS1uZXV0cmFsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PRElGSUVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQYWlkLiBDb2xvdXIgaXMgYW1wbGlmaWNhdGlvbiBoZXJlLCBuZXZlciB0aGUgY2FycmllciBvZiBtZWFuaW5nIC0gYSBncmVlblxuLy8gYW1vdW50IHdpdGhvdXQgYW4gYWNjb21wYW55aW5nIFwiUGFpZFwiIGxhYmVsIGlzIGEgYnVnLCBub3QgYSBzdHlsZSBjaG9pY2UuXG5cbi5tb25leS0tcGFpZCAubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1tb25leS1wYWlkKTtcbn1cblxuLy8gT3ZlcmR1ZS4gU2FtZSBydWxlOiBhbHdheXMgcmVuZGVyZWQgd2l0aCBhbiBleHBsaWNpdCBcIk92ZXJkdWVcIiBsYWJlbC5cblxuLm1vbmV5LS1vdmVyZHVlIC5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLW1vbmV5LW92ZXJkdWUpO1xufVxuXG4vLyBUb3RhbC4gSGVhdmllciwgYW5kIG9uZSBzaXplIHN0ZXAgdXAgcmVsYXRpdmUgdG8gdGhlIGluaGVyaXRlZCBjb250ZXh0LlxuLy8gVGhlIGN1cnJlbmN5IGtlZXBzIGl0cyBpbmhlcml0ZWQgd2VpZ2h0IHNvIHRoZSBkaW1tZWQtcHJlZml4IHJlbGF0aW9uc2hpcFxuLy8gc3Vydml2ZXMgdGhlIHN0ZXAgdXAuXG5cbi5tb25leS0tdG90YWwgLm1vbmV5LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiBjYWxjKDFlbSAqIHZhcigtLXRibHItbW9uZXktdG90YWwtc2NhbGUpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbn1cblxuLy8gQXQgZGlzcGxheSBzaXplIHRoZSBjdXJyZW5jeSBjb2RlIGlzIGRpbW1lZCBieSBzaXplIGFzIHdlbGwgYXMgYnkgY29sb3VyOiBhdCBhXG4vLyBzaGFyZWQgc2l6ZSBpdCBjb21wZXRlcyB3aXRoIHRoZSBhbW91bnQgZm9yIGF0dGVudGlvbiBpdCBoYXMgbm90IGVhcm5lZCwgYW5kXG4vLyBcIlVTRCAxMjAsODgyLjE5XCIgc2hvdWxkIHJlYWQgYXMgYSBudW1iZXIgY2FycnlpbmcgYSB1bml0IHJhdGhlciB0aGFuIGFzIHR3b1xuLy8gZXF1YWwgd29yZHMuIFNjb3BlZCB0byBgLS10b3RhbGAgZGVsaWJlcmF0ZWx5LiBBdCBib2R5IHNpemUgKGEgdGFibGUgcm93LCBhblxuLy8gYWN0aXZpdHkgZmVlZCkgdGhlIHNhbWUgcmVkdWN0aW9uIHdvdWxkIHB1dCB0aGUgY29kZSBuZWFyIDEwcHgsIHdoaWNoIGlzIHRoZVxuLy8gbGVnaWJpbGl0eSBwcm9ibGVtIHJhdGhlciB0aGFuIHRoZSBmaXgsIHNvIHRoZSBjb2RlIHN0YXlzIGZ1bGwgc2l6ZSB0aGVyZS5cblxuLm1vbmV5LS10b3RhbCAubW9uZXktY3VycmVuY3kge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci1tb25leS1jdXJyZW5jeS1zY2FsZSk7XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gU3RhdHVzIENoaXBcbiAqXG4gKiBUaGUgb25lIHN0YXR1cyBjaGlwIChERVNJR04ubWQgc2VjdGlvbiA1KS4gRXZlcnkgc3RhdHVzIHdvcmQgaW4gdGhlXG4gKiBhcHBsaWNhdGlvbiByZW5kZXJzIHRocm91Z2ggYC5zdGF0dXMtY2hpcGAsIG9uIGEgZml2ZS12YWx1ZSBzZW1hbnRpYyBzZXQ6XG4gKiBuZXV0cmFsLCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXIuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAgIDxzcGFuIGNsYXNzPVwic3RhdHVzLWNoaXAgc3RhdHVzLWNoaXAtLXN1Y2Nlc3NcIj5QYWlkPC9zcGFuPlxuICpcbiAqIEV2ZXJ5IHZhcmlhbnQgaXMgYW4gQUEtc2FmZSB0ZXh0IGNvbG91ciBvbiBpdHMgb3duIHRpbnQ6XG4gKiAgIG5ldXRyYWwgICBncmF5LTEwMCAgICAgIC8gdGV4dC1zZWNvbmRhcnkgICA2LjkyOjFcbiAqICAgaW5mbyAgICAgIGluZm8tbGlnaHQgICAgLyBpbmZvLWRhcmsgICAgICAgIDUuNDk6MVxuICogICBzdWNjZXNzICAgc3VjY2Vzcy1saWdodCAvIHN1Y2Nlc3MtZGFyayAgICAgNC44NDoxXG4gKiAgIHdhcm5pbmcgICB3YXJuaW5nLWxpZ2h0IC8gd2FybmluZy1kYXJrICAgICA2LjM3OjFcbiAqICAgZGFuZ2VyICAgIGRhbmdlci1saWdodCAgLyBkYW5nZXItZGFyayAgICAgIDUuMzA6MVxuICpcbiAqIFRoZSB0aW50IGl0c2VsZiBtZWFzdXJlcyAxLjA1LTEuMjI6MSBhZ2FpbnN0IHRoZSBwYWdlLiBUaGF0IGlzIGRlbGliZXJhdGUuXG4gKiBUaGUgY2hpcCdzIG1lYW5pbmcgaXMgY2FycmllZCBieSBpdHMgdGV4dCBsYWJlbCwgc28gdGhlIHBpbGwgaXMgZGVjb3JhdGlvblxuICogYXJvdW5kIGxlZ2libGUgdGV4dCwgbm90IGEgY29udHJvbCB3aG9zZSBib3VuZGFyeSBtdXN0IGJlIHBlcmNlaXZhYmxlLlxuICpcbiAqIEEgY2hpcCBpcyBuZXZlciBpbnRlcmFjdGl2ZTogbm8gc2hhZG93LCBubyBib3JkZXIsIG5vIGhvdmVyLCBubyB0cmFuc2l0aW9uLFxuICogYW5kIGl0IGlzIG5ldmVyIGEgZm9jdXMgdGFyZ2V0LiBBIGNoaXAgaXMgYWxzbyBuZXZlciB0cnVuY2F0ZWQgLSBhXG4gKiBoYWxmLXNob3duIHN0YXR1cyBpcyB3b3JzZSB0aGFuIGEgd2lkZXIgY29sdW1uLlxuICovXG5cbi5zdGF0dXMtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTAtNSkgdmFyKC0tdGJsci1zcGFjZS0yLTUpOyAgIC8vIDJweCAxMHB4XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEycHhcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7ICAgICAgICAgICAgICAgICAgLy8gNTAwXG4gICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC8vIFRoZSBiYXNlIGlzIHRoZSBuZXV0cmFsIHRyZWF0bWVudCwgc28gYSBjaGlwIHdpdGggbm8gbW9kaWZpZXIgaXMgc3RpbGxcbiAgICAvLyBsZWdpYmxlIGFuZCBzdGlsbCBsb29rcyBsaWtlIGEgY2hpcC5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAmLS1uZXV0cmFsIHtcbiAgICAgICAgLy8gVGhlIG1vZGlmaWVyIGV4aXN0cyBzbyBjYWxsIHNpdGVzIGNhbiBzYXkgYG5ldXRyYWxgIHJhdGhlciB0aGFuIHNheVxuICAgICAgICAvLyBub3RoaW5nLiBJdCByZXBlYXRzIHRoZSBiYXNlIHZhbHVlcyBpbnN0ZWFkIG9mIGJlaW5nIGVtcHR5LCBiZWNhdXNlXG4gICAgICAgIC8vIGFuIGVtcHR5IHJ1bGUgaXMgZHJvcHBlZCBieSB0aGUgYnVpbGQgYW5kIGJ5IHN0eWxlbGludC5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1pbmZvLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mby1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci13YXJuaW5nLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlci1kYXJrKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTGF5b3V0IEluZGV4XG4gKlxuICogTGF5b3V0IHBhdHRlcm4gc3R5bGVzIHRoYXQgZXh0ZW5kIFRhYmxlci9Cb290c3RyYXAuXG4gKiBPbmx5IGFkZCBsYXlvdXQgZmlsZXMgZm9yIHBhdHRlcm5zIG5vdCBjb3ZlcmVkIGJ5IHRoZSBmcmFtZXdvcmtzLlxuICpcbiAqIE5vdGU6IE1vc3QgbGF5b3V0IHN0eWxpbmcgY29tZXMgZnJvbSBUYWJsZXIgKHBhZ2Utd3JhcHBlciwgcGFnZS1oZWFkZXIsIGV0Yy4pXG4gKiBUaGlzIGZpbGUgaW1wb3J0cyBvbmx5IGN1c3RvbSBleHRlbnNpb25zIHdoZW4gbmVlZGVkLlxuICovXG5cbi8vIFZlcnRpY2FsIHNpZGViYXIgcmVjb2xvciDigJQgY29udmVydHMgVGFibGVyJ3MgZGFyayBzbGF0ZSBzaWRlYmFyIGludG9cbi8vIHRoZSBxdWlldCBsaWdodCBwYW5lbCBwcmVzY3JpYmVkIGJ5IERFU0lHTi5tZCAoZ3JheS0xMDAgYmVoaW5kIHRoZSBib2R5KS5cbkBpbXBvcnQgJ25hdmJhci12ZXJ0aWNhbCc7XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSDigJQgVmVydGljYWwgTmF2YmFyIChTaWRlYmFyKVxuICpcbiAqIFRhYmxlciBzaGlwcyBgLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFya2AgYXMgYSBoZWF2eSBzbGF0ZSBwYW5lbCAoZ3JheS04MDApXG4gKiB0aGF0IFBST0RVQ1QubWQgbmFtZXMgYXMgdGhlIEFkbWluTFRFIGFudGktcmVmZXJlbmNlIHRoZSByZXdyaXRlIGlzIGVzY2FwaW5nLlxuICogVGhpcyBmaWxlIHJlY29sb3JzIHRoZSBzaWRlYmFyIG9uZSBzaGFkZSBsaWdodGVyIChncmF5LTcwMCkgc28gaXQgc3RpbGxcbiAqIGNhcnJpZXMgcHJlc2VuY2UsIGJ1dCB1c2VzIHRpbnRlZCBuZXV0cmFscyBhbmQgYSBncmVlbi10aW50ZWQgYWN0aXZlIHN0YXRlXG4gKiB0byBkaWZmZXJlbnRpYXRlIGl0IGZyb20gZ2VuZXJpYyBUYWJsZXIgYWRtaW4gb3V0cHV0LlxuICpcbiAqIFNlbGVjdG9yIHNwZWNpZmljaXR5IHRhcmdldHMgYC5uYXZiYXItdmVydGljYWxgIHNvIFRhYmxlcidzIG1vYmlsZS1jb2xsYXBzZSxcbiAqIGRyYXdlciwgYW5kIGRyb3Bkb3duIHJ1bGVzIGNvbnRpbnVlIHRvIGFwcGx5LlxuICovXG5cbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLFxuLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWRhcmsge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItZ3JheS03MDApO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS10YmxyLWdyYXktODAwKTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgLy8gQnJhbmQ6IGxvZ28gKyBwcm9kdWN0IG5hbWUgYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhci5cblxuICAgIC5uYXZiYXItYnJhbmQge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLm5hdmJhci1icmFuZC1hdXRvZGFyayB7XG4gICAgICAgIGZpbHRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBOYXYgbGluayBkZWZhdWx0IHN0YXRlLlxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS0zMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgLm5hdi1saW5rLWljb24sXG4gICAgICAgIC5uYXYtbGluay10aXRsZSB7XG4gICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhvdmVyOiBsaWZ0IHRvIGEgc2xpZ2h0bHkgbGlnaHRlciBzbGF0ZSwgYnJpZ2h0ZXIgdGV4dC5cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItZ3JheS02MDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBLZXlib2FyZCBmb2N1cyBoYWxvLCBwZXIgVGhlIEZvY3VzIEhhbG8gUnVsZS5cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlIHJvdXRlOiB0aW50ZWQgYmFja2dyb3VuZCBwdWxsZWQgZnJvbSBUcnVzdCBHcmVlbiBmYW1pbHkuXG4gICAgLy8gTG9va3MgbGlrZSBhIHNvZnQgXCJidXR0b25cIiBvbiB0aGUgZGFyayBzbGF0ZSB3aXRob3V0IGFueSBzaWRlIHN0cmlwZS5cblxuICAgIC8vIFRhYmxlciBwYWludHMgdGhlIGFjdGl2ZSBpdGVtIHRocm91Z2ggYC5uYXYtaXRlbS5hY3RpdmUgPiAubmF2LWxpbmtgLCB3aGljaCBvdXRyYW5rcyBhIGJhcmVcbiAgICAvLyBgLm5hdi1saW5rLmFjdGl2ZWAgYW5kIHdvdWxkIG90aGVyd2lzZSBsZWF2ZSB0aGUgZGFyayBncmVlbiB0ZXh0IHNpdHRpbmcgb24gVGFibGVyJ3Mgb3duXG4gICAgLy8gZmFpbnQgb3ZlcmxheSwgc28gdGhlIHBpbGwgbWF0Y2hlcyB0aGF0IHNoYXBlIHRvby5cblxuICAgIC5uYXYtbGluay5hY3RpdmUsXG4gICAgLm5hdmJhci1uYXYgLm5hdi1pdGVtLmFjdGl2ZSA+IC5uYXYtbGluay5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcblxuICAgICAgICAubmF2LWxpbmstaWNvbixcbiAgICAgICAgLm5hdi1saW5rLXRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBsYWJlbHMgKGlmIGFueSkgc2l0IHF1aWV0bHkuXG5cbiAgICAubmF2LXN1YnRpdGxlLFxuICAgIC5uYXYtaGVhZGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS00MDApO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGJsci10cmFja2luZy13aWRlcik7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gY2hldnJvbnMgbWF0Y2ggc2Vjb25kYXJ5IHRleHQuXG5cbiAgICAubmF2LWxpbmstdG9nZ2xlLFxuICAgIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS00MDApO1xuICAgIH1cblxuICAgIC8vIE5lc3RlZCBkcm9wZG93biBtZW51cyBpbnNpZGUgdGhlIHNpZGViYXIgbGlmdCBvbnRvIGEgcGFwZXIgc3VyZmFjZSBzb1xuICAgIC8vIHN1Ym1lbnUgY29udGVudCByZWFkcyBsaWtlIGNvbnRlbnQsIG5vdCBuYXYgY2hyb21lLlxuXG4gICAgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LW1kKTtcblxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG5cbiAgICAgICAgICAgIC8vIFRhYmxlciBjb2xvdXJzIGAubmF2LWxpbmstaWNvbmAgZnJvbSBpdHMgb3duIHRva2VuLCB3aGljaCBkZWZhdWx0cyB0byBhIDUwJSB0aW50XG4gICAgICAgICAgICAvLyBvZiB0aGUgc2lkZWJhcidzIHdoaXRlIG5hdiBjb2xvdXIg4oCUIGludmlzaWJsZSBvbiB0aGlzIHBhcGVyIHN1cmZhY2UuIEZvbGxvd2luZyB0aGVcbiAgICAgICAgICAgIC8vIGl0ZW0ncyBvd24gY29sb3VyIGtlZXBzIHRoZSBpY29uIGxlZ2libGUgaW4gZXZlcnkgc3RhdGUuXG4gICAgICAgICAgICAtLXRibHItbmF2LWxpbmstaWNvbi1jb2xvcjogY3VycmVudGNvbG9yO1xuXG4gICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sbGFwc2VkIGV4cGFuZCB0b2dnbGUgKGhhbWJ1cmdlciBvbiBtb2JpbGUpLlxuXG4gICAgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItZ3JheS0yMDApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItZ3JheS02MDApO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBNb2JpbGUgaG9yaXpvbnRhbCBuYXZiYXIgKHJlbmRlcmVkIHdoZW4gdGhlIHZlcnRpY2FsIGRyYXdlciBjb2xsYXBzZXMpLlxuXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2Uge1xuICAgIEBtZWRpYSAod2lkdGggPCA5OTJweCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNzAwKTtcbiAgICB9XG59XG5cbi8vIFF1b3RlL2F2b2lkOiB3aGVuIHRoZSBzeXN0ZW0gZW5hYmxlcyBkYXJrIG1vZGUgcHJlZmVyZW5jZSwgbGVhdmUgdGhlIGRhcmtcbi8vIHRoZW1lIHRvIFRhYmxlci4gTGlnaHQgb3ZlcnJpZGVzIHNjb3BlIG9ubHkgdG8gZGVmYXVsdCB0aGVtZS5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcblxuICAgIFtkYXRhLWJzLXRoZW1lPVwiZGFya1wiXSAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFyayB7XG4gICAgICAgIC8vIEludGVudGlvbmFsbHkgZW1wdHk6IGRlZmVyIHRvIFRhYmxlciBkYXJrIGRlZmF1bHRzIHVudGlsIFNvbGlkSW52b2ljZVxuICAgICAgICAvLyBzaGlwcyBhIGRvY3VtZW50ZWQgZGFyayB0aGVtZS5cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRm9ybSBTdHlsZXNcbiAqXG4gKiBHZW5lcmljIGZvcm0gY29tcG9uZW50IHN0eWxlcyBmb3IgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIENPTlRST0wgQkFTRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbCxcbi5mb3JtLXNlbGVjdCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1pbnB1dC1yYWRpdXMpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1pbnB1dC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItaW5wdXQtcGFkZGluZy15KSB2YXIoLS10YmxyLWlucHV0LXBhZGRpbmcteCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtYmFzZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItaW5wdXQtZm9jdXMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1pbnB1dC1mb2N1cy1yaW5nKTtcbiAgICB9XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbGlnaHQpO1xuICAgIH1cbn1cblxuLy8gVG9tIFNlbGVjdCBtYXJrcyBhIGNvbnRyb2wgdGhhdCBob2xkcyBhIHNlbGVjdGlvbiB3aXRoIGAuZnVsbGAsIGFuZCBUYWJsZXIgdGludHMgdGhvc2Ugd2l0aFxuLy8gdGhlIHBhZ2UgYmFja2dyb3VuZCDigJQgd2hpY2ggcmVhZHMgYXMgYSBkaXNhYmxlZCBmaWVsZCBuZXh0IHRvIHRoZSB3aGl0ZSBpbnB1dHMgYmVzaWRlIGl0LlxuLy8gQSBzZWxlY3QgdGhhdCBoYXMgYW4gYW5zd2VyIGlzIG5vdCBhIGRpZmZlcmVudCBraW5kIG9mIGNvbnRyb2wgdG8gb25lIHRoYXQgZG9lcyBub3QuXG5cbi50cy13cmFwcGVyLmZ1bGwgLnRzLWNvbnRyb2wge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItc3VyZmFjZSk7XG59XG5cbi8vIFRoZXNlIGNhcmRzIGNsaXAgd2l0aCBgb3ZlcmZsb3c6IGhpZGRlbmAgdG8ga2VlcCB0aGVpciBoZWFkZXIgaW5zaWRlIHRoZSByb3VuZGVkIGNvcm5lcnMsIGFuZFxuLy8gVG9tIFNlbGVjdCBwb3NpdGlvbnMgaXRzIGRyb3Bkb3duIGluc2lkZSB0aGUgY2FyZCwgc28gYSBzZWxlY3QgbmVhciB0aGUgYm90dG9tIGVkZ2Ugb3BlbmVkIGludG9cbi8vIGEgc2xpdmVyLiBTdG9wIGNsaXBwaW5nIG9ubHkgd2hpbGUgYSBkcm9wZG93biBpcyBvcGVuLlxuXG46aXMoLmZvcm0tcGFnZS1zZWN0aW9uLCAuYWRkcmVzcy1jYXJkLCAuYmlsbGluZy1pdGVtcy1zZWN0aW9uLCAuYmlsbGluZy10ZXJtcy1zZWN0aW9uKTpoYXMoLnRzLXdyYXBwZXIuZHJvcGRvd24tYWN0aXZlKSB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gTEFCRUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgLy8gUmVxdWlyZWQgaW5kaWNhdG9yXG5cbiAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgKic7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEZJRUxEIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZmllbGQge1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEhFTFAgVEVYVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1oZWxwLFxuLmZvcm0tdGV4dCxcbi5mb3JtLWhlbHAtdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS10YmxyLWxlYWRpbmctbm9ybWFsKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuXG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT0dHTEUgU1dJVENIIChDaGVja2JveCBhcyBTd2l0Y2gpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zLTUpIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4uZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTMwMCk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlBVVCBXSVRIIElDT04gKElucHV0IEdyb3Vwcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmlucHV0LWljb24tZ3JvdXAge1xuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuXG4gICAgICAgICAgICB+IC5pbnB1dC1ncm91cC10ZXh0LFxuICAgICAgICAgICAgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBpY29uIGlzIG9uIHRoZSBsZWZ0XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcblxuICAgICAgICArIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZBTElEQVRJT04gQlVUVE9OIElOIElOUFVUIEdST1VQXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnB1dC12YWxpZGF0ZS1ncm91cCB7XG5cbiAgICAuYnRuLXZhbGlkYXRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEtNSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gR1JPVVBTIChOZXN0ZWQvR3JvdXBlZCBGaWVsZHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyb3VwLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuXG4gICAgLmZvcm0tZ3JvdXAtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvcik7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC1jb250ZW50IHtcblxuICAgICAgICAubWItMzpsYXN0LWNoaWxkLFxuICAgICAgICAubWItNDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREUkVTUyBXSURHRVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZHJlc3Mtd2lkZ2V0IHtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSk7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gVkFMSURBVElPTiBTVEFURVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLWludmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZWY0NDQ0JyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2VmNDQ0NCcgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItZGFuZ2VyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4uZm9ybS1jb250cm9sLmlzLXZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLXZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiKDE2IDE4NSAxMjkgLyAxNSUpO1xuICAgIH1cbn1cblxuLmludmFsaWQtZmVlZGJhY2sge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMS01KTtcbn1cblxuLnZhbGlkLWZlZWRiYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0xLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSUxFIFVQTE9BRCAvIERST1BaT05FIFNUWUxJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZpbGUtdXBsb2FkLWFyZWEge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS10YmxyLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJi5kcmFnb3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC51cGxvYWQtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbGlnaHQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC51cGxvYWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLnVwbG9hZC1oaW50IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vIFN5bWZvbnkgVVggRHJvcHpvbmUgc3R5bGluZ1xuXG4uZHJvcHpvbmUge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS10YmxyLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGJsci10cmFuc2l0aW9uLWZhc3QpO1xuICAgIG1pbi1oZWlnaHQ6IGF1dG87XG5cbiAgICAmOmhvdmVyLFxuICAgICYuZHJvcHpvbmUtZHJhZ292ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gVElUTEVTIChGb3Igb3JnYW5pemVkIGZvcm1zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TIChDYXJkIGZvb3RlciB3aXRoIGJ1dHRvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RhbmRhcmQgRm9ybSBBY3Rpb25zIFBhdHRlcm46XG4gKlxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgW0NhbmNlbCAoZ2hvc3QpXSAgICAgICAgICAgICAgICAgICAgICBbU2F2ZSAocHJpbWFyeSArIGljb24pXeKUglxuICog4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKlxuICogLSBDYW5jZWw6IExlZnQgc2lkZSBPUiBnaG9zdCBzdHlsZVxuICogLSBTYXZlOiBSaWdodCBzaWRlLCBwcmltYXJ5IHN0eWxlLCB3aXRoIHNhdmUgaWNvblxuICovXG5cbi5mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpIHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuXG4gICAgLy8gV2hlbiB1c2VkIGluIGEgY2FyZCBmb290ZXJcblxuICAgIC5jYXJkLWZvb3RlciAmIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gU3ByZWFkIGJ1dHRvbnMgKGNhbmNlbCBsZWZ0LCBzYXZlIHJpZ2h0KVxuXG4gICAgJi5mb3JtLWFjdGlvbnMtc3ByZWFkIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5MSU5FIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taW5saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIT1JJWk9OVEFMIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taG9yaXpvbnRhbCB7XG5cbiAgICAuZm9ybS1ncm91cCxcbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjAwcHggMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMi01KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01QQUNUIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29tcGFjdCB7XG5cbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0xPQkFMIEJVVFRPTiBFTkhBTkNFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGFibGVyJ3MgLmJ0biBhbHJlYWR5IHNldHMgZGlzcGxheTogaW5saW5lLWZsZXggYW5kIGFsaWduLWl0ZW1zOiBjZW50ZXIsXG4vLyBidXQgZG9lcyBub3Qgc2V0IGdhcC4gQWRkIGNvbnNpc3RlbnQgc3BhY2luZyBiZXR3ZWVuIGljb24gYW5kIHRleHQuXG5cbi5idG4ge1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cbn1cblxuLmJ0bi1naG9zdC1kYW5nZXIge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUIgTkFWSUdBVElPTiBJTiBDQVJEIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlIGZvbnQgc2l6ZSBmb3IgdGFicyBpbiBjYXJkIGhlYWRlcnNcblxuLmNhcmQtaGVhZGVyLXRhYnMgLm5hdi1saW5rIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJvb3RzdHJhcCA1IGRvZXMgbm90IGluY2x1ZGUgYSA1MDAtd2VpZ2h0IHV0aWxpdHk7IGFkZCBpdCBoZXJlIGFzIGEgc2hhcmVkIHV0aWxpdHkuXG5cbi5mdy1tZWRpdW0ge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuXG4gICAgLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tYWN0aW9ucyB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIENvbXBhbnkgUGFnZXMgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciBjb21wYW55IHNlbGVjdGlvbiBhbmQgY3JlYXRpb24gcGFnZXNcbiAqIEFsbCBzdHlsZXMgYXJlIHNjb3BlZCB0byAuY29tcGFueS1zZWxlY3QtcGFnZSBhbmQgLmNvbXBhbnktY3JlYXRlLXBhZ2VcbiAqIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBhZ2VzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNoYXJlZCBTdHlsZXMgKGJvdGggc2VsZWN0IGFuZCBjcmVhdGUgcGFnZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LXNlbGVjdC1wYWdlLFxuLmNvbXBhbnktY3JlYXRlLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFwcGxpY2F0aW9uIEhlYWRlclxuXG4gICAgLmNvbXBhbnktcGFnZS1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1icmFuZCB7XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQYWdlIGludHJvIHNlY3Rpb24gKHVzZWQgYnkgYm90aCBzZWxlY3QgYW5kIGNyZWF0ZSBwYWdlcylcblxuICAgIC5jb21wYW55LXBhZ2UtaW50cm8ge1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmF2YXRhci1tZCB7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci1sZyB7XG4gICAgICAgIHdpZHRoOiAzLjVyZW07XG4gICAgICAgIGhlaWdodDogMy41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci0yeGwge1xuICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmF2YXRhci14bCB7XG4gICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICBoZWlnaHQ6IDVyZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYXZhdGFyLWluaXRpYWxzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1oaW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgYWRqdXN0bWVudHNcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAgICAgLmF2YXRhci1sZyB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYXZhdGFyLTJ4bCB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oMiwgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbXBhbnkgU2VsZWN0aW9uIFBhZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktc2VsZWN0LXBhZ2Uge1xuICAgIC8vIE1haW4gQ2FyZCBDb250YWluZXJcblxuICAgIC5jYXJkLnNoYWRvdy1zbSB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LWxnKSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcGFueSBDYXJkc1xuXG4gICAgLmNhcmQtY29tcGFueSB7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXRibHItdHJhbnNpdGlvbi1hbGwpO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXRibHItc2hhZG93LW1kKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3cteGwpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuXG4gICAgICAgICAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wYW55LWF2YXRhciB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgICAgIC5hdmF0YXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIHdpdGggbG9nbyBpbWFnZVxuXG4gICAgICAgIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdmF0YXIgd2l0aCBpbml0aWFscy4gVGhlIGRhcmsgc3RlcCwgbm90IC0tc3dwLXByaW1hcnk6IHRoZXNlIGFyZSB0ZXh0IGF0XG4gICAgICAgIC8vIDIwcHgvNjAwLCBhbmQgd2hpdGUgb24gLS1zd3AtcHJpbWFyeSBpcyAzLjc5OjEuIC0tc3dwLXByaW1hcnktZGFyayBpcyA2LjQ5OjEuXG5cbiAgICAgICAgLmF2YXRhci5iZy1wcmltYXJ5IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIGluaXRpYWxzIHRleHQgLSBmb3JjZSB3aGl0ZSBjb2xvclxuXG4gICAgICAgIC5hdmF0YXItaW5pdGlhbHMsXG4gICAgICAgIC5hdmF0YXIuYmctcHJpbWFyeSBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtaW52ZXJzZSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGJsci1kdXJhdGlvbi1iYXNlKSB2YXIoLS10YmxyLWVhc2UtaW4tb3V0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm1pbi13LTAge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIENvbXBhbnkgQ2FyZFxuXG4gICAgLmNhcmQtY3JlYXRlLWNvbXBhbnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXRibHItc3VjY2Vzcy1yZ2IpLCAwLjA1KSAwJSwgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXRibHItdHJhbnNpdGlvbi1hbGwpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMDQpIDEwMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnctbWQtYXV0byB7XG4gICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgICAgIC53LW1kLWF1dG8ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFueSBDcmVhdGlvbiBQYWdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LWNyZWF0ZS1wYWdlIHtcblxuICAgIC5mb3JtLXNtb290aCB7XG5cbiAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgICAgICAgLmZvcm0tc2VsZWN0OmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMjVyZW0gcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctbGcpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFsZXJ0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAmLmFsZXJ0LWluZm8ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10YmxyLWluZm8tcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1pbmZvLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXdhcm5pbmctcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci13YXJuaW5nLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXN1Y2Nlc3Mge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYnRuLXByaW1hcnkge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU2V0dGluZ3MgUGFnZSBTdHlsZXNcbiAqIE9ubHkgY3VzdG9tIHN0eWxlcyB0aGF0IGNhbid0IGJlIGFjaGlldmVkIHdpdGggQm9vdHN0cmFwL1RhYmxlciB1dGlsaXRpZXNcbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNldHRpbmdzIFBhZ2UgQ29udGFpbmVyIC0gTWF4LXdpZHRoIGNlbnRlcmluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtcGFnZSB7XG4gICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cblxuLy8gTW9iaWxlOiBob3Jpem9udGFsIHNjcm9sbGluZyB0YWJzXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5zZXR0aW5ncy1wYWdlID4gLm5hdi11bmRlcmxpbmUge1xuICAgICAgICBtYXJnaW4tbGVmdDogLTFyZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTFyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXR0aW5ncyBDYXJkIC0gcGFwZXItb24tZGVzayBzdXJmYWNlIHBlciBkZXNpZ24gc3lzdGVtXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZXR0aW5ncy1jb250ZW50LWNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTgpIHZhcigtLXRibHItc3BhY2UtOCkgdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KSB2YXIoLS10YmxyLXNwYWNlLTgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBibG9ja3MgaW5zaWRlIHRoZSBjYXJkIHVzZSBsaWdodGVyIGRpdmlkZXJzIHNvIHRoZSBwYWdlIHJlYWRzIGFzXG4gICAgLy8gYSBzaW5nbGUgcXVpZXQgc3VyZmFjZSwgbm90IGZpdmUgc3RhY2tlZCBjYXJkcy5cblxuICAgIC5jYXJkLWJvZHkgPiAuYm9yZGVyLWJvdHRvbSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gaGVhZGluZzogbWF0Y2ggdGhlIGRlc2lnbiBzeXN0ZW0gdGl0bGUgc2NhbGUgYW5kIGxldCB0aGUgaWNvblxuICAgIC8vIGJlIGEgc2xhdGUgYWNjZW50IHJhdGhlciB0aGFuIGEgZmlmdGggZ3JlZW4gZWxlbWVudCBvbiB0aGUgcGFnZS5cblxuICAgIC5jYXJkLWJvZHkgaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcblxuICAgICAgICA+IHN2ZyB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhlbHBlciBwYXJhZ3JhcGhzIHNpdCB1bmRlciBoZWFkaW5nczsgY2FwIHRoZWlyIHJlYWRpbmcgd2lkdGguXG5cbiAgICAuY2FyZC1ib2R5IGgzICsgcC50ZXh0LW11dGVkIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2NWNoO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9nbyBVcGxvYWQgLSBDdXN0b20gZHJvcHpvbmUgc3R5bGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubG9nby11cGxvYWQtY2FyZCB7XG5cbiAgICAubG9nby1wcmV2aWV3LWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcHpvbmUge1xuICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgI2NiZDVlMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuZHJvcHpvbmUtZHJhZ292ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4wMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERhbmdlciBab25lIC0gc2VyaW91cywgbm90IHRoZWF0cmljYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLWRhbmdlci16b25lIC5jYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0ZXIpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpIHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICAgICAgLmNhcmQtdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KSB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXRibHItZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWxldGUgQ29tcGFueSBNb2RhbCAtIEVuaGFuY2VkIHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuI2RlbGV0ZUNvbXBhbnlNb2RhbCB7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG4gICAgfVxuXG4gICAgLmZvbnQtbW9ub3NwYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjJmMjtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEN1c3RvbSBGaWVsZHMgLSBSZW9yZGVyYWJsZSBsaXN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGQtbGlzdCB7XG5cbiAgICAuY3VzdG9tLWZpZWxkLXJvdyB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTIwbXMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIC5jdXN0b20tZmllbGQtaGFuZGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zb3J0YWJsZS1naG9zdCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IsIDk5IDEwMiAyNDEpLCAwLjA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc29ydGFibGUtY2hvc2VuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgOTkgMTAyIDI0MSksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmN1c3RvbS1maWVsZC1oYW5kbGUge1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLW11dGVkLCAjOTRhM2I4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgY3Vyc29yOiBncmFiYmluZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuc2V0dGluZ3MtcGFnZSB7XG5cbiAgICAgICAgLm5hdi11bmRlcmxpbmUsXG4gICAgICAgIC5zZXR0aW5ncy1kYW5nZXItem9uZSxcbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVzaWduIHRlbXBsYXRlIHBpY2tlciAoU2V0dGluZ3MgPiBEZXNpZ24pXG4vLyBTZWxmLWNvbnRhaW5lZDogZG9lcyBub3QgcmVseSBvbiBUYWJsZXIncyBmb3JtLWltYWdlY2hlY2sgY29tcG9uZW50LiBUaGVcbi8vIHJhZGlvIGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgdG9nZ2xlZCB0aHJvdWdoIGl0cyB3cmFwcGluZyA8bGFiZWw+OyB0aGVcbi8vIHNlbGVjdGVkIHN0YXRlIHNob3dzIGFzIGEgcHJpbWFyeSBib3JkZXIgb24gdGhlIGNhcmQgcGx1cyBhIGNoZWNrIGJhZGdlLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udGVtcGxhdGUtcGlja2VyIHtcblxuICAgIC50ZW1wbGF0ZS1waWNrZXItY2FyZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cbiAgICAgICAgJjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpjaGVja2VkKSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzIwNmJjNCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiLCAzMiwgMTA3LCAxOTYpLCAwLjI1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgMzIsIDEwNywgMTk2KSwgMC41KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgZm9ybS1zdWJtaXR0YWJsZSBhbmQgZm9jdXNhYmxlOyBjbGlja3Mgb25cbiAgICAvLyB0aGUgbGFiZWwgKHRodW1ibmFpbCkgdG9nZ2xlIGl0IG5hdGl2ZWx5LlxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1pbnB1dCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLXRodW1iIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogNCAvIDM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZS1zZWNvbmRhcnksICNmMWY1ZjkpO1xuXG4gICAgICAgIGlmcmFtZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDQwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDQwMCU7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuXG4gICAgICAgICAgICAvLyBUaGUgaWZyYW1lIG11c3QgbmV2ZXIgc3dhbGxvdyBjbGlja3MgbWVhbnQgZm9yIHRoZSBsYWJlbC5cbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgYmFkZ2UgaW4gdGhlIHRodW1ibmFpbCBjb3JuZXIsIG9ubHkgd2hpbGUgc2VsZWN0ZWQuXG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWNoZWNrIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuNXJlbTtcbiAgICAgICAgcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjc1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LCAjMjA2YmM0KTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMTUgMjMgNDIgLyAyNSUpO1xuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uOmhhcygudGVtcGxhdGUtcGlja2VyLWlucHV0OmNoZWNrZWQpIC50ZW1wbGF0ZS1waWNrZXItY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgICYudGVtcGxhdGUtcGlja2VyLWRpc2FibGVkIHtcblxuICAgICAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbiB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRlbXBsYXRlLXBpY2tlci10aHVtYiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGFzaGJvYXJkIFN0eWxlc1xuICpcbiAqIFN0eWxlcyBmb3IgdGhlIHJlZGVzaWduZWQgZGFzaGJvYXJkIGluY2x1ZGluZyBoZXJvIHN0YXRzLFxuICogY2hhcnRzLCBhdHRlbnRpb24gcmVxdWlyZWQgc2VjdGlvbiwgcXVpY2sgYWN0aW9ucywgYW5kIGFjdGl2aXR5IGZlZWQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFUk8gU1RBVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZvdXIgdGlsZXMsIGJ1dCBkZWxpYmVyYXRlbHkgbm90IGZvdXIgZXF1YWwgdGlsZXMuIFRoZSByb3cgaXMgbGFpZCBvdXQgb24gYVxuLy8gbmluZS10cmFjayBncmlkOiBvcmRpbmFyeSB0aWxlcyBzcGFuIHR3byB0cmFja3MsIHRoZSB1cmdlbnQgb25lIHNwYW5zIHRocmVlLlxuLy8gU3BhbnMgYXJlIHVzZWQgaW5zdGVhZCBvZiBwb3NpdGlvbmFsIGNvbHVtbiBzaXplcyBzbyB0aGUgZW1waGFzaXMgZm9sbG93cyB0aGVcbi8vIGAtLXVyZ2VudGAgY2xhc3MgcmF0aGVyIHRoYW4gdGhlIHRpbGUncyBwb3NpdGlvbiBpbiB0aGUgbWFya3VwLlxuXG4uZGFzaGJvYXJkLWhlcm8tc3RhdHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA1NzdweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcik7XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICAvLyBObyBob3ZlciB0cmVhdG1lbnQ6IHRoZSB0aWxlIGlzIGFuIGluZXJ0IGRpdiB3aXRoIG5vIGxpbmsgYW5kIG5vIGhhbmRsZXIuXG4gICAgLy8gTm90aGluZyBoZXJlIHRyYW5zaXRpb25zLCBzbyB0aGVyZSBpcyBub3RoaW5nIGZvciByZWR1Y2VkLW1vdGlvbiB0byB1bmRvLlxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSAxMjAxcHgpIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMjtcbiAgICB9XG5cbiAgICAvLyBTdGF0ZSBpcyBjYXJyaWVkIGJ5IHRoZSBpY29uIHRpbnQsIHRoZSB2YWx1ZSBjb2xvdXIgYW5kIHRoZSBzdXJmYWNlIHRpbnQuXG4gICAgLy8gTmV2ZXIgYSBzaWRlIHN0cmlwZSwgbmV2ZXIgYSBnbG93LlxuICAgIC8vIFRoZSB0aW50IGxpdmVzIG9uIC0tZGFuZ2VyIGFsb25lLCBuZXZlciBvbiAtLXVyZ2VudC4gLS11cmdlbnQgaXMgYXBwbGllZFxuICAgIC8vIHVuY29uZGl0aW9uYWxseSB0byBob2xkIHRoZSBncmlkIHRyYWNrLCBzbyB0aW50aW5nIGl0IHdvdWxkIHBhaW50IGEgcmVkXG4gICAgLy8gY2FyZCBmb3IgYSB1c2VyIHdpdGggemVybyBvdmVyZHVlIGludm9pY2VzOiB0aGUgc2FtZSBkZWZlY3QgYXMgcmVuZGVyaW5nXG4gICAgLy8gYSAkMC4wMCB0b3RhbCBpbiBzdWNjZXNzIGdyZWVuLCBtaXJyb3JlZC5cblxuICAgICYtLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBcIk92ZXJkdWVcIiBpcyB0aGUgb25seSBhY3Rpb25hYmxlIG51bWJlciBpbiB0aGUgcm93LCBzbyBpdCBtdXN0IG5vdCByZWFkIGFzXG4gICAgLy8gaW50ZXJjaGFuZ2VhYmxlIHdpdGggdGhlIHRvdGFscyBiZXNpZGUgaXQ6IGhhbGYgYWdhaW4gYXMgd2lkZSB3aGVyZSB0aGVyZVxuICAgIC8vIGlzIHJvb20gZm9yIGFuIGFzeW1tZXRyaWMgcm93LCBhbmQgYSBmdWxsIHR5cGUgc3RlcCBsYXJnZXIgYXQgZXZlcnkgd2lkdGguXG5cbiAgICAmLS11cmdlbnQge1xuICAgICAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGF0LXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LTN4bCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zdGF0LWNhcmQtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5zdGF0LWljb24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXdhcm5pbmcpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvKTtcbiAgICB9XG59XG5cbi5zdGF0LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibHItdHJhY2tpbmctd2lkZXIpO1xufVxuXG4uc3RhdC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibHItdHJhY2tpbmctdGlnaHQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cbiAgICAvLyBHcmVlbiBtZWFucyBcIlBhaWRcIi4gQSBsaWZldGltZSByZXZlbnVlIGFnZ3JlZ2F0ZSBpcyBub3QgYSBwYXltZW50IHN0YXRlLFxuICAgIC8vIHNvIHRoZXJlIGlzIG5vIGAtLXN1Y2Nlc3NgIGhlcmU7IHBhaWQgc2VtYW50aWNzIGxpdmUgaW4gYC5tb25leS0tcGFpZGAuXG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXItaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIFRoZSB0aWxlIGFscmVhZHkgY2FycmllcyB0aGUgZW1waGFzaXM6IGAuc3RhdC12YWx1ZWAgaXMgdGhlIGxhcmdlc3QgdGV4dCBpblxuICAgIC8vIHRoZSBjYXJkLiBgLm1vbmV5LS10b3RhbGAgc3RlcHBpbmcgaXQgdXAgYW5vdGhlciAxMi41JSBvbiB0b3Agb2YgdGhhdCBpcyB3aGF0XG4gICAgLy8gcHVzaGVkIFwiVVNEIDEyMCw4ODIuMTlcIiBwYXN0IHRoZSBjYXJkIGVkZ2Ugb24gYSBzcGFuLTIgdGlsZS4gVGhlIG1vZGlmaWVyIGlzXG4gICAgLy8ga2VwdCBmb3IgaXRzIHdlaWdodCwgd2hpY2ggdGhlIHRpbGUgc3RpbGwgd2FudHM7IG9ubHkgdGhlIHNpemUgc3RlcCBpcyB1bmRvbmUuXG4gICAgLy8gYC5tb25leWAgaXMgYHdoaXRlLXNwYWNlOiBub3dyYXBgIGJ5IGRlc2lnbiAoYSBjdXJyZW5jeSBjb2RlIG11c3QgbmV2ZXIgYmVcbiAgICAvLyBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIpLCBzbyBhbiBhbW91bnQgdGhhdCBkb2VzIG5vdCBmaXQgb3ZlcmZsb3dzIHJhdGhlclxuICAgIC8vIHRoYW4gd3JhcHBpbmcuIFdpZHRoIGhhcyB0byBiZSB3b24gYmFjayBoZXJlLCBub3QgYWJzb3JiZWQgYXQgcmVuZGVyIHRpbWUuXG5cbiAgICAubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICB9XG59XG5cbi5zdGF0LXN1YnZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQVJUIENPTlRBSU5FUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXNoYm9hcmQtY2hhcnQtY29udGFpbmVyIHtcbiAgICBtaW4taGVpZ2h0OiAyODBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXNoYm9hcmQtcmV2ZW51ZS1jaGFydCB7XG4gICAgaGVpZ2h0OiAyODBweCAhaW1wb3J0YW50O1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LWNvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogMjgwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jaGFydCB7XG4gICAgaGVpZ2h0OiAyODBweCAhaW1wb3J0YW50O1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LWNlbnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcblxuICAgIC8vIENoYXJ0LmpzIHBhaW50cyB0aGUgbGVnZW5kIGluc2lkZSB0aGUgY2FudmFzIGFsb25nIGl0cyBib3R0b20gZWRnZSwgc28gdGhlXG4gICAgLy8gcmluZydzIGNlbnRyZSBzaXRzIGEgbGl0dGxlIGFib3ZlIHRoZSBjb250YWluZXIncyBtaWRwb2ludC4gVGhpcyBudWRnZVxuICAgIC8vIGNvbXBlbnNhdGVzLiBJdCBpcyBhIGZpeGVkIGRpc3RhbmNlIHJhdGhlciB0aGFuIGEgcGVyY2VudGFnZSBvZiB0aGlzXG4gICAgLy8gZWxlbWVudCdzIG93biBoZWlnaHQsIHNvIGNoYW5naW5nIHRoZSB0b3RhbCdzIHR5cGUgc2l6ZSBvciB3cmFwcGluZyBpdHNcbiAgICAvLyBsYWJlbCBjYW4gbm8gbG9uZ2VyIGRyYWcgdGhlIG51bWJlciBvZmYgdGhlIHJpbmcncyBjZW50cmUuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgY2FsYygtNTAlIC0gdmFyKC0tdGJsci1zcGFjZS0xLTUpKSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtdG90YWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRGVtb3RlZCBmcm9tIDMycHg6IHRoZSBsZWFzdCBhY3Rpb25hYmxlIHdpZGdldCBvbiB0aGUgcGFnZSBzaG91bGQgbm90IG93blxuICAgIC8vIGl0cyBsYXJnZXN0IG51bWJlci4gVGhhdCBub3cgYmVsb25ncyB0byB0aGUgb3ZlcmR1ZSBjb3VudC5cbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibHItdHJhY2tpbmctdGlnaHQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS10YmxyLXRyYWNraW5nLXdpZGVyKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lbXB0eS1pY29uIHtcbiAgICAvLyBXYXMgYC0tdGJsci10ZXh0LWxpZ2h0YCAoMi41NjoxIG9uIHN1cmZhY2UpOiB0ZWNobmljYWxseSBkZWNvcmF0aW9uLCBidXRcbiAgICAvLyBjbG9zZSBlbm91Z2ggdG8gaW52aXNpYmxlIHRoYXQgaXQgcmVhZCBhcyBhIHJlbmRlcmluZyBmYXVsdC4gYC0tdGV4dC1tdXRlZGBcbiAgICAvLyBjbGVhcnMgMS40LjExIGZvciBhIG1lYW5pbmdmdWwgZ3JhcGhpYyBhbmQgc3RpbGwgc2l0cyBhIHN0ZXAgbGlnaHRlciB0aGFuXG4gICAgLy8gdGhlIHRleHQgYmVsb3cgaXQsIHNvIHRoZSBpY29uIHN1cHBvcnRzIHRoZSBtZXNzYWdlIGluc3RlYWQgb2YgbGVhZGluZyBpdC5cbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4vLyBBIGZhaWxlZCBxdWVyeSBpcyBub3QgYW4gZW1wdHkgYWNjb3VudCwgYW5kIG11c3QgbmV2ZXIgaW1wZXJzb25hdGUgb25lLiBUaGVcbi8vIGVtcHR5IHN0YXRlIGFib3ZlIGlzIGNhbG0gYW5kIGVuY291cmFnaW5nOyB0aGlzIG9uZSBuYW1lcyBhIHByb2JsZW0gYW5kIG9mZmVyc1xuLy8gYSB3YXkgb3V0IG9mIGl0LiBDb2xvdXIgYW1wbGlmaWVzIHRoZSBkaXN0aW5jdGlvbiwgaXQgbmV2ZXIgY2FycmllcyBpdCBhbG9uZTpcbi8vIHRoZSB0ZXh0IGxhYmVsIGRvZXMgdGhhdC5cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS04KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItaWNvbiB7XG4gICAgLy8gQ29udGFpbmVkIGluIGEgdGludGVkIG1lZGFsbGlvbiwgdW5saWtlIHRoZSBlbXB0eSBzdGF0ZSdzIGJhcmUgaWNvbi4gVGhpc1xuICAgIC8vIGlzIHRoZSBzYW1lIFwic3RhdGUgbWVkYWxsaW9uXCIgc2hhcGUgYC5hdHRlbnRpb24tZW1wdHktaWNvbmAgYWxyZWFkeSB1c2VzLFxuICAgIC8vIHNvIHRoZSB0d28gc3RhdGVzIGFyZSB0b2xkIGFwYXJ0IGJ5IGZvcm0gYmVmb3JlIGNvbG91ciBpcyByZWFkIGF0IGFsbC5cbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvci10aXRsZSB7XG4gICAgLy8gSGVhdmllciBhbmQgZGFya2VyIHRoYW4gYC5kYXNoYm9hcmQtY2hhcnQtZW1wdHktdGV4dGA6IGEgc3RhdGVtZW50IG9mIHdoYXRcbiAgICAvLyB3ZW50IHdyb25nLCBub3QgYSBzaHJ1Zy5cbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtMSk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgbWF4LXdpZHRoOiA0MmNoO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVRURU5USU9OIFJFUVVJUkVEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXR0ZW50aW9uLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS1pY29uIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uYXR0ZW50aW9uLWVtcHR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbiB7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibHItdHJhY2tpbmctd2lkZXIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci13YXJuaW5nLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1iYWRnZSB7XG4gICAgLy8gV2FzIDExcHgsIG9mZi1yYW1wLiBCYWRnZSB0ZXh0IGlzIHRoZSBkb2N1bWVudGVkIExhYmVsIHN0ZXAgKDEycHgpLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhzKTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci13YXJuaW5nLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1pbmZvLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1pdGVtcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLmF0dGVudGlvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1kYW5nZXItbGlnaHRlcik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hdHRlbnRpb24taXRlbS1tYWluIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBmbGV4OiAxO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0taWQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG59XG5cbi5hdHRlbnRpb24taXRlbS1jbGllbnQge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5hdHRlbnRpb24taXRlbS1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tYW1vdW50IHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5hdHRlbnRpb24taXRlbS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVSUNLIEFDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5xdWljay1hY3Rpb25zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5xdWljay1hY3Rpb24tYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS10YmxyLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1tZCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnktbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1hY2NlbnQtbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWFjY2VudC1kYXJrKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYWNjZW50LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWluZm8tbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWluZm8taG92ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1pbmZvLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MtaG92ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAgICAgJixcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucXVpY2stYWN0aW9uLWljb24ge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5xdWljay1hY3Rpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXNlbWlib2xkKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ1RJVklUWSBUSU1FTElORVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4uYWN0aXZpdHktdGltZWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmFjdGl2aXR5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCkgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1pY29uIHtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgICYtLXBheW1lbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICB9XG5cbiAgICAmLS1pbnZvaWNlLFxuICAgICYtLWludm9pY2Vfc2VudCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2FjY2VwdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfZGVjbGluZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJi0tcmVjdXJyaW5nX2dlbmVyYXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWluZm8pO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi5hY3Rpdml0eS1kZXNjcmlwdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuXG4uYWN0aXZpdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgLy8gV2FzIDE0cHgsIG9mZi1yYW1wLiBCb2R5IGlzIDE1cHgsIGFuZCBpdCBwYWlycyB3aXRoIHRoZSAxM3B4IG1vbm8gZG9jLWxpbmtcbiAgICAvLyBuZXN0ZWQgaW5zaWRlIGl0IGV4YWN0bHkgYXMgdGhlIHJhbXAgaW50ZW5kcy4gSXQgYWxzbyBrZWVwcyB0aGlzIHJvdyBhIHN0ZXBcbiAgICAvLyBhYm92ZSBgLmFjdGl2aXR5LWRldGFpbHNgIGJlbG93LCB3aGljaCB0aGUgMTNweCBzdGVwIHdvdWxkIGhhdmUgZmxhdHRlbmVkLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xufVxuXG4uYWN0aXZpdHktZG9jLWxpbmsge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1zbSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWRldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbn1cblxuLmFjdGl2aXR5LWNsaWVudC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgIH1cblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1zZXBhcmF0b3Ige1xuICAgIC8vIFRoaXMgaXMgdGV4dCwgbm90IGEgcnVsZSBvciBhIGdyYXBoaWMuIGAtLXRibHItdGV4dC1saWdodGAgaXMgMi41NjoxIG9uIHRoZVxuICAgIC8vIGNhcmQgc3VyZmFjZSBhbmQgZmFpbHMgQUEgb3V0cmlnaHQuXG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG59XG5cbi5hY3Rpdml0eS1hbW91bnQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmFjdGl2aXR5LXRpbWUge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xufVxuXG4iLCIvKipcbiAqIENsaWVudCBQYWdlIFN0eWxlc1xuICpcbiAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBDbGllbnQgdmlldyBwYWdlLlxuICogRm9sbG93cyB0aGUgZGVzaWduIHN5c3RlbSB0b2tlbnMgYW5kIG1vZGVybiBTYWFTIGFlc3RoZXRpYy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgSEVSTyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtaGVybyB7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tdGJsci1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG59XG5cbi5jbGllbnQtaGVyby10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5jbGllbnQtaGVyby1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2xpZW50LWhlcm8tbWV0YS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEtNSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVQgQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zdGF0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1zdGF0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLy8gSW5jb21lIHJlY2VpdmVkIGlzIGEgcG9zaXRpdmUgc3RhdGU7IHN1Y2Nlc3MgZ3JlZW4gZWFybnMgaXRzIHBsYWNlLlxuXG4uY2xpZW50LXN0YXQtdmFsdWUtLXN1Y2Nlc3Mge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXN1Y2Nlc3MpO1xufVxuXG4vLyBcIk91dHN0YW5kaW5nXCIgbWVhbnMgb3dlZCwgbm90IG92ZXJkdWUuIEFtYmVyLCBub3QgZGFuZ2VyIHJlZC5cbi8vIEtlcHQgLS1kYW5nZXIgYWxpYXMgc28gYW55IGxlZ2FjeSBjYWxsZXJzIHN0aWxsIHJlbmRlciBtZWFuaW5nZnVsbHkuXG5cbi5jbGllbnQtc3RhdC12YWx1ZS0td2FybmluZyxcbi5jbGllbnQtc3RhdC12YWx1ZS0tZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci13YXJuaW5nKTtcbn1cblxuLmNsaWVudC1zdGF0LWJhZGdlcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBDUkVESVQgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNyZWRpdC1jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNSk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNyZWRpdC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWluZm8tbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXRibHItaW5mbyk7XG59XG5cbi5jbGllbnQtY3JlZGl0LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jbGllbnQtY3JlZGl0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUJTIE5BVklHQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC10YWJzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLyogLm5hdi10YWJzIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICAgICAgbWFyZ2luOiAwIGNhbGMoLTEgKiB2YXIoLS10YmxyLXNwYWNlLTYpKTtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgIH0gKi9cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KSwgYm9yZGVyLWNvbG9yIHZhcigtLXRibHItdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2IoNDYgMTUwIDU4IC8gMzAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWRnZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgcGFkZGluZzogMC4yZW0gMC41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFiLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gSEVBREVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5jbGllbnQtc2VjdGlvbi10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRBQ1QgJiBBRERSRVNTIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1jYXJkLFxuLmNsaWVudC1hZGRyZXNzLWNhcmQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXRibHItdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXNoYWRvdy1tZCk7XG4gICAgfVxuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdC1hdmF0YXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtbmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbi1zbSB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMSk7XG59XG5cbi5idG4tZ2hvc3Qtc2Vjb25kYXJ5IHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS0xMDApO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS10YmxyLXJpbmctcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIERJU1BMQVlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1hZGRyZXNzLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcbn1cblxuLmNsaWVudC1hZGRyZXNzLW1hcC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1leHRyYSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMSk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLWxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5jbGllbnQtY29udGFjdC1leHRyYS12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ1VTVE9NIEZJRUxEUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGRzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmN1c3RvbS1maWVsZHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0xKTtcbn1cblxuLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxNDBweCwgMzAlKSAxZnI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uY3VzdG9tLWZpZWxkcy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMS01KTtcbiAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbn1cblxuLmN1c3RvbS1maWVsZHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuXG4gICAgLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5jbGllbnQtaGVyby10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5jbGllbnQtc3RhdC12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5jbGllbnQtaGVyby1tZXRhIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNsaWVudC10YWJzLWNhcmQgLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luOiAwIGNhbGMoLTEgKiB2YXIoLS10YmxyLXNwYWNlLTQpKTtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2xpZW50LXRhYnMtY2FyZCAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmNsaWVudC1oZXJvIC5kcm9wZG93bixcbiAgICAuY2xpZW50LWhlcm8gLmJ0bixcbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIC5idG4sXG4gICAgLmJ0bi1naG9zdC1zZWNvbmRhcnksXG4gICAgLmJ0bi1naG9zdC1kYW5nZXIsXG4gICAgLmNsaWVudC1mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERERERDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEludm9pY2UgVmlldyBQYWdlXG4gKlxuICogQWxsIHNoYXJlZCBkb2N1bWVudCB2aWV3IHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzLlxuICogSW52b2ljZS1zcGVjaWZpYyByZWN1cnJpbmcgaW52b2ljZSBzdHlsZXMgYXJlIGFsc28gaW4gdGhhdCBzaGFyZWQgY29tcG9uZW50LlxuICovXG5cbi8vIFJlY3VycmluZyBpbnZvaWNlIHNpZGViYXI6IHNjaGVkdWxlICYgZ2VuZXJhdGVkIGludm9pY2VzXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbn1cblxuLnNjaGVkdWxlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LW11dGVkKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNjaGVkdWxlLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAvLyBEYXRlcyBhbmQgY291bnRzIGxpbmUgdXAgY2xlYW5seSBkb3duIHRoZSBzY2hlZHVsZSBzaWRlYmFyXG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLm9jY3VycmVuY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtZGF0ZSB7XG4gICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtc20pO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaWQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgSW52b2ljZSBWaWV3XG4gKlxuICogSW52b2ljZS1zcGVjaWZpYyBzdHlsZXMgZm9yIHRoZSBwdWJsaWMtZmFjaW5nIGludm9pY2UgcGFnZS5cbiAqIEFsbCBzaGFyZWQgZXh0ZXJuYWwgZG9jdW1lbnQgc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzLlxuICovXG5cbi8vIEludm9pY2Utc3BlY2lmaWMgYWN0aW9uIGJ1dHRvblxuXG4uYnRuLWludm9pY2UtYWN0aW9uIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gU2NyZWVuIHJlYWRlciBvbmx5IHRleHRcblxuLnNyLW9ubHkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuICAgIGhlaWdodDogMXB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY2xpcC1wYXRoOiBpbnNldCg1MCUpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xufVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmJ0bi1pbnZvaWNlLWFjdGlvbjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBRdW90ZSBWaWV3XG4gKlxuICogQWxsIHNoYXJlZCBleHRlcm5hbCBkb2N1bWVudCBzdHlsZXMgKGluY2x1ZGluZyBxdW90ZSBzdHlsZXMpIGFyZSBpblxuICogY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2Nzcy5cbiAqXG4gKiBUaGVyZSBhcmUgY3VycmVudGx5IG5vIHF1b3RlLXNwZWNpZmljIHN0eWxlcyBiZXlvbmQgd2hhdCBpcyBzaGFyZWQuXG4gKi9cbiIsIi8qKlxuICogUXVvdGUgVmlldyBQYWdlIC0gUXVvdGUtU3BlY2lmaWMgU3R5bGVzXG4gKlxuICogU2hhcmVkIGRvY3VtZW50IGxheW91dCBpcyBpbiBjb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MuXG4gKiBUaGlzIGZpbGUgaXMgaW50ZW50aW9uYWxseSBtaW5pbWFsIC0gYWxsIHNoYXJlZCBkb2MgdmlldyBzdHlsZXMgYXJlIGluIHRoZSBjb21wb25lbnQuXG4gKi9cblxuLy8gTm8gcXVvdGUtc3BlY2lmaWMgb3ZlcnJpZGVzIG5lZWRlZCBiZXlvbmQgd2hhdCBfZG9jdW1lbnQtdmlldy5zY3NzIHByb3ZpZGVzLlxuIiwiLyoqXG4gKiBQYXltZW50IE1hcmtldHBsYWNlIFN0eWxlc1xuICogT25seSBwYXltZW50LXNwZWNpZmljIHN0eWxlcy4gU2hhcmVkIG1hcmtldHBsYWNlIHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBheW1lbnQgTWFya2V0cGxhY2UgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1hcmtldHBsYWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS10YmxyLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlLXNtIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgQ2FyZHMgR3JpZFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZ2F0ZXdheS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0zKTtcbn1cblxuLmdhdGV3YXktY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblxuICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHZhcigtLXRibHItcHJpbWFyeSkgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb25maWd1cmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMCUsIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMyk7XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXN1Y2Nlc3MtbGlnaHQpIDAlLCB2YXIoLS10YmxyLXN1Y2Nlc3MpIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXRibHItc3VjY2Vzcy1yZ2IpLCAwLjA0KSAxMDAlKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY3VzdG9tLWdhdGV3YXkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4wMSkgMTAwJSk7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICAgICAgLy8gQWRkIGhvcml6b250YWwgZGl2aWRlciBhZnRlciBjdXN0b20gZ2F0ZXdheVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKC0xICogdmFyKC0tdGJsci1zcGFjZS02KSAvIDIpO1xuICAgICAgICAgICAgbGVmdDogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgICAgIHJpZ2h0OiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgdmFyKC0tdGJsci1ib3JkZXIpIDE1JSxcbiAgICAgICAgICAgICAgICB2YXIoLS10YmxyLWJvcmRlcikgODUlLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaW5zZXQ6IC0ycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXByaW1hcnkpLCB2YXIoLS10YmxyLXByaW1hcnktZGFyaykpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC4wODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5KSAwJSwgdmFyKC0tdGJsci1wcmltYXJ5LWRhcmspIDEwMCUpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5nYXRld2F5LWNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTJweDtcbiAgICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLWdyYXktMTAwKSAwJSwgdmFyKC0tdGJsci1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAudGV4dC1tdXRlZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0yKSB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Utc20ge1xuICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFjdGl2ZSBNZXRob2RzIFBhbmVsIC0gUmlnaHQgU2lkZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWN0aXZlLW1ldGhvZHMtcGFuZWwge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgID4gLmQtZmxleCA+IC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zNXJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1ncmF5LTEwMCkgMCUsIHZhcigtLXRibHItZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxufVxuXG4uYWN0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG59XG5cbi5hY3RpdmUtbWV0aG9kLWNhcmQge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS01KTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLWdyYXktMTAwKSAwJSwgdmFyKC0tdGJsci1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgICYuYmctc3VjY2VzcyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLXN1Y2Nlc3MpIDAlLCB2YXIoLS10YmxyLXN1Y2Nlc3MtaG92ZXIpIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLXRibHItc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5iZy1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1ncmF5LTQwMCkgMCUsIHZhcigtLXRibHItZ3JheS01MDApIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1tZCk7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMS41cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiBGb3JtIFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSB7XG4gICAgLy8gRml4IGNsb3NlIGJ1dHRvbiBhbGlnbm1lbnQgaW4gY2FyZCBoZWFkZXJcblxuICAgIC5jYXJkLWhlYWRlciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4taWNvbiB7XG4gICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgc3BhY2luZyBiZXR3ZWVuIGZvcm0gc3dpdGNoIGZpZWxkcyAodGhlIGNvbnRhaW5lcnMgd2l0aCBiYWNrZ3JvdW5kcylcblxuICAgIGZvcm0ge1xuXG4gICAgICAgIC5mb3JtLXN3aXRjaC1maWVsZCArIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHNwYWNpbmcgYmV0d2VlbiByZWd1bGFyIGZvcm0gZmllbGRzXG5cbiAgICAgICAgLm1iLTMgKyAubWItMyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXltZW50IENvbmZpZ3VyYXRpb24gTW9kYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbW9kYWwtYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA1MCUpO1xuICAgIHotaW5kZXg6IDEwNDA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLnBheW1lbnQtbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiAxMDUwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLnBheW1lbnQtbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksXG4gICAgICAgICAgICAgICAgMCAxMHB4IDEwcHggLTVweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA5MjBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tdGJsci1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLnBheW1lbnQtbW9kYWwtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnBheW1lbnQtbW9kYWwtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXhsKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ucGF5bWVudC1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LW1vZGFsLWJvZHkge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuXG4gICAgLy8gUmVtb3ZlIGNhcmQgc3R5bGluZyBmcm9tIFBheW1lbnRTZXR0aW5ncyB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1vYmlsZSBhZGFwdGF0aW9uc1xuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAucGF5bWVudC1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tb2RhbC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAtbW9iaWxlIHtcblxuICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUHJldmVudCBib2R5IHNjcm9sbCB3aGVuIG1vZGFsIGlzIG9wZW5cblxuYm9keTpoYXMoLnBheW1lbnQtbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgUmVzcG9uc2l2ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5hY3RpdmUtbWV0aG9kLWNhcmQge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAgICAgICAgIC5idG4tZ3JvdXAsXG4gICAgICAgICAgICAuZC1mbGV4LmdhcC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnMgb24gbW9iaWxlXG5cbiAgICAucGF5bWVudC1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXRibHItc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS10YmxyLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5wYXltZW50LW1hcmtldHBsYWNlIHtcblxuICAgICAgICAubmF2LXRhYnMsXG4gICAgICAgIC5tYXJrZXRwbGFjZS1wYW5lbCxcbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aXZlLW1ldGhvZC1jYXJkIHtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgR3JvdXBzIChjYXRlZ29yaXNlZCBtYXJrZXRwbGFjZSBzZWN0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdhdGV3YXktZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNCk7XG5cbiAgICAuZ2F0ZXdheS1ncm91cC1oZWFkZXIge1xuXG4gICAgICAgIGg2IHtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDdXN0b20gXCJjcmVhdGUgeW91ciBvd25cIiBjYXJkIHNpdHMgaW5zaWRlIHRoZSBvZmZsaW5lIGdyb3VwIG5vdywgc28gdGhlXG4gICAgLy8gbGVnYWN5IGZ1bGwtd2lkdGggZGl2aWRlciBpdCB1c2VkIHRvIGRyYXcgaXMgbm8gbG9uZ2VyIG5lZWRlZC5cblxuICAgIC5pcy1jdXN0b20tZ2F0ZXdheSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTGVnYWN5IC8gYWR2YW5jZWQgcHJvY2Vzc29ycyBhcmUgY29sbGFwc2VkIGF3YXkgYnkgZGVmYXVsdC5cblxuLmdhdGV3YXktZ3JvdXAtLW1vcmUge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1saWdodCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXRibHItc3BhY2UtMyk7XG5cbiAgICA+IHN1bW1hcnkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciBoNiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gXCJBYm91dCB0aGlzIGdhdGV3YXlcIiBndWlkYW5jZSBwYW5lbCAoaW4gdGhlIGNvbmZpZyBtb2RhbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZ2F0ZXdheS1hYm91dCB7XG5cbiAgICAuYWxlcnQtdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgIH1cblxuICAgIC5wYXltZW50LWdhdGV3YXktY29tcGFyZSB7XG5cbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBOb3RpZmljYXRpb24gTWFya2V0cGxhY2UgU3R5bGVzXG4gKiBOb3RpZmljYXRpb24tc3BlY2lmaWMgc3R5bGVzLiBTaGFyZWQgbWFya2V0cGxhY2Ugc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTm90aWZpY2F0aW9uIE1hcmtldHBsYWNlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS0zKSB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXRibHItdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Utc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWFya2V0cGxhY2UgVGFicyAoU01TL0NoYXQpIC0gSW5zaWRlIFBhbmVsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5tYXJrZXRwbGFjZS10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMykgdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtc20pO1xuXG4gICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeS1ob3Zlcik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBTZWN0aW9uIEhlYWRlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBDYXJkcyBHcmlkXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1ncmlkIHtcbiAgICAvLyBDb250YWluZXIgZm9yIHRoZSBmdWxsIGludGVncmF0aW9uIGFyZWEgKG5vIGdyaWQgaGVyZSlcbn1cblxuLmludGVncmF0aW9uLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmludGVncmF0aW9uLWNhcmRzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gSW50ZWdyYXRpb24gQ2FyZCAtIFZlcnRpY2FsIExheW91dFxuXG4uaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItcHJpbWFyeS1saWdodCksIHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiksIDAuMikpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4yNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWNvbmZpZ3VyZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXRibHItc3VjY2Vzcy1yZ2IpLCAwLjAzKSwgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wMSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMjUpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1zdWNjZXNzLWxpZ2h0KSwgdmFyKC0tdGJsci1zdWNjZXNzKSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS10YmxyLXN1Y2Nlc3MtcmdiKSwgMC4wNSksIHJnYmEodmFyKC0tdGJsci1zdWNjZXNzLXJnYiksIDAuMDIpKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1zdWNjZXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1ncmF5LTEwMCksIHZhcigtLXRibHItZ3JheS0yMDApKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbGcpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiKDAgMCAwIC8gNiUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tdGJsci1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtYWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGJsci10ZXh0LXNtKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtMikgdmFyKC0tdGJsci1zcGFjZS0zKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTEpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmVkIEludGVncmF0aW9ucyBQYW5lbCAtIFJpZ2h0IFNpZGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb25zLXBhbmVsIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10YmxyLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICA+IC5kLWZsZXggPiAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRibHItZ3JheS0xMDApIDAlLCB2YXIoLS10YmxyLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cbn1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb25zLWxpc3Qge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xufVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10YmxyLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItc3VyZmFjZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4yKTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tbWV0aG9kLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdGJsci1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjA2MjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1tZXRob2QtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10YmxyLWdyYXktMTAwKSAwJSwgdmFyKC0tdGJsci1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXRibHItc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS10YmxyLXNwYWNlLTIpIHZhcigtLXRibHItc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGJsci1yYWRpdXMtbWQpO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDEuNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24gTW9kYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYigwIDAgMCAvIDUwJSk7XG4gICAgei1pbmRleDogMTA0MDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA1MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRibHItcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksXG4gICAgICAgICAgICAgICAgMCAxMHB4IDEwcHggLTVweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tdGJsci1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXRibHItdGV4dC14bCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtYm9keSB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXRibHItc3BhY2UtNik7XG5cbiAgICAvLyBSZW1vdmUgY2FyZCBzdHlsaW5nIGZyb20gTm90aWZpY2F0aW9uVHJhbnNwb3J0Q29uZmlndXJhdGlvbiB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tdGJsci1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlcik7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS10YmxyLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBSZXNwb25zaXZlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tdGJsci1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS10YmxyLXNwYWNlLTMpO1xuXG4gICAgICAgICAgICAuYnRuLWdyb3VwLFxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb3Jpem9udGFsIHNjcm9sbGluZyB0YWJzIG9uIG1vYmlsZVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXRibHItc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS10YmxyLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXRibHItc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLW1vZGFsLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSB7XG5cbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByZXZlbnQgYm9keSBzY3JvbGwgd2hlbiBtb2RhbCBpcyBvcGVuXG5cbmJvZHk6aGFzKC5ub3RpZmljYXRpb24tbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uge1xuXG4gICAgICAgIC5uYXYtdGFicyxcbiAgICAgICAgLm1hcmtldHBsYWNlLXBhbmVsLFxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/