/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./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
 * with the `--swp-` prefix for runtime theming support.
 */
:root {
  --swp-primary: #2e963a;
  --swp-primary-rgb: 46, 150, 58;
  --swp-primary-hover: #268032;
  --swp-primary-dark: #1f6c29;
  --swp-primary-light: #e8f5e9;
  --swp-primary-lighter: #f1f9f2;
  --swp-secondary: #f0a015;
  --swp-secondary-rgb: 240, 160, 21;
  --swp-secondary-hover: #d89012;
  --swp-secondary-dark: #c8820e;
  --swp-secondary-light: #fff8e1;
  --swp-secondary-lighter: #fffcf0;
  --swp-gray-50: #f8fafc;
  --swp-gray-100: #f1f5f9;
  --swp-gray-200: #e2e8f0;
  --swp-gray-300: #cbd5e1;
  --swp-gray-400: #94a3b8;
  --swp-gray-500: #64748b;
  --swp-gray-600: #475569;
  --swp-gray-700: #334155;
  --swp-gray-800: #1e293b;
  --swp-gray-900: #0f172a;
  --swp-success: #10b981;
  --swp-success-rgb: 16, 185, 129;
  --swp-success-hover: #059669;
  --swp-success-dark: #047857;
  --swp-success-light: #d1fae5;
  --swp-success-lighter: #ecfdf5;
  --swp-danger: #ef4444;
  --swp-danger-rgb: 239, 68, 68;
  --swp-danger-hover: #dc2626;
  --swp-danger-dark: #b91c1c;
  --swp-danger-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --swp-info-light: #dbeafe;
  --swp-info-lighter: #eff6ff;
  --swp-body-bg: #f4f6f8;
  --swp-surface: #ffffff;
  --swp-surface-hover: #f8fafc;
  --swp-surface-elevated: #ffffff;
  --swp-surface-overlay: rgb(15 23 42 / 50%);
  --swp-body-color: var(--swp-text-primary);
  --swp-text-primary: #1e293b;
  --swp-text-secondary: #475569;
  --swp-text-muted: #64748b;
  --swp-text-light: #94a3b8;
  --swp-text-inverse: #ffffff;
  --swp-border: #e2e8f0;
  --swp-border-light: #f1f5f9;
  --swp-border-dark: #cbd5e1;
  --swp-link-color: var(--swp-primary);
  --swp-link-hover-color: var(--swp-primary-dark);
}

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

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

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

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

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

:root {
  --swp-card-bg: var(--swp-surface);
  --swp-card-border: var(--swp-border-light);
  --swp-card-radius: var(--swp-radius-lg);
  --swp-card-shadow: var(--swp-shadow-sm);
  --swp-card-padding: var(--swp-space-6);
  --swp-card-header-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-card-footer-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-input-bg: var(--swp-surface);
  --swp-input-border: var(--swp-border);
  --swp-input-radius: var(--swp-radius-md);
  --swp-input-padding-y: var(--swp-space-2-5);
  --swp-input-padding-x: var(--swp-space-4);
  --swp-input-focus-border: var(--swp-primary);
  --swp-input-focus-ring: var(--swp-ring-primary);
  --swp-btn-radius: var(--swp-radius-md);
  --swp-btn-padding-y: var(--swp-space-2-5);
  --swp-btn-padding-x: var(--swp-space-4);
  --swp-btn-font-weight: 500;
  --swp-modal-bg: var(--swp-surface);
  --swp-modal-radius: var(--swp-radius-xl);
  --swp-modal-shadow: var(--swp-shadow-xl);
  --swp-modal-padding: var(--swp-space-6);
  --swp-table-bg: var(--swp-surface);
  --swp-table-border: var(--swp-border-light);
  --swp-table-header-bg: var(--swp-gray-50);
  --swp-table-row-hover-bg: var(--swp-gray-50);
  --swp-table-cell-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-alert-radius: var(--swp-radius-md);
  --swp-alert-padding: var(--swp-space-4);
  --swp-money-currency: var(--swp-text-secondary);
  --swp-money-neutral: var(--swp-text-primary);
  --swp-money-paid: var(--swp-success-dark);
  --swp-money-overdue: var(--swp-danger-dark);
  --swp-money-total-scale: 1.125;
  --swp-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 {
  --swp-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';
  --swp-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --swp-font-family: var(--swp-font-sans);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.text-link {
  color: var(--swp-link-color);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.text-link:hover {
  color: var(--swp-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(--swp-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(--swp-space-8);
  padding: var(--swp-space-6) 0;
}

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

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

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

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

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

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

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

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

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

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

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

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

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-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(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-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(--swp-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

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

@media (width <= 767.98px) {
  .form-page {
    padding: var(--swp-space-4);
  }
  .form-page-header {
    padding: var(--swp-space-4) 0;
    margin-bottom: var(--swp-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--swp-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(--swp-space-4) var(--swp-space-4) var(--swp-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--swp-space-4);
  }
  .form-page-actions-inner {
    gap: var(--swp-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(--swp-space-6);
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-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(--swp-space-4);
}

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

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

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

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

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

.doc-view-header-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-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(--swp-space-1);
}

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

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

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

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

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

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

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-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(--swp-gray-100);
  color: var(--swp-text-secondary);
}

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

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

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

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

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-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(--swp-font-medium, 500);
  color: var(--swp-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.doc-party-detail .detail-value {
  color: var(--swp-text-secondary);
}
.doc-party-detail a.detail-value {
  color: var(--swp-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

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

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-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(--swp-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--swp-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border-radius: var(--swp-radius-md);
    border: 1px solid var(--swp-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--swp-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--swp-space-4);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  border-bottom: 1px solid var(--swp-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--swp-text-primary);
  font-weight: var(--swp-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(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--swp-space-2) 0;
    border-bottom: 1px solid var(--swp-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--swp-text-xs, 0.75rem);
    font-weight: var(--swp-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--swp-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--swp-space-3);
    margin-bottom: var(--swp-space-2);
    border-bottom: 2px solid var(--swp-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--swp-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(--swp-space-6);
  padding-top: 0;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.related-invoice-status {
  margin-top: var(--swp-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(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--swp-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-primary, #2e963a);
  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-primary, #2e963a);
  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;
  }
  .text-primary,
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #2e963a !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #10b981 !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(--swp-space-4);
  max-height: calc(100vh - var(--swp-space-16));
  overflow-y: auto;
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--swp-gray-300);
  border-radius: var(--swp-radius-full);
  transition: var(--swp-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--swp-gray-400);
}

.marketplace-header h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-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(--swp-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--swp-text-muted);
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.1);
  border-color: var(--swp-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--swp-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(--swp-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

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

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

.delete-confirmation-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-bottom-left-radius: var(--swp-radius-lg);
  border-bottom-right-radius: var(--swp-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(--swp-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: #9aa0ac;
  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: #ffffff;
  border: 1px solid #d0d3d8;
  border-radius: 6px;
  font-size: 0.875rem;
  color: #354052;
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: #2e963a;
  box-shadow: 0 0 0 3px rgba(46, 150, 58, 0.12);
  background-color: #ffffff;
  outline: none;
}
.global-search-input::placeholder {
  color: #9aa0ac;
}
.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: #9aa0ac;
  background-color: #f5f7fb;
  border: 1px solid #e6e7e9;
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid #e0e3e8;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #adb5bd;
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: #495057;
  border-color: #9aa0ac;
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: #f5f7fb;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: #354052;
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid #2e963a;
}
.search-help-example code {
  font-size: 0.8rem;
  color: #1a56db;
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: #9aa0ac;
}

.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: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  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: #9aa0ac;
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: #ffffff;
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: #e0e3e8;
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid #f0f2f5;
}
.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: #9aa0ac;
}

.search-result-item.is-active .search-result-link {
  background-color: #f5f7fb;
}
.search-result-item:hover .search-result-link {
  background-color: #f5f7fb;
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: #354052;
  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: 8px;
}
.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: #354052;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: #9aa0ac;
  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: #354052;
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: #9aa0ac;
  background-color: #ffffff;
}
.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-danger, #d63939);
  text-align: center;
  background-color: #ffffff;
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: #e8f0fe;
  color: #1a56db;
  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 #f0f2f5;
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  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: #9aa0ac;
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: #354052;
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: #f5f7fb;
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: #6c757d;
  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 {
  position: relative;
  display: block;
}
.datagrid > .alert {
  margin-bottom: var(--swp-space-4);
}

.datagrid-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}

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

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

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

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

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

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

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--swp-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--swp-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(--swp-space-1);
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}

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

.datagrid-filter-panel {
  width: 320px;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-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(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

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

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

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

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-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(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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(--swp-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-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(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--swp-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(--swp-border-dark);
  background-color: var(--swp-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--swp-primary);
  border-color: var(--swp-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--swp-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(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-primary);
  cursor: pointer;
  margin-left: var(--swp-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--swp-space-1);
}

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

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  border-color: var(--swp-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-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(--swp-text-xs);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--swp-space-1);
  padding-right: var(--swp-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(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-2);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--swp-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(--swp-text-sm);
  color: var(--swp-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

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

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

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

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

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

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

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--swp-gray-50);
  color: var(--swp-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(--swp-text-secondary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--swp-primary);
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
}

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

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

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

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-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(--swp-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--swp-primary);
}

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

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--swp-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--swp-space-3) var(--swp-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--swp-border-light);
}
.datagrid-table th {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--swp-gray-50);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--swp-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--swp-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--swp-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(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-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(--swp-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(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium);
  letter-spacing: 0;
}
.datagrid-table tbody .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--swp-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--swp-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--swp-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(--swp-space-1);
}

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

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

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

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

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

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

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

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-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(--swp-space-4);
  padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-3) var(--swp-space-6);
  background: var(--swp-gray-900);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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(--swp-space-2);
  margin-right: var(--swp-space-1);
  font-size: var(--swp-text-xs);
  color: var(--swp-gray-900);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}

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

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: background-color var(--swp-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(--swp-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(--swp-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

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

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

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

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--swp-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(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary-light);
  font-weight: var(--swp-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--swp-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

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

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--swp-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(--swp-space-2) var(--swp-space-3);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--swp-space-2);
}

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

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

.datagrid-detail-content {
  padding: var(--swp-space-4) var(--swp-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--swp-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(--swp-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--swp-white);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--swp-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border-light);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--swp-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--swp-space-2) var(--swp-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--swp-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(--swp-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(--swp-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

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

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

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

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

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

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

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

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

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

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-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(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-4);
  font-weight: var(--swp-font-medium);
  border-style: dashed;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-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(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--swp-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(--swp-space-24);
}

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

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

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

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

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

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

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-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(--swp-space-2);
}

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

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

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-family: var(--swp-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(--swp-radius-sm);
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-light);
}

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

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

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

.selected-client-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-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(--swp-space-3);
}

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

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

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

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

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

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

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--swp-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(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

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

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

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

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

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

.billing-items-header-row {
  display: grid;
  grid-template-columns: minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border);
}
.billing-items-header-row > div {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-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: 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: 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;
  }
}

.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: 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;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
  align-items: start;
  transition: background var(--swp-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--swp-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 .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(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-color: var(--swp-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(--swp-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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 .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border: 1px solid var(--swp-border);
    border-radius: var(--swp-radius-md);
  }
  .billing-item-row:hover {
    background: var(--swp-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--swp-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--swp-text-xs);
    font-weight: var(--swp-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    margin-bottom: var(--swp-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(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--swp-space-2);
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--swp-text-lg);
    font-weight: var(--swp-font-semibold);
    color: var(--swp-primary);
  }
}

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

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

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

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--swp-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(--swp-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(--swp-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(--swp-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background var(--swp-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--swp-danger);
  background: rgba(var(--swp-danger-rgb), 0.08);
}

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

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

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

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

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

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

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

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--swp-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--swp-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(--swp-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-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(--swp-space-4);
}

.save-button-group {
  box-shadow: var(--swp-shadow-primary);
  border-radius: var(--swp-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(--swp-space-3) var(--swp-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(--swp-space-2);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
  border: 1px solid var(--swp-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--swp-primary);
}
.save-button-group:hover {
  box-shadow: var(--swp-shadow-primary-lg);
}

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

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

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

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

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

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
  border-top: 1px dashed var(--swp-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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(--swp-space-4);
    padding-bottom: var(--swp-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-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(--swp-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--swp-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(--swp-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-block-end: var(--swp-space-5);
  padding-block-end: var(--swp-space-4);
  border-block-end: 1px solid var(--swp-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(--swp-radius-md);
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-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(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--swp-space-3);
  margin-block-start: var(--swp-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(--swp-space-1);
  padding: var(--swp-space-3);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-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(--swp-primary);
  background: var(--swp-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(--swp-primary);
  background: var(--swp-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(--swp-space-2);
  margin-block-start: var(--swp-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(--swp-space-3) var(--swp-space-2);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-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(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff !important;
}

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

.recurring-variables-help {
  margin-block-start: var(--swp-space-3);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-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(--swp-info-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--swp-space-3);
  padding-block-start: var(--swp-space-3);
  border-block-start: 1px solid var(--swp-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-block-end: var(--swp-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--swp-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) 0;
  font-size: var(--swp-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-primary);
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--swp-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border-inline-start: 3px solid var(--swp-info);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--swp-space-2);
  color: var(--swp-text-secondary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.summary-section {
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-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(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.payment-form-body .form-label {
  display: block;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--swp-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(--swp-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-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(--swp-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--swp-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(--swp-space-1);
  flex: 1;
}

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

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

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

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

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

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

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-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(--swp-text-sm);
  color: var(--swp-text-muted);
  white-space: nowrap;
  padding: var(--swp-space-1) var(--swp-space-2);
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-sm);
}
.amount-balance-hint strong {
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.capture-online-field {
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-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(--swp-font-medium);
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--swp-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(--swp-space-1);
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-semibold);
  transition: color var(--swp-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--swp-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-16);
  }
  .payment-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-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(--swp-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-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(--swp-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--swp-space-4);
  }
}

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

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

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  color: var(--swp-text-secondary);
  text-decoration: none;
  transition: all var(--swp-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--swp-text-base);
}
.profile-nav-item:hover {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  border-left-color: var(--swp-primary);
  font-weight: var(--swp-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(--swp-space-4);
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--swp-space-5);
  }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--swp-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;
  }
}
/**
 * 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(--swp-space-5);
}

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

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

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-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(--swp-space-4) 0;
}

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

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: all var(--swp-transition-base);
}
.setup-steps .step.active {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
  box-shadow: var(--swp-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(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

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

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

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

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

.verification-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--swp-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(--swp-space-2) 0;
}

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

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

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--swp-gray-50);
  padding: var(--swp-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(--swp-primary);
}
.two-factor-login-card .card-body {
  padding: var(--swp-space-8) var(--swp-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
}

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

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

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

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

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

.trust-device-option {
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  margin: var(--swp-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(--swp-text-sm);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
  cursor: pointer;
}

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

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

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

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--swp-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-container {
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--swp-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--swp-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--swp-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--swp-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(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}

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

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

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

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

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

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

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

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

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

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

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

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

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--swp-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(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.08) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

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

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

.notification-description {
  font-size: var(--swp-text-xs);
  color: var(--swp-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(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1-5) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: all var(--swp-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-4);
  }
  .notification-groups {
    gap: var(--swp-space-5);
  }
  .group-title {
    font-size: var(--swp-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
    padding: var(--swp-space-3);
  }
  .notification-card-content {
    gap: var(--swp-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--swp-text-sm);
  }
  .notification-description {
    font-size: var(--swp-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--swp-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--swp-space-2-5) var(--swp-space-3);
    font-size: var(--swp-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--swp-space-8) var(--swp-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(--swp-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--swp-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 `--swp-*` 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(--swp-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-12) var(--swp-space-4);
  background: linear-gradient(to bottom, var(--swp-gray-50), var(--swp-surface));
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--swp-space-10);
  background: var(--swp-surface);
  border: none;
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-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(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--swp-text-primary);
}

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

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

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

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

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

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

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

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

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

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

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

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--swp-space-3) var(--swp-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(--swp-warning-lighter);
  border-bottom-color: var(--swp-warning-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--swp-warning);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--swp-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--swp-danger-lighter);
  border-bottom-color: var(--swp-danger-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--swp-danger);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--swp-danger-hover);
}

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

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

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--swp-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--swp-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(--swp-space-1);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-inverse);
  background: var(--swp-primary);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-free {
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  box-shadow: none;
  transition: border-color var(--swp-transition-base), background var(--swp-transition-base);
}
.plan-card-free:hover {
  border-color: var(--swp-primary);
  background: var(--swp-surface);
}
.plan-card-free .card-body {
  padding: var(--swp-space-4) var(--swp-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--swp-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--swp-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(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  white-space: nowrap;
}

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

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

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

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

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--swp-space-6) var(--swp-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--swp-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(--swp-text-md);
  }
  .subscription-benefits {
    padding: var(--swp-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--swp-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(--swp-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 - `--swp-*` 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(--swp-success);
  background: var(--swp-success-lighter);
}

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

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

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

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

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

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

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

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

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

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

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

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--swp-border-light);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-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 \3c 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
 * `--swp-*` 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(--swp-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--swp-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out), color var(--swp-duration-slow) var(--swp-ease-out), box-shadow var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
  box-shadow: var(--swp-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--swp-space-4);
  background: var(--swp-border);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--swp-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--swp-space-12);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--swp-space-6);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--swp-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-2) var(--swp-space-4);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--swp-space-5);
  color: var(--swp-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--swp-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(--swp-radius-full);
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
  animation: onboarding-celebrate var(--swp-duration-slow) var(--swp-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  text-align: left;
  color: var(--swp-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-secondary-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--swp-space-8) var(--swp-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--swp-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(--swp-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

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

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

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

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

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

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

/**
 * 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(--swp-gray-700);
  color: var(--swp-gray-300);
  border-right: 1px solid var(--swp-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--swp-gray-50);
  font-weight: var(--swp-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(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), color var(--swp-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(--swp-gray-600);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .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 {
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover {
  background-color: var(--swp-primary-light);
  color: var(--swp-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(--swp-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  font-size: var(--swp-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(--swp-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--swp-text-secondary);
  border-radius: var(--swp-radius-sm);
}
.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(--swp-surface-hover);
  color: var(--swp-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(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-gray-200);
  border-color: var(--swp-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--swp-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(--swp-input-radius);
  border-color: var(--swp-input-border);
  padding: var(--swp-input-padding-y) var(--swp-input-padding-x);
  font-size: var(--swp-text-base);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--swp-input-focus-border);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--swp-text-light);
}

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

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

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

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

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--swp-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(--swp-gray-300);
  border: none;
  transition: background-color var(--swp-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--swp-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--swp-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-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(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--swp-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(--swp-space-1-5);
  font-size: var(--swp-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--swp-space-5);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--swp-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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(--swp-space-4);
}
.address-widget .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--swp-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--swp-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(--swp-danger);
  box-shadow: var(--swp-ring-danger);
}

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

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

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

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

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

.form-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--swp-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(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-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(--swp-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(--swp-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(--swp-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(--swp-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
}
.form-compact .form-label {
  font-size: var(--swp-text-xs);
  margin-bottom: var(--swp-space-1);
}

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

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

.btn-ghost-danger {
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--swp-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(--swp-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--swp-space-4);
  }
  .form-actions {
    padding: var(--swp-space-3) var(--swp-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(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-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(--swp-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--swp-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(--swp-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(--swp-shadow-lg) !important;
  border: none;
  background: var(--swp-surface);
}
.company-select-page .card-company {
  transition: var(--swp-transition-all);
  border: 2px solid var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-md);
  border-radius: var(--swp-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--swp-shadow-xl);
  border-color: var(--swp-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--swp-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(--swp-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--swp-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--swp-primary) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--swp-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--swp-duration-base) var(--swp-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(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border: 2px dashed var(--swp-border);
  transition: var(--swp-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--swp-success);
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-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(--swp-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--swp-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--swp-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--swp-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--swp-info-rgb), 0.08);
  border-color: rgba(var(--swp-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--swp-warning-rgb), 0.08);
  border-color: rgba(var(--swp-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--swp-success-rgb), 0.08);
  border-color: rgba(var(--swp-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(--swp-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--swp-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--swp-space-8) var(--swp-space-8) var(--swp-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top-color: var(--swp-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--swp-space-4) var(--swp-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--swp-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--swp-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(--swp-primary);
  background-color: rgba(var(--swp-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--swp-radius-lg);
  border-color: var(--swp-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--swp-danger-lighter) !important;
  border-bottom-color: var(--swp-danger-light) !important;
  padding: var(--swp-space-3) var(--swp-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-danger);
}
.settings-danger-zone .card .card-body {
  padding: var(--swp-space-5) var(--swp-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-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(--swp-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--swp-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(--swp-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(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  padding: var(--swp-space-6);
}
@media (width >= 1201px) {
  .stat-card {
    grid-column: span 2;
  }
}
.stat-card--danger {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
@media (width >= 1201px) {
  .stat-card--urgent {
    grid-column: span 3;
  }
}
.stat-card--urgent .stat-value {
  font-size: var(--swp-text-3xl);
}

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

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

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

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

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

.stat-subvalue {
  font-size: var(--swp-text-sm);
  color: var(--swp-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(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.quick-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-4);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: transform var(--swp-transition-fast), background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--swp-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.quick-action-btn--primary {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--swp-primary-light);
}
.quick-action-btn--secondary {
  background: var(--swp-secondary-lighter);
  color: var(--swp-secondary-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--swp-secondary-light);
}
.quick-action-btn--info {
  background: var(--swp-info-lighter);
  color: var(--swp-info-hover);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-hover);
}
.quick-action-btn--success:hover {
  background: var(--swp-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(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-align: center;
}

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

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

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

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

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

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

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

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

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

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

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

.activity-time {
  color: var(--swp-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(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}

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

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

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

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

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

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

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

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

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

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

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

.client-credit-label {
  font-size: 0.75rem;
  color: var(--swp-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(--swp-border);
      margin: 0 calc(-1 * var(--swp-space-6));
      padding: 0 var(--swp-space-6);
  } */
}
.client-tabs-card .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--swp-transition-fast), border-color var(--swp-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(46, 150, 58, 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-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(--swp-space-4);
}

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

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--swp-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(--swp-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--swp-space-4);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--swp-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--swp-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(--swp-space-4));
    padding: 0 var(--swp-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(--swp-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(--swp-space-3);
}

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

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

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

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

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

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

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

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

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

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

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

.generated-invoice-amount {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-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(--swp-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-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(--swp-space-3);
}

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

.active-methods-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-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(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

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

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--swp-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-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(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-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(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--swp-success) 0%, var(--swp-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--swp-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--swp-gray-400) 0%, var(--swp-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-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(--swp-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--swp-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(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-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(--swp-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(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

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

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

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-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(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-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(--swp-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-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(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-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(--swp-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--swp-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--swp-border-light);
  padding-top: var(--swp-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(--swp-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--swp-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(--swp-space-8);
}

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

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

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

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

.integration-card {
  background: var(--swp-surface);
  border: 1.5px solid var(--swp-border-light);
  border-radius: var(--swp-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(--swp-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(--swp-primary-light), rgba(var(--swp-primary-rgb), 0.2));
  color: var(--swp-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.03), rgba(var(--swp-success-rgb), 0.01));
  border-color: rgba(var(--swp-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-success-light), var(--swp-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05), rgba(var(--swp-success-rgb), 0.02));
  border-color: var(--swp-success);
}
.integration-card .integration-card-body {
  padding: var(--swp-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--swp-gray-100), var(--swp-gray-200));
  border-radius: var(--swp-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(--swp-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-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(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-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(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

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

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--swp-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-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(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-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(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-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(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-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(--swp-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(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

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

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

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-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(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-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(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUFZQTtFQU1JO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBU0E7RUFDQTtFQUNBO0VBQ0E7RUFLQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBTUE7RUFDQTtBRjlDSjs7QUVxREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRmxESjs7QUV5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRnRESjs7QUU2REE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0FGakVKOztBRXdFQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFHQTs7a0VBQUE7RUFHQTtFQUNBO0VBQ0E7QUY1RUo7O0FFbUZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRmhGSjs7QUV1RkE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUlBO0FGekdKOztBRzNNQTs7Ozs7RUFBQTtBQVdBO0VBRUk7OztxQ0FBQTtFQU1BO3dFQUFBO0VBSUE7QUhvTUo7O0FHN0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhnTUo7O0FHekxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FINExKOztBR3JMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHdMSjs7QUdqTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhvTEo7O0FHM0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDhLSjs7QUd6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSDRLSjs7QUd2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSDBLSjs7QUdyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSHdLSjs7QUduS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHNLSjtBR3BLSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIc0tSOztBR2hLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIbUtKOztBRzlKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIaUtKOztBRzVKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIK0pKOztBRzFKQTtFQUNJO0VBQ0E7QUg2Sko7O0FHeEpBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIMkpKOztBR3RKQTtFQUNJO0VBQ0E7QUh5Sko7O0FHcEpBO0VBQ0k7QUh1Sko7O0FHbEpBO0VBQ0k7RUFDQTtFQUNBO0FIcUpKO0FHbkpJO0VBQ0k7RUFDQTtBSHFKUjs7QUcvSUE7RUFDSTtFQUNBO0VBQ0E7QUhrSko7O0FHN0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhnSko7O0FHN0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhnSko7O0FJL1hBOzs7Ozs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBcUJBO0VBQ0k7QUxzWUo7O0FLL1hBO0VBQ0k7RUFDQTtBTGtZSjtBS2hZSTtFQUFZO0FMbVloQjtBS2pZSTtFQUFZO0FMb1loQjtBS2xZSTtFQUFZO0FMcVloQjs7QUs5WEE7RUFDSTtFQUNBO0FMaVlKOztBSzlYQTtFQUNJO0VBQ0E7RUFDQTtBTGlZSjs7QUs5WEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxpWUo7QUsvWEk7RUFDSTtFQUNBO0FMaVlSOztBSzdYQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxnWUo7O0FLN1hBO0VBQ0k7RUFDQTtFQUNBO0FMZ1lKOztBS3pYQTtFQUNJO0VBQ0E7RUFDQTtBTDRYSjs7QUtyWEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMd1hKO0FLclhJO0VBQ0k7QUx1WFI7QUtwWEk7RUFDSTtFQUNBO0FMc1hSOztBSzlXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTGlYSjs7QUs5V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxpWEo7QUsvV0k7RUFDSTtFQUNBO0FMaVhSOztBSzdXQTtFQUNJO0VBQ0E7QUxnWEo7O0FLN1dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMZ1hKOztBSzdXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FMZ1hKOztBS3pXQTtFQUNJO0FMNFdKOztBS3JXQTtFQUNJO0VBQ0E7RUFDQTtBTHdXSjtBS3RXSTtFQUxKO0lBTVE7SUFDQTtFTHlXTjtBQUNGOztBS3RXQTtFQUNJO0VBQ0E7QUx5V0o7O0FLdFdBO0VBQ0k7QUx5V0o7O0FLbFdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxxV0o7O0FLbFdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMcVdKO0FLbldJO0VBQVk7QUxzV2hCOztBSy9WQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxrV0o7QUtoV0k7O0VBQ0k7RUFDQTtBTG1XUjtBS2hXSTs7RUFDSTtBTG1XUjs7QUszVkE7RUFFSTtJQUNJO0VMNlZOO0VLMVZFO0lBQ0k7SUFDQTtFTDRWTjtFS3pWRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VMMlZOO0VLeFZFO0lBQ0k7SUFDQTtFTDBWTjtFS3ZWRTtJQUNJO0VMeVZOO0VLdFZFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUx3Vk47RUtyVkU7SUFDSTtJQUNBO0VMdVZOO0VLcFZFO0lBQ0k7RUxzVk47RUtuVkU7SUFDSTtFTHFWTjtFS25WTTtJQUNJO0VMcVZWO0FBQ0Y7QUs3VUE7RUFFSTtJQUNJO0VMOFVOO0VLM1VFO0lBQ0k7RUw2VU47RUsxVUU7SUFDSTtFTDRVTjtBQUNGO0FNbnBCQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7RUFDQTtBTmdwQko7O0FNem9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjRvQko7QU0xb0JJO0VBWEo7SUFZUTtJQUNBO0VONm9CTjtBQUNGOztBTTFvQkE7RUFDSTtFQUNBO0VBQ0E7QU42b0JKOztBTTFvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONm9CSjs7QU0xb0JBO0VBQ0k7RUFDQTtFQUNBO0FONm9CSjs7QU0xb0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjZvQko7O0FNMW9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FONm9CSjs7QU0xb0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjZvQko7QU0zb0JJO0VBQ0k7QU42b0JSOztBTXZvQkE7RUFDSTtFQUNBO0VBQ0E7QU4wb0JKO0FNeG9CSTtFQUxKO0lBTVE7SUFDQTtFTjJvQk47QUFDRjs7QU14b0JBO0VBQ0k7RUFDQTtFQUNBO0FOMm9CSjs7QU10b0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnlvQko7QU12b0JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOeW9CUjtBTXZvQlE7RUFDSTtBTnlvQlo7QU10b0JRO0VBQ0k7QU53b0JaO0FNcm9CUTtFQUNJO0FOdW9CWjtBTW5vQkk7RUFDSTtFQUNBO0FOcW9CUjs7QU03bkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTmdvQko7QU05bkJJO0VBQ0k7RUFDQTtBTmdvQlI7QU03bkJJO0VBQ0k7QU4rbkJSOztBTTNuQkE7RUFDSTtFQUNBO0VBQ0E7QU44bkJKO0FNNW5CSTtFQUNJO0VBQ0E7QU44bkJSOztBTXRuQkE7RUFDSTtFQUNBO0VBQ0E7QU55bkJKO0FNdm5CSTtFQUxKO0lBTVE7RU4wbkJOO0FBQ0Y7O0FNbm5CQTtFQUNJO0FOc25CSjs7QU1ubkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5zbkJKOztBTWhuQkE7Ozs7RUFJSTtFQUNBO0VBQ0E7RUFDQTtBTm1uQko7QU03bUJJOzs7O0VBQ0k7RUFDQTtBTmtuQlI7O0FNNW1CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTittQko7QU03bUJJO0VBUko7SUFTUTtJQUNBO0VOZ25CTjtBQUNGOztBTTdtQkE7RUFDSTtFQUNBO0VBQ0E7QU5nbkJKOztBTTdtQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOZ25CSjs7QU03bUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5nbkJKOztBTTdtQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5nbkJKO0FNOW1CSTtFQUNJO0VBQ0E7RUFDQTtBTmduQlI7QU03bUJJO0VBQ0k7RUFDQTtBTittQlI7QU03bUJRO0VBQ0k7RUFDQTtBTittQlo7QU0zbUJJO0VBQ0k7QU42bUJSO0FNMW1CSTtFQUNJO0FONG1CUjtBTTFtQlE7RUFDSTtFQUNBO0FONG1CWjs7QU1ybUJBO0VBQ0k7QU53bUJKO0FNdG1CSTtFQUhKO0lBSVE7RU55bUJOO0FBQ0Y7O0FNdG1CQTtFQUNJO0VBQ0E7QU55bUJKO0FNcm1CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnVtQlo7QU1ybUJZO0VBSUk7QU5vbUJoQjtBTS9sQlE7RUF0Qko7SUF1QlE7RU5rbUJWO0FBQ0Y7QU03bEJRO0VBQ0k7QU4rbEJaO0FNN2xCWTtFQUNJO0FOK2xCaEI7QU0zbEJZO0VBUko7SUFTUTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU44bEJkO0VNNWxCYztJQUNJO0VOOGxCbEI7RU0zbEJjO0lBQ0k7RU42bEJsQjtBQUNGO0FNemxCUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4ybEJaO0FNemxCWTtFQUNJO0VBQ0E7QU4ybEJoQjtBTXhsQlk7RUFJSTtFQUNBO0VBQ0E7QU51bEJoQjtBTXBsQlk7RUFDSTtFQUNBO0FOc2xCaEI7QU1sbEJZO0VBM0JKO0lBNEJRO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTnFsQmQ7RU1ubEJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VOcWxCbEI7RU1sbEJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VOb2xCbEI7RU1sbEJrQjtJQUNJO0VOb2xCdEI7RU1obEJjO0lBQ0k7SUFDQTtFTmtsQmxCO0FBQ0Y7QU01a0JJO0VBRUk7SUFDSTtFTjZrQlY7RU0xa0JNO0lBQ0k7RU40a0JWO0VNemtCTTtJQUNJO0VOMmtCVjtFTXhrQk07SUFDSTtFTjBrQlY7RU12a0JNO0lBQ0k7RU55a0JWO0FBQ0Y7O0FNbmtCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOc2tCSjs7QU1ua0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5za0JKOztBTW5rQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOc2tCSjtBTXBrQkk7RUFDSTtFQUNBO0FOc2tCUjtBTW5rQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcWtCUjs7QU0vakJBO0VBQ0k7QU5ra0JKOztBTTdqQkE7RUFDSTtBTmdrQko7O0FNN2pCQTtFQUNJO0VBQ0E7RUFDQTtBTmdrQko7QU05akJJO0VBQ0k7RUFDQTtFQUNBO0FOZ2tCUjtBTTFqQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjRqQlI7O0FNdGpCQTtFQUNJO0VBQ0E7RUFDQTtBTnlqQko7O0FNcGpCSTtFQUNJO0VBQ0E7RUFDQTtBTnVqQlI7O0FNbmpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOc2pCSjs7QU1uakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnNqQko7O0FNL2lCQTtFQUNJO0VBQ0E7RUFDQTtBTmtqQko7QU1oakJJO0VBTEo7SUFNUTtJQUNBO0VObWpCTjtBQUNGOztBTWhqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTm1qQko7O0FNaGpCQTtFQUNJO0FObWpCSjs7QU1oakJBO0VBQ0k7QU5takJKOztBTWhqQkE7RUFDSTtBTm1qQko7O0FNaGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5takJKOztBTWhqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FObWpCSjs7QU1oakJBO0VBQ0k7RUFDQTtBTm1qQko7O0FNaGpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FObWpCSjs7QU1oakJBO0VBQ0k7QU5takJKOztBTTlpQkE7RUFDSTtFQUNBO0VBQ0E7QU5pakJKOztBTTVpQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTitpQko7QU03aUJJO0VBQ0k7RUFDQTtBTitpQlI7QU01aUJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44aUJSO0FNeGlCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOMGlCUjtBTXJpQkk7RUFDSTtFQUNBO0FOdWlCUjs7QU1uaUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5zaUJKO0FNcGlCSTtFQUNJO0FOc2lCUjs7QU1oaUJJO0VBQ0k7QU5taUJSOztBTTdoQkE7RUFDSTtFQUNBO0VBQ0E7QU5naUJKOztBTTdoQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTmdpQko7QU05aEJJO0VBQ0k7RUFDQTtBTmdpQlI7O0FNNWhCQTtFQUNJO0VBQ0E7RUFDQTtBTitoQko7O0FNNWhCQTtFQUNJO0VBQ0E7RUFDQTtBTitoQko7O0FNNWhCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOK2hCSjs7QU01aEJBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4raEJKO0FNN2hCSTs7RUFDSTtBTmdpQlI7O0FNMWhCQTtFQUNJO0VBQ0E7RUFDQTtBTjZoQko7O0FNMWhCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU42aEJKOztBTTFoQkE7RUFDSTtFQUNBO0FONmhCSjs7QU0xaEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU42aEJKOztBTTFoQkE7RUFDSTtFQUNBO0VBQ0E7QU42aEJKOztBTTFoQkE7RUFDSTtFQUNBO0VBQ0E7QU42aEJKOztBTTFoQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjZoQko7QU0zaEJJOztFQUNJO0FOOGhCUjs7QU0xaEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU42aEJKOztBTXhoQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4yaEJKO0FNemhCSTs7RUFDSTtFQUNBO0FONGhCUjs7QU14aEJBO0VBQ0k7QU4yaEJKOztBTXBoQkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFTnNoQk47RU1uaEJFO0lBQ0k7RU5xaEJOO0VNbGhCRTtJQUNJO0VOb2hCTjtFTWpoQkU7SUFDSTtJQUNBO0VObWhCTjtFTWhoQkU7SUFDSTtJQUNBO0VOa2hCTjtFTTdnQk07SUFDSTtJQUNBO0lBQ0E7RU4rZ0JWO0VNM2dCRTtJQUNJO0lBQ0E7SUFDQTtFTjZnQk47RU0xZ0JFO0lBQ0k7SUFDQTtJQUNBO0VONGdCTjtFTXpnQkU7SUFDSTtFTjJnQk47QUFDRjtBT3g0Q0E7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0FQcTRDSjs7QU85M0NBO0VBQ0k7RUFDQTtBUGk0Q0o7QU83M0NRO0VBQ0k7RUFDQTtFQUNBO0FQKzNDWjtBTzMzQ0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDYzQ1I7QU8xM0NJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVA0M0NSOztBT3AzQ0E7RUFDSTtFQUNBO0VBQ0E7QVB1M0NKO0FPcjNDSTtFQUNJO0FQdTNDUjtBT3AzQ0k7RUFDSTtBUHMzQ1I7O0FPNTJDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQKzJDSjs7QU8xMkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUDYyQ0o7O0FPMTJDQTtFQUNJO0VBQ0E7RUFDQTtBUDYyQ0o7O0FPeDJDQTtFQUNJO0VBQ0E7QVAyMkNKOztBT3AyQ0k7RUFDSTtFQUNBO0VBQ0E7QVB1MkNSOztBTy8xQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUGsyQ0o7QU9oMkNJO0VBQ0k7QVBrMkNSO0FPLzFDSTtFQUNJO0FQaTJDUjs7QU83MUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBnMkNKOztBTzcxQ0E7RUFDSTtFQUNBO0FQZzJDSjs7QU83MUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBnMkNKOztBT3oxQ0E7RUFDSTtBUDQxQ0o7O0FPejFDQTtFQUNJO0VBQ0E7RUFDQTtBUDQxQ0o7O0FPejFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQNDFDSjs7QU96MUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVA0MUNKOztBT3IxQ0E7RUFDSTtBUHcxQ0o7QU9wMUNRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQczFDWjtBT2gxQ1E7RUFDSTtFQUNBO0FQazFDWjtBT2gxQ1k7RUFDSTtBUGsxQ2hCO0FPLzBDWTtFQUNJO0FQaTFDaEI7QU83MENRO0VBQ0k7RUFDQTtFQUNBO0FQKzBDWjtBTzMwQ0k7RUFDSTtFQUNBO0VBQ0E7QVA2MENSO0FPMTBDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQNDBDUjs7QU9wMENBO0VBQ0k7RUFDQTtFQUNBO0FQdTBDSjtBT3IwQ0k7RUFDSTtBUHUwQ1I7O0FPbjBDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQczBDSjtBT3AwQ0k7RUFDSTtBUHMwQ1I7O0FPbDBDQTtFQUNJO0VBQ0E7RUFDQTtBUHEwQ0o7O0FPbDBDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVBxMENKOztBT2wwQ0E7RUFDSTtFQUNBO0VBQ0E7QVBxMENKO0FPbjBDSTtFQUNJO0VBQ0E7QVBxMENSO0FPbDBDSTtFQUNJO0VBQ0E7QVBvMENSO0FPajBDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQbTBDUjs7QU96ekNJO0VBQ0k7RUFDQTtFQUNBO0FQNHpDUjtBT3p6Q0k7RUFDSTtFQUNBO0FQMnpDUjtBT3h6Q0k7RUFDSTtFQUNBO0VBQ0E7QVAwekNSOztBT2h6Q0E7RUFDSTtFQUNBO0FQbXpDSjs7QU85eUNBO0VBQ0k7RUFDQTtBUGl6Q0o7O0FPNXlDQTtFQUNJO0VBQ0E7QVAreUNKOztBTzV5Q0E7RUFDSTtFQUNBO0FQK3lDSjtBTzd5Q0k7RUFDSTtBUCt5Q1I7O0FPdnlDQTtFQUVJOztJQUVJO0VQeXlDTjtFT3R5Q0U7SUFDSTtFUHd5Q047QUFDRjtBT3J5Q0E7RUFFSTtJQUNJO0VQc3lDTjtFT255Q0U7SUFDSTtFUHF5Q047RU9seUNFO0lBQ0k7RVBveUNOO0VPL3hDTTtJQUNJO0VQaXlDVjtBQUNGO0FPN3hDQTtFQUVJO0lBQ0k7SUFDQTtFUDh4Q047RU8zeENFO0lBQ0k7RVA2eENOO0VPMXhDRTs7SUFFSTtFUDR4Q047RU92eENFO0lBQ0k7RVB5eENOO0VPdnhDTTtJQUNJO0lBQ0E7RVB5eENWO0VPdHhDTTtJQUNJO0VQd3hDVjtFT3J4Q007SUFDSTtFUHV4Q1Y7RU8vd0NNO0lBQ0k7SUFDQTtFUGl4Q1Y7RU8vd0NVO0lBQ0k7RVBpeENkO0VPeHdDTTs7SUFFSTtFUDB3Q1Y7RU94d0NVOztJQUNJO0VQMndDZDtFT2x3Q007SUFDSTtJQUNBO0VQb3dDVjtFT2x3Q1U7SUFDSTtJQUNBO0lBQ0E7RVBvd0NkO0VPbHdDYztJQUNJO0lBQ0E7RVBvd0NsQjtFT2h3Q1U7O0lBRUk7SUFDQTtFUGt3Q2Q7RU8zdkNFO0lBQ0k7RVA2dkNOO0VPM3ZDTTtJQUNJO0VQNnZDVjtFTzF2Q007SUFDSTtFUDR2Q1Y7QUFDRjtBT3B2Q0E7RUFFSTs7SUFFSTtJQUNBO0VQcXZDTjtFT2x2Q0U7SUFDSTtFUG92Q047RU9qdkNFOztJQUVJO0lBQ0E7SUFDQTtFUG12Q047RU9odkNFOzs7SUFHSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUGt2Q047RU8vdUNFO0lBQ0k7SUFDQTtJQUNBO0VQaXZDTjtFTzl1Q0U7SUFDSTtJQUNBO0VQZ3ZDTjtFTzd1Q0U7OztJQUdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVArdUNOO0VPNXVDRTtJQUNJO0lBQ0E7SUFDQTtFUDh1Q047RU8zdUNFO0lBQ0k7RVA2dUNOO0VPMXVDRTtJQUNJO0VQNHVDTjtFT3p1Q0U7SUFDSTtJQUNBO0VQMnVDTjtFT3h1Q0U7SUFDSTtFUDB1Q047RU92dUNFOzs7SUFHSTtJQUNBO0lBQ0E7RVB5dUNOO0VPdHVDRTtJQUNJO0lBQ0E7SUFDQTtFUHd1Q047RU9ydUNFOzs7SUFHSTtJQUNBO0lBQ0E7RVB1dUNOO0VPcHVDRTtJQUNJO0lBQ0E7SUFDQTtFUHN1Q047RU9udUNFO0lBQ0k7SUFDQTtJQUNBO0VQcXVDTjtFT2x1Q0U7SUFDSTtFUG91Q047RU9qdUNFO0lBQ0k7RVBtdUNOO0VPaHVDRTtJQUNJO0lBQ0E7RVBrdUNOO0FBQ0Y7QVFoMURBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVI2MERKO0FRMzBESTtFQUNJO0FSNjBEUjtBUTEwREk7RUFDSTtFQUNBO0FSNDBEUjtBUXowREk7RUFDSTtFQUNBO0VBQ0E7QVIyMERSO0FRejBEUTtFQUNJO0FSMjBEWjs7QVFwMERJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVJ1MERSO0FRcDBESTtFQUNJO0FSczBEUjtBUW4wREk7RUFDSTtFQUNBO0VBQ0E7QVJxMERSO0FRbjBEUTtFQUNJO0VBQ0E7RUFDQTtBUnEwRFo7QVFsMERRO0VBQ0k7RUFDQTtFQUNBO0FSbzBEWjtBUWwwRFk7RUFDSTtFQUNBO0FSbzBEaEI7QVFqMERZO0VBQ0k7RUFDQTtBUm0wRGhCO0FRN3pEWTtFQUNJO0FSK3pEaEI7O0FRcnpEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnd6REo7O0FRcnpEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJ3ekRKOztBUXJ6REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJ3ekRKOztBUXJ6REE7RUFDSTtFQUNBO0FSd3pESjtBUXR6REk7RUFDSTtFQUNBO0VBQ0E7QVJ3ekRSO0FRcnpESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJ1ekRSOztBUW56REE7RUFDSTtFQUNBO0VBQ0E7QVJzekRKOztBUW56REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSc3pESjs7QVEveURBO0VBRUk7SUFBTztFUmt6RFQ7RVFoekRFO0lBQUs7RVJtekRQO0FBQ0Y7QVFqekRBO0VBRUk7SUFDSTtJQUNBO0VSa3pETjtFUS95REU7SUFDSTtJQUNBO0VSaXpETjtBQUNGO0FROXlEQTtFQUVJO0lBQ0k7SUFDQTtFUit5RE47RVE1eURFO0lBQ0k7SUFDQTtFUjh5RE47QUFDRjtBUXZ5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUnl5REo7O0FRdHlEQTtFQUNJO0VBQ0E7QVJ5eURKOztBUzkvREE7O0VBQUE7QUFJQTtFQUNJO0VBQ0E7QVRnZ0VKO0FTOS9ESTtFQUNJO0VBQ0E7RUFDQTtBVGdnRVI7QVM3L0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQrL0RSO0FTNS9ESTtFQUNJO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDIvRFI7QVN2L0RRO0VBRUk7QVR3L0RaO0FTci9EUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUdS9EWjtBU3AvRFE7RUFDSTtBVHMvRFo7QVNsL0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRvL0RSO0FTai9ESTtFQUNJO0VBQ0E7RUFDQTtBVG0vRFI7QVNqL0RRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVG0vRFo7O0FTOStEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRpL0RKO0FTLytESTtFQUNJO0VBQ0E7QVRpL0RSOztBUzcrREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRnL0RKOztBUzcrREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRnL0RKOztBUzcrREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGcvREo7QVM5K0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGcvRFI7QVM3K0RJO0VBQ0k7RUFDQTtBVCsrRFI7O0FTMytEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7QVQwK0RKO0FTeCtESTtFQUNJO0VBQ0E7QVQwK0RSOztBU3QrREE7RUFFSTtJQUNJO0lBQ0E7RVR3K0ROO0VTcitERTtJQUNJO0lBQ0E7RVR1K0ROO0FBQ0Y7QVNwK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRzK0RKOztBU24rREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUcytESjtBU3ArREk7RUFDSTtBVHMrRFI7QVNuK0RJO0VBQ0k7QVRxK0RSO0FTbCtESTtFQUNJO0VBQ0E7QVRvK0RSOztBUzk5REk7RUFDSTtBVGkrRFI7QVM5OURJO0VBQ0k7QVRnK0RSO0FTNzlESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVCs5RFI7O0FTejlESTtFQUNJO0FUNDlEUjtBU3o5REk7RUFDSTtFQUNBO0FUMjlEUjs7QVN2OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQwOURKOztBU3Y5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUMDlESjtBU3g5REk7RUFDSTtBVDA5RFI7O0FTdDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjs7QVN0OURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5OURKOztBU3Q5REE7RUFDSTtFQUNBO0VBQ0E7QVR5OURKOztBU3Q5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVHk5REo7O0FTdDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUeTlESjtBU3Y5REk7RUFDSTtFQUNBO0VBQ0E7QVR5OURSO0FTdDlESTtFQUNJO0VBQ0E7RUFDQTtBVHc5RFI7O0FTcDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR1OURKOztBU3A5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUdTlESjtBU3I5REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUdTlEUjtBU3I5RFE7RUFDSTtBVHU5RFo7O0FTbDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHE5REo7QVNuOURJO0VBQ0k7QVRxOURSOztBU2o5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUbzlESjtBU2w5REk7RUFDSTtBVG85RFI7QVNqOURJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUbTlEUjtBU2g5REk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVGs5RFI7QVNoOURRO0VBRUk7QVRpOURaO0FTOThEUTtFQUNJO0VBQ0E7RUFDQTtBVGc5RFo7O0FVNTRFQTs7Ozs7RUFBQTtBQVdBO0VBR0k7RUFDQTtBVnc0RUo7QVVwNEVJO0VBQ0k7QVZzNEVSOztBVWw0RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnE0RUo7O0FVbDRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWcTRFSjs7QVU5M0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpNEVKO0FVLzNFSTtFQVRKO0lBVVE7SUFDQTtFVms0RU47QUFDRjs7QVUvM0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVms0RUo7O0FVLzNFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWazRFSjs7QVUvM0VBO0VBQ0k7RUFDQTtFQUNBO0FWazRFSjtBVWg0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWazRFUjtBVS8zRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWaTRFUjtBVTczRVE7RUFDSTtBViszRVo7QVU1M0VRO0VBQ0k7QVY4M0VaO0FVMzNFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWNjNFWjs7QVVwM0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZ1M0VKOztBVXAzRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdTNFSjtBVXIzRUk7RUFDSTtFQUNBO0FWdTNFUjtBVXIzRVE7RUFDSTtBVnUzRVo7QVVuM0VJO0VBQ0k7RUFDQTtBVnEzRVI7QVVuM0VRO0VBQ0k7RUFDQTtBVnEzRVo7QVVqM0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZtM0VSO0FVaDNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZrM0VSOztBVTEyRUE7RUFDSTtBVjYyRUo7O0FVMTJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNjJFSjtBVXoyRUk7O0VBRUk7QVYyMkVSOztBVXYyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwMkVKOztBVXYyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjAyRUo7QVV4MkVJO0VBQ0k7RUFDQTtFQUNBO0FWMDJFUjs7QVV0MkVBO0VBQ0k7RUFDQTtFQUNBO0FWeTJFSjs7QVV0MkVBO0VBQ0k7RUFDQTtFQUNBO0FWeTJFSjs7QVV0MkVBO0VBQ0k7RUFDQTtFQUNBO0FWeTJFSjtBVXIyRUk7O0VBRUk7RUFDQTtBVnUyRVI7QVVsMkVJO0VBQ0k7QVZvMkVSOztBVWgyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWbTJFSjs7QVUxMUVJO0VBQ0k7RUFDQTtFQUNBO0FWNjFFUjtBVXgxRVk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMDFFaEI7QVV2MUVZO0VBQ0k7QVZ5MUVoQjtBVWwxRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVm8xRVI7QVVsMUVRO0VBQ0k7QVZvMUVaO0FVLzBFUTtFQUNJO0FWaTFFWjtBVTkwRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnMUVaO0FVOTBFWTtFQUNJO0VBQ0E7QVZnMUVoQjtBVTcwRVk7RUFDSTtBViswRWhCO0FVMTBFWTtFQUNJO0VBQ0E7QVY0MEVoQjtBVTEwRWdCO0VBQ0k7QVY0MEVwQjtBVXYwRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnkwRVo7QVVuMEVJO0VBQ0k7QVZxMEVSOztBVWowRUE7RUFDSTtFQUNBO0VBQ0E7QVZvMEVKOztBVTV6RUk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QVYrekVSO0FVN3pFUTs7RUFDSTtFQUNBO0FWZzBFWjtBVTF6RUk7RUFDSTtBVjR6RVI7QVVyekVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnV6RVo7QVVwekVRO0VBQ0k7RUFDQTtBVnN6RVo7QVVwekVZO0VBQ0k7QVZzekVoQjtBVW56RVk7RUFDSTtBVnF6RWhCO0FVOXlFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZ3pFUjtBVTl5RVE7RUFDSTtBVmd6RVo7QVU3eUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYreUVaO0FVNXlFUTtFQUNJO0VBQ0E7RUFDQTtBVjh5RVo7QVV4eUVJO0VBQ0k7QVYweUVSO0FVcnlFSTtFQUNJO0VBQ0E7QVZ1eUVSO0FVcnlFUTtFQUNJO0VBQ0E7QVZ1eUVaO0FVcnlFWTtFQUNJO0VBQ0E7QVZ1eUVoQjs7QVU3eEVBO0VBQ0k7QVZneUVKOztBVTd4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZneUVKOztBVTd4RUE7RUFDSTtFQUNBO0VBQ0E7QVZneUVKOztBVTd4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmd5RUo7QVU5eEVJO0VBQ0k7RUFDQTtFQUNBO0FWZ3lFUjs7QVU1eEVBO0VBQ0k7RUFDQTtFQUNBO0FWK3hFSjs7QVU1eEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYreEVKOztBVTV4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QVY4eEVKO0FVNXhFSTtFQUVJO0VBQ0E7RUFDQTtBVjZ4RVI7O0FVenhFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHhFSjtBVTF4RUk7RUFFSTtFQUNBO0VBQ0E7QVYyeEVSOztBVXZ4RUE7RUFDSTtFQUNBO0VBQ0E7QVYweEVKOztBVXZ4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjB4RUo7O0FVdnhFQTtFQUNJO0VBQ0E7QVYweEVKOztBVWp4RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZveEVSO0FVaHhFUTtFQUNJO0VBQ0E7RUFDQTtBVmt4RVo7QVUvd0VRO0VBQ0k7QVZpeEVaO0FVN3dFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWK3dFUjtBVTV3RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWOHdFUjtBVTV3RVE7RUFDSTtBVjh3RVo7QVUzd0VRO0VBQ0k7RUFDQTtFQUNBO0FWNndFWjs7QVVwd0VBO0VBQ0k7QVZ1d0VKOztBVXB3RUE7RUFDSTtFQUNBO0VBQ0E7QVZ1d0VKO0FVcndFSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBVnV3RVI7QVVwd0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnN3RVI7QVVud0VJO0VBRUk7QVZvd0VSO0FVandFSTtFQUNJO0FWbXdFUjtBVWp3RVE7RUFDSTtBVm13RVo7QVVod0VRO0VBQ0k7QVZrd0VaO0FVaHdFWTtFQUNJO0FWa3dFaEI7QVUzdkVJO0VBQ0k7RUFDQTtBVjZ2RVI7QVUxdkVJO0VBRUk7QVYydkVSO0FVeHZFSTtFQUNJO0VBQ0E7RUFDQTtBVjB2RVI7QVV2dkVJO0VBQ0k7QVZ5dkVSO0FVbnZFSTs7RUFFSTtFQUNBO0VBQ0E7QVZxdkVSO0FVbHZFSTs7RUFFSTtBVm92RVI7QVUvdUVJOztFQUVJO0FWaXZFUjtBVTl1RUk7RUFDSTtBVmd2RVI7QVU3dUVJO0VBQ0k7RUFDQTtFQUNBO0FWK3VFUjtBVTF1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjR1RVI7QVV4dUVRO0VBQ0k7RUFDQTtBVjB1RVo7O0FVbnVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnN1RUo7QVVwdUVJO0VBQ0k7QVZzdUVSO0FVbnVFSTtFQUNJO0FWcXVFUjtBVWx1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWb3VFUjtBVWx1RVE7RUFDSTtBVm91RVo7QVVodUVJO0VBQ0k7QVZrdUVSOztBVTF0RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjZ0RUo7O0FVMXRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNnRFSjtBVTF0RUk7RUFDSTtFQUNBO0FWNHRFUjtBVXp0RUk7RUFDSTtFQUNBO0FWMnRFUjtBVXh0RUk7RUFDSTtFQUNBO0FWMHRFUjtBVXZ0RUk7RUFDSTtFQUNBO0FWeXRFUjtBVXR0RUk7RUFDSTtFQUNBO0FWd3RFUjs7QVVsdEVBO0VBQ0k7RUFDQTtBVnF0RUo7QVVqdEVJO0VBRUk7RUFDQTtFQUNBO0FWa3RFUjs7QVUxc0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY2c0VSO0FVMXNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY0c0VSO0FVMXNFUTtFQUNJO0VBQ0E7RUFDQTtBVjRzRVo7QVV6c0VRO0VBQ0k7QVYyc0VaO0FVeHNFUTtFQUNJO0FWMHNFWjtBVXhzRVk7RUFDSTtBVjBzRWhCO0FVdnNFWTtFQUNJO0FWeXNFaEI7QVVwc0VJO0VBQ0k7QVZzc0VSOztBVWhzRUE7RUFDSTtBVm1zRUo7O0FVaHNFQTs7RUFFSTtBVm1zRUo7O0FVNXJFQTtFQUNJO0VBQ0E7RUFDQTtBVityRUo7QVU3ckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVityRVI7O0FVdnJFQTtFQUNJO0VBQ0E7QVYwckVKOztBVXZyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwckVKO0FVeHJFSTtFQUNJO0VBQ0E7QVYwckVSOztBVXRyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnlyRUo7O0FVdHJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnlyRUo7O0FVdHJFQTtFQUNJO0VBQ0E7RUFDQTtBVnlyRUo7O0FVbHJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnFyRUo7QVVqckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVm1yRVI7O0FVN3FFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZ3JFSjs7QVU3cUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZnckVKO0FVOXFFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnckVSOztBVTVxRUE7RUFDSTtFQUNBO0VBQ0E7QVYrcUVKOztBVTVxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYrcUVKO0FVN3FFSTtFQUNJO0VBQ0E7QVYrcUVSO0FVNXFFSTtFQUNJO0FWOHFFUjtBVTNxRUk7RUFDSTtBVjZxRVI7QVUzcUVRO0VBQ0k7QVY2cUVaOztBVXhxRUE7RUFDSTtFQUNBO0VBQ0E7QVYycUVKOztBVXhxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYycUVKO0FVeHFFSTtFQUNJO0VBQ0E7QVYwcUVSO0FVdnFFSTtFQUNJO0VBQ0E7QVZ5cUVSOztBVWpxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVm9xRUo7QVVscUVJO0VBVEo7SUFVUTtJQUNBO0VWcXFFTjtBQUNGOztBVWxxRUE7RUFDSTtFQUNBO0FWcXFFSjs7QVVscUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnFxRUo7QVVucUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZxcUVSO0FVbnFFUTtFQUNJO0VBQ0E7RUFDQTtBVnFxRVo7O0FVOXBFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmlxRVI7QVU1cEVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY4cEVaO0FVMXBFWTtFQUNJO0VBQ0E7RUFDQTtBVjRwRWhCO0FVeHBFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWMHBFWjtBVXZwRVE7RUFDSTtFQUNBO0VBQ0E7QVZ5cEVaOztBVWhwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZtcEVKO0FVanBFSTtFQUNJO0VBQ0E7QVZtcEVSO0FVaHBFSTtFQUNJO0VBQ0E7QVZrcEVSO0FVL29FSTtFQUNJO0VBQ0E7QVZpcEVSO0FVOW9FSTtFQUNJO0VBQ0E7QVZncEVSO0FVN29FSTtFQUNJO0VBQ0E7QVYrb0VSO0FVNW9FSTtFQUNJO0VBQ0E7QVY4b0VSOztBVXRvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnlvRUo7O0FVbG9FQTtFQUNJO0FWcW9FSjtBVW5vRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcW9FUjs7QVVqb0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVm9vRUo7O0FVN25FQTtFQUVJO0lBQ0k7SUFDQTtFVituRU47RVU1bkVFO0lBQ0k7RVY4bkVOO0VVem5FTTs7SUFFSTtFVjJuRVY7RVV2bkVFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RVZ5bkVOO0VVdG5FRTtJQUNJO0VWd25FTjtBQUNGO0FVOW1FSTtFQUNJO0VBQ0E7RUFDQTtBVmduRVI7O0FVNW1FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVittRUo7QVU1bUVJO0VBQ0k7RUFDQTtBVjhtRVI7QVUzbUVJO0VBQ0k7RUFDQTtBVjZtRVI7O0FVdm1FQTtFQUNJO0VBQ0E7QVYwbUVKO0FVeG1FSTtFQUNJO0FWMG1FUjtBVXZtRUk7RUFDSTtFQUNBO0FWeW1FUjs7QVVybUVBO0VBQ0k7RUFDQTtBVndtRUo7QVVwbUVJO0VBQ0k7RUFDQTtBVnNtRVI7O0FVbG1FQTtFQUVJO0lBQ0k7SUFDQTtFVm9tRU47RVVqbUVFO0lBQ0k7SUFDQTtFVm1tRU47QUFDRjtBVTFsRUk7RUFDSTtFQUNBO0VBQ0E7QVY0bEVSO0FVemxFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYybEVSO0FVemxFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYybEVaO0FVdGxFWTtFQUNJO0FWd2xFaEI7QVV0bEVnQjtFQUNJO0FWd2xFcEI7QVVybEVnQjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWdWxFcEI7QVVubEVZO0VBQ0k7QVZxbEVoQjtBVWhsRUk7RUFDSTtFQUNBO0VBQ0E7QVZrbEVSOztBVy9oSEE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7QVg2aEhKO0FXM2hISTtFQUNJO0FYNmhIUjs7QVdyaEhBO0VBQ0k7QVh3aEhKOztBV2hoSEE7RUFDSTtFQUNBO0VBQ0E7QVhtaEhKOztBV2hoSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWG1oSEo7QVdoaEhJO0VBQ0k7RUFDQTtBWGtoSFI7O0FXOWdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWGloSEo7O0FXOWdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhpaEhKOztBVzlnSEE7RUFDSTtBWGloSEo7O0FXOWdIQTtFQUNJO0VBQ0E7RUFDQTtBWGloSEo7O0FXOWdIQTtFQUNJO0VBQ0E7QVhpaEhKOztBVzlnSEE7RUFDSTtBWGloSEo7O0FXOWdIQTtFQUNJO0VBQ0E7RUFDQTtBWGloSEo7QVcvZ0hJO0VBTEo7SUFNUTtFWGtoSE47QUFDRjs7QVcvZ0hBO0VBQ0k7QVhraEhKOztBVzNnSEE7RUFDSTtFQUNBO0VBQ0E7QVg4Z0hKOztBVzNnSEE7RUFDSTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYOGdISjtBVzVnSEk7RUFOSjtJQU9RO0lBQ0E7RVgrZ0hOO0VXN2dITTtJQUNJO0VYK2dIVjtBQUNGOztBVzNnSEE7RUFDSTtFQUNBO0VBQ0E7QVg4Z0hKOztBVzNnSEE7RUFDSTtBWDhnSEo7O0FXM2dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYOGdISjs7QVd2Z0hBO0VBQ0k7RUFDQTtFQUNBO0FYMGdISjs7QVd2Z0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDBnSEo7QVd2Z0hJO0VBQ0k7RUFDQTtBWHlnSFI7O0FXcmdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHdnSEo7O0FXcmdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVh3Z0hKOztBV3JnSEE7RUFDSTtBWHdnSEo7O0FXcmdIQTtFQUNJO0VBQ0E7RUFDQTtBWHdnSEo7O0FXcmdIQTtFQUNJO0VBQ0E7QVh3Z0hKOztBV3JnSEE7RUFDSTtBWHdnSEo7O0FXcmdIQTtFQUNJO0VBQ0E7RUFDQTtBWHdnSEo7QVd0Z0hJO0VBTEo7SUFNUTtFWHlnSE47QUFDRjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0FYcWdISjs7QVdsZ0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhxZ0hKO0FXbmdISTtFQUNJO0VBQ0E7QVhxZ0hSO0FXbGdISTtFQUNJO0VBQ0E7RUFDQTtBWG9nSFI7O0FXNS9HQTtFQUVJO0lBQ0k7SUFDQTtFWDgvR047RVczL0dFO0lBQ0k7SUFDQTtFWDYvR047QUFDRjtBVzEvR0E7O0VBRUk7QVg0L0dKOztBV3IvR0E7O0VBRUk7RUFDQTtBWHcvR0o7O0FXci9HQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYdy9HSjtBV3QvR0k7O0VBQ0k7QVh5L0dSOztBWWp6SEE7Ozs7OztFQUFBO0FBWUE7RUFDSTtBWit5SEo7O0FZNXlIQTtFQUNJO0VBQ0E7RUFDQTtBWit5SEo7O0FZeHlIQTtFQUNJO0VBQ0E7QVoyeUhKOztBWXh5SEE7RUFDSTtFQUNBO0VBQ0E7QVoyeUhKOztBWXh5SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMnlISjs7QVl4eUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjJ5SEo7O0FZeHlIQTtFQUNJO0VBQ0E7RUFDQTtBWjJ5SEo7O0FZcHlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnV5SEo7QVlyeUhJO0VBQ0k7RUFDQTtBWnV5SFI7O0FZbnlIQTtFQUNJO0VBQ0E7RUFDQTtBWnN5SEo7QVlweUhJO0VBTEo7SUFNUTtFWnV5SE47QUFDRjtBWWp5SFE7RUFDSTtFQUNBO0FabXlIWjs7QVk5eEhBO0VBQ0k7RUFDQTtFQUNBO0FaaXlISjs7QVk5eEhBO0VBQ0k7RUFDQTtFQUNBO0FaaXlISjs7QVk1eEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVoreEhKO0FZN3hISTtFQUNJO0VBQ0E7RUFDQTtBWit4SFI7QVk1eEhJO0VBQ0k7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FaNHhIUjtBWXp4SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMnhIUjtBWXp4SFE7RUFDSTtFQUNBO0FaMnhIWjs7QVl0eEhBO0VBQ0k7RUFDQTtFQUNBO0FaeXhISjtBWXZ4SEk7RUFDSTtBWnl4SFI7QVl0eEhJO0VBQ0k7QVp3eEhSOztBWWx4SEE7RUFDSTtFQUNBO0VBQ0E7QVpxeEhKO0FZbnhISTtFQUxKO0lBTVE7RVpzeEhOO0FBQ0Y7O0FZL3dIQTtFQUNJO0Faa3hISjs7QVkvd0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmt4SEo7O0FZL3dIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Faa3hISjs7QVkvd0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa3hISjs7QVkvd0hBO0VBQ0k7RUFDQTtFQUNBO0Faa3hISjtBWWh4SEk7RUFDSTtBWmt4SFI7O0FZOXdIQTtFQUNJO0VBQ0E7RUFDQTtBWml4SEo7O0FZOXdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaXhISjs7QVk5d0hBO0VBQ0k7RUFDQTtFQUNBO0FaaXhISjs7QVk5d0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVppeEhKO0FZL3dISTtFQUNJO0FaaXhIUjtBWTl3SEk7RUFDSTtBWmd4SFI7QVk3d0hJO0VBQ0k7QVord0hSO0FZNXdISTtFQUNJO0VBQ0E7QVo4d0hSOztBWXR3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnl3SEo7QVl2d0hJO0VBTko7SUFPUTtFWjB3SE47QUFDRjtBWXh3SEk7RUFWSjtJQVdRO0VaMndITjtBQUNGOztBWXB3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnV3SEo7O0FZcHdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnV3SEo7O0FZcHdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1d0hKOztBWXB3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnV3SEo7O0FZcHdIQTtFQUNJO0FadXdISjs7QVlsd0hBO0VBQ0k7QVpxd0hKOztBWWx3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FacXdISjtBWW53SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpxd0hSO0FZbHdISTtFQUNJO0Fab3dIUjtBWWp3SEk7RUFDSTtBWm13SFI7QVlod0hJO0VBeEJKO0lBeUJRO0VabXdITjtBQUNGOztBWTV2SEk7RUFDSTtBWit2SFI7QVk1dkhJO0VBQ0k7QVo4dkhSO0FZNXZIUTtFQUhKO0lBSVE7RVordkhWO0FBQ0Y7O0FZcnZISTs7RUFFSTtBWnd2SFI7QVlwdkhRO0VBREo7SUFFUTtFWnV2SFY7QUFDRjs7QVludkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzdkhKO0FZcHZISTtFQUNJO0Fac3ZIUjtBWW52SEk7RUFDSTtBWnF2SFI7QVlsdkhJO0VBQ0k7QVpvdkhSO0FZanZISTtFQUNJO0VBQ0E7QVptdkhSO0FZanZIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabXZIWjtBWTN1SFE7Ozs7OztFQUVJO0FaaXZIWjtBWXp1SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoydUhaO0FZeHVIUTtFQUNJO0FaMHVIWjtBWXB1SFE7RUFDSTtBWnN1SFo7QVlsdUhJO0VBQ0k7RUFDQTtBWm91SFI7QVlsdUhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm91SFo7QVlodUhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVprdUhSO0FZL3RISTtFQUNJO0FaaXVIUjtBWTd0SEk7RUE3Rko7SUE4RlE7SUFDQTtJQUNBLHNFQUNJO0lBSUo7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VaNHRITjtFWTF0SE07SUFDSTtFWjR0SFY7RVl6dEhNO0lBQ0k7RVoydEhWO0VZeHRITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VaMHRIVjtFWXZ0SE07SUFDSTtFWnl0SFY7RVl2dEhVO0lBQ0k7SUFDQTtFWnl0SGQ7RVlydEhNO0lBQ0k7RVp1dEhWO0VZcnRIVTtJQUNJO0VadXRIZDtFWW50SE07SUFDSTtFWnF0SFY7RVludEhVO0lBQ0k7RVpxdEhkO0VZanRITTtJQUNJO0VabXRIVjtFWWp0SFU7SUFDSTtFWm10SGQ7RVkvc0hNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VaaXRIVjtFWTlzSE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFWmd0SFY7RVk5c0hVO0lBQ0k7SUFDQTtFWmd0SGQ7RVk3c0hVO0lBQ0k7SUFDQTtJQUNBO0VaK3NIZDtBQUNGOztBWXhzSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMnNISjtBWXpzSEk7RUFDSTtFQUNBO0FaMnNIUjtBWXhzSEk7RUFDSTtFQUNBO0VBQ0E7QVowc0hSO0FZdnNISTtFQUNJO0VBQ0E7QVp5c0hSOztBWW5zSEE7RUFDSTtFQUNBO0Fac3NISjs7QVluc0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fac3NISjtBWXBzSEk7RUFDSTtFQUNBO0VBQ0E7QVpzc0hSOztBWXZySEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjBySEo7O0FZdnJIQTtFQUNJO0VBQ0E7RUFDQTtBWjBySEo7O0FZdnJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMHJISjs7QVl2ckhBO0VBQ0k7RUFDQTtBWjBySEo7QVl4ckhJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMHJIUjs7QVl0ckhBO0VBQ0k7RUFDQTtFQUNBO0FaeXJISjs7QVl0ckhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnlySEo7QVl2ckhJO0VBQ0k7RUFDQTtBWnlySFI7QVl0ckhJO0VBQ0k7RUFDQTtBWndySFI7O0FZcHJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1ckhKO0FZcnJISTtFQUNJO0VBQ0E7RUFDQTtBWnVySFI7O0FZL3FIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Faa3JISjs7QVkvcUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmtySEo7O0FZL3FIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Faa3JISjs7QVkvcUhBO0VBQ0k7RUFDQTtFQUNBO0Faa3JISjs7QVkvcUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVprckhKOztBWS9xSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa3JISjtBWWhySEk7RUFWSjtJQVdRO0VabXJITjtBQUNGOztBWWhySEE7RUFDSTtFQUNBO0VBQ0E7QVptckhKO0FZanJISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptckhSO0FZanJIUTtFQVBKO0lBUVE7RVpvckhWO0FBQ0Y7O0FZaHJIQTtFQUNJO0VBQ0E7RUFDQTtBWm1ySEo7O0FZNXFIQTtFQUNJO0VBQ0E7QVorcUhKO0FZN3FISTtFQUpKO0lBS1E7RVpnckhOO0FBQ0Y7O0FZN3FIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaZ3JISjs7QVk3cUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ3JISjs7QVk3cUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdySEo7O0FZN3FIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaZ3JISjs7QVk3cUhBO0VBQ0k7QVpnckhKOztBWTdxSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmdySEo7QVk5cUhJO0VBQ0k7QVpnckhSOztBWTVxSEE7RUFDSTtFQUNBO0FaK3FISjs7QVk1cUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVorcUhKOztBWXpxSEk7RUFDSTtBWjRxSFI7O0FZeHFIQTtFQUNJO0VBQ0E7RUFDQTtBWjJxSEo7QVl6cUhJO0VBQ0k7RUFDQTtFQUNBO0FaMnFIUjtBWXJxSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadXFIUjs7QVlqcUhBO0VBQ0k7RUFDQTtFQUNBO0Fab3FISjtBWWxxSEk7RUFDSTtFQUNBO0VBQ0E7QVpvcUhSOztBWTVwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK3BISjtBWTdwSEk7RUFDSTtFQUNBO0FaK3BIUjtBWTdwSFE7RUFDSTtBWitwSFo7QVk1cEhRO0VBQ0k7QVo4cEhaOztBWXpwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRwSEo7QVkxcEhJO0VBQ0k7QVo0cEhSO0FZenBISTtFQUNJO0FaMnBIUjs7QVl2cEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVowcEhKOztBWXZwSEE7RUFDSTtBWjBwSEo7O0FZdnBIQTtFQUNJO0VBQ0E7RUFDQTtBWjBwSEo7O0FZdHBIQTtFQUNJO0FaeXBISjs7QVl0cEhBO0VBQ0k7RUFDQTtFQUNBO0FaeXBISjtBWXZwSEk7RUFMSjtJQU1RO0VaMHBITjtBQUNGOztBWW5wSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNwSEo7O0FZbnBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNwSEo7O0FZanBIQTtFQUNJO0VBQ0E7QVpvcEhKO0FZbHBISTtFQUNJO0VBQ0E7RUFDQTtBWm9wSFI7QVlscEhRO0VBQ0k7RUFDQTtBWm9wSFo7QVlocEhJO0VBQ0k7RUFDQTtBWmtwSFI7QVlocEhRO0VBQ0k7QVprcEhaO0FZOW9ISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpncEhSO0FZN29ISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVorb0hSO0FZN29IUTtFQUNJO0VBQ0E7QVorb0haO0FZNW9IUTtFQUNJO0VBQ0E7QVo4b0haO0FZNW9IWTtFQUNJO0FaOG9IaEI7QVl6b0hJO0VBQ0k7QVoyb0hSOztBWW5vSEE7RUFFSTtJQUNJO0VacW9ITjtFWWxvSEU7SUFDSTtJQUNBO0lBQ0E7RVpvb0hOO0FBQ0Y7QVlqb0hBO0VBRUk7SUFDSTtFWmtvSE47QUFDRjtBWS9uSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaaW9ISjtBWS9uSEk7RUFDSTtFQUNBO0FaaW9IUjs7QVk3bkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpnb0hKOztBWTduSEE7RUFDSTtFQUNBO0VBQ0E7QVpnb0hKOztBWTduSEE7RUFDSTtFQUNBO0VBQ0E7QVpnb0hKOztBWTduSEE7RUFDSTtFQUNBO0VBQ0E7QVpnb0hKOztBWTduSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpnb0hKO0FZOW5ISTtFQUNJO0VBQ0E7QVpnb0hSO0FZN25ISTtFQUNJO0VBQ0E7RUFDQTtBWituSFI7O0FZdm5IQTtFQUVJO0lBQ0k7SUFDQTtFWnluSE47RVl0bkhFO0lBQ0k7SUFDQTtFWnduSE47QUFDRjtBWWpuSEE7RUFFSTtJQUNJO0lBQ0E7RVprbkhOO0VZL21IRTtJQUNJO0lBQ0E7RVppbkhOO0VZOW1IRTtJQUNJO0lBQ0E7RVpnbkhOO0VZN21IRTtJQUNJO0VaK21ITjtFWTVtSEU7OztJQUdJO0VaOG1ITjtFWTNtSEU7SUFDSTtFWjZtSE47RVkzbUhNO0lBQ0k7RVo2bUhWO0VZem1IRTtJQUNJO0VaMm1ITjtFWXptSE07O0lBRUk7RVoybUhWO0FBQ0Y7QVlobUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmttSEo7QVlobUhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa21IUjtBWWhtSFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVprbUhaO0FZL2xIUTtFQUNJO0FaaW1IWjtBWS9sSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmltSGhCO0FZOWxIWTtFQUNJO0VBQ0E7RUFDQTtBWmdtSGhCO0FZM2xISTtFQUNJO0VBQ0E7RUFDQTtBWjZsSFI7O0FZcGxISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FadWxIUjtBWXJsSFE7RUFOSjtJQU9RO0Vad2xIVjtBQUNGO0FZdGxIUTtFQUNJO0Fad2xIWjtBWXJsSFE7RUFDSTtFQUNBO0VBQ0E7QVp1bEhaO0FZcmxIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FadWxIaEI7QVlwbEhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNsSGhCO0FZbmxIWTtFQUNJO0VBQ0E7QVpxbEhoQjtBWWxsSFk7RUFDSTtFQUNBO0VBQ0E7QVpvbEhoQjtBWS9rSEk7RUFDSTtFQUNBO0FaaWxIUjtBWTVrSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjhrSFI7QVk1a0hRO0VBTko7SUFPUTtFWitrSFY7QUFDRjtBWTdrSFE7RUFDSTtFQUNBO0VBQ0E7QVora0haO0FZN2tIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaK2tIaEI7QVk1a0hZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjhrSGhCO0FZMWtIZ0I7RUFFSTtBWjJrSHBCO0FZdmtIWTtFQUNJO0VBQ0E7QVp5a0hoQjtBWXRrSFk7RUFDSTtFQUNBO0VBQ0E7QVp3a0hoQjs7QVlsa0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpxa0hKO0FZbmtISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnFrSFI7QVlsa0hJO0VBQ0k7RUFDQTtFQUNBO0Fab2tIUjtBWWxrSFE7RUFDSTtFQUNBO0Fab2tIWjs7QVk3akhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdrSEo7QVk5akhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ2tIUjtBWTlqSFE7RUFDSTtBWmdrSFo7QVk3akhRO0VBQ0k7QVorakhaO0FZNWpIUTtFQUNJO0FaOGpIWjtBWTFqSEk7RUFDSTtFQUNBO0VBQ0E7QVo0akhSO0FZMWpIUTtFQUNJO0VBQ0E7RUFDQTtBWjRqSFo7QVl6akhRO0VBQ0k7RUFDQTtFQUNBO0FaMmpIWjtBWXpqSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoyakhoQjtBWXpqSGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMmpIcEI7QVl4akhnQjtFQUNJO0FaMGpIcEI7QVlyakhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnVqSFo7QVlyakhZO0VBQ0k7RUFDQTtBWnVqSGhCO0FZcGpIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzakhoQjtBWWpqSEk7RUFDSTtBWm1qSFI7O0FZemlIQTtFQUNJO0VBQ0E7QVo0aUhKOztBWXZpSEE7RUFDSTtFQUNBO0VBQ0E7QVowaUhKOztBWXZpSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjBpSEo7QVl4aUhJO0VBQ0k7QVowaUhSOztBWXRpSEE7RUFDSTtFQUNBO0VBQ0E7QVp5aUhKOztBWXRpSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnlpSEo7O0FZcGlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnVpSEo7O0FZcGlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1aUhKO0FZcmlISTtFQUNJO0VBQ0E7RUFDQTtBWnVpSFI7O0FZbmlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNpSEo7O0FZbmlIQTtFQUNJO0VBQ0E7RUFDQTtBWnNpSEo7O0FZamlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm9pSEo7O0FZamlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm9pSEo7QVlsaUhJO0VBQ0k7RUFDQTtBWm9pSFI7O0FZaGlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptaUhKO0FZamlISTtFQUNJO0FabWlIUjtBWWppSFE7RUFDSTtBWm1pSFo7O0FZOWhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmlpSEo7O0FZOWhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaaWlISjs7QVk5aEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVppaUhKOztBWTloSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWmlpSEo7O0FZOWhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVppaUhKO0FZL2hISTtFQUNJO0VBQ0E7RUFDQTtBWmlpSFI7O0FhMXhLQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0Fid3hLSjs7QWFyeEtBO0VBQ0k7RUFDQTtFQUNBO0Fid3hLSjs7QWFqeEtBO0VBQ0k7RUFDQTtBYm94S0o7O0FhanhLQTtFQUNJO0VBQ0E7RUFDQTtBYm94S0o7O0FhanhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJveEtKOztBYWp4S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fib3hLSjs7QWFqeEtBO0VBQ0k7RUFDQTtFQUNBO0Fib3hLSjs7QWE3d0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJneEtKO0FhOXdLSTtFQU5KO0lBT1E7RWJpeEtOO0FBQ0Y7O0FhMXdLQTtFQUNJO0VBQ0E7QWI2d0tKO0FhM3dLSTtFQUpKO0lBS1E7SUFDQTtFYjh3S047QUFDRjs7QWEzd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI4d0tKOztBYTN3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI4d0tKOztBYTN3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiOHdLSjs7QWEzd0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI4d0tKOztBYTN3S0E7RUFDSTtBYjh3S0o7O0FhendLQTtFQUNJO0VBQ0E7QWI0d0tKO0FhMXdLSTtFQUNJO0FiNHdLUjtBYXp3S0k7RUFDSTtFQUNBO0FiMndLUjs7QWF2d0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMHdLSjs7QWF2d0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWIwd0tKO0FheHdLSTtFQUNJO0VBQ0E7RUFDQTtBYjB3S1I7O0FhdHdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnl3S0o7O0FhcHdLQTtFQUNJO0VBQ0E7RUFDQTtBYnV3S0o7O0FhcHdLQTtFQUNJO0VBQ0E7RUFDQTtBYnV3S0o7O0FhcHdLQTtFQUNJO0VBQ0E7QWJ1d0tKOztBYXB3S0E7RUFDSTtFQUNBO0VBQ0E7QWJ1d0tKOztBYWx3S0E7RUFDSTtFQUNBO0VBQ0E7QWJxd0tKOztBYWx3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxd0tKOztBYWx3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxd0tKOztBYWx3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FicXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJtd0tKOztBYWh3S0E7RUFDSTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJtd0tKOztBYTl2S0E7RUFDSTtBYml3S0o7O0FhNXZLQTtFQUNJO0FiK3ZLSjs7QWE1dktBO0VBQ0k7RUFDQTtFQUNBO0FiK3ZLSjtBYTd2S0k7RUFDSTtFQUNBO0VBQ0E7QWIrdktSO0FheHZLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIwdktSOztBYWp2S0k7RUFESjtJQUVRO0VicXZLTjtBQUNGOztBYWx2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnF2S0o7O0FhbHZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnF2S0o7O0FhbHZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxdktKOztBYWx2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnF2S0o7O0FhbHZLQTtFQUNJO0FicXZLSjs7QWFsdktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FicXZLSjs7QWEzdUtJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjh1S1I7QWE1dUtRO0VBQ0k7RUFDQTtBYjh1S1o7QWF4dUtJO0VBQ0k7RUFDQTtBYjB1S1I7QWFydUtJO0VBQ0k7QWJ1dUtSO0FhbHVLSTtFQUNJO0VBQ0E7QWJvdUtSO0FhL3RLSTtFQUNJO0FiaXVLUjs7QWF6dEtBO0VBQ0k7RUFDQTtFQUNBO0FiNHRLSjs7QWF6dEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI0dEtKO0FhMXRLSTtFQUNJO0VBQ0E7QWI0dEtSO0FhenRLSTtFQUNJO0VBQ0E7RUFDQTtBYjJ0S1I7QWF6dEtRO0VBQ0k7RUFDQTtBYjJ0S1o7QWF4dEtRO0VBQ0k7RUFDQTtBYjB0S1o7QWF0dEtJO0VBQ0k7RUFDQTtBYnd0S1I7O0FhcHRLQTtFQUNJO0FidXRLSjs7QWFwdEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJ1dEtKOztBYXB0S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnV0S0o7O0FhcHRLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnV0S0o7O0FhcHRLQTtFQUNJO0VBQ0E7RUFDQTtBYnV0S0o7O0FhcHRLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidXRLSjs7QWFwdEtBO0VBQ0k7RUFDQTtBYnV0S0o7O0FhcHRLQTtFQUNJO0VBQ0E7QWJ1dEtKOztBYXB0S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidXRLSjs7QWFodEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibXRLSjtBYWp0S0k7O0VBRUk7QWJtdEtSOztBYS9zS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJrdEtKO0FhaHRLSTtFQUNJO0VBQ0E7QWJrdEtSOztBYTFzS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjZzS0o7QWEzc0tJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZzS1I7QWExc0tJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNHNLUjtBYXpzS0k7RUFDSTtFQUNBO0VBQ0E7QWIyc0tSO0FheHNLSTtFQUNJO0VBQ0E7QWIwc0tSOztBYXBzS0E7RUFDSTtBYnVzS0o7O0FhaHNLQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm1zS0o7QWFqc0tJOztFQUNJO0VBQ0E7QWJvc0tSO0FhanNLSTs7RUFDSTtFQUNBO0Fib3NLUjtBYWxzS1E7O0VBQ0k7QWJxc0taOztBYWhzS0E7RUFDSTtBYm1zS0o7O0FhaHNLQTtFQUNJO0VBQ0E7QWJtc0tKOztBYTVyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK3JLSjs7QWE1cktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK3JLSjs7QWE1cktBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYityS0o7O0FhNXJLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIrcktKOztBYTVyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK3JLSjs7QWE1cktBO0VBQ0k7QWIrcktKOztBYXhyS0E7RUFDSTtFQUNBO0VBQ0E7QWIycktKOztBYXhyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMnJLSjs7QWF4cktBO0VBQ0k7RUFDQTtBYjJyS0o7O0FheHJLQTtFQUNJO0VBQ0E7QWIycktKOztBYXhyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjJyS0o7O0FheHJLQTtFQUNJO0VBQ0E7RUFDQTtBYjJyS0o7O0FheHJLQTtFQUNJO0VBQ0E7RUFDQTtBYjJyS0o7O0FheHJLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIycktKO0FhenJLSTtFQUNJO0VBQ0E7QWIycktSOztBYXZyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIwcktKOztBYW5yS0E7RUFDSTtFQUNBO0VBQ0E7QWJzcktKO0FhcHJLSTtFQUNJO0VBQ0E7QWJzcktSO0FhbnJLSTtFQUNJO0FicXJLUjs7QWE3cUtBO0VBRUk7SUFDSTtJQUNBO0ViK3FLTjtFYTVxS0U7SUFDSTtJQUNBO0ViOHFLTjtFYTNxS0U7SUFDSTtJQUNBO0ViNnFLTjtFYTFxS0U7SUFDSTtFYjRxS047RWF6cUtFO0lBQ0k7RWIycUtOO0VheHFLRTtJQUNJO0ViMHFLTjtFYXZxS0U7SUFDSTtJQUNBO0VieXFLTjtFYXZxS007SUFDSTtJQUNBO0VieXFLVjtFYXJxS0U7SUFDSTtJQUNBO0lBQ0E7RWJ1cUtOO0FBQ0Y7QWM3K0xBOzs7OztFQUFBO0FBU0E7RUFDSTtBZDQrTEo7QWMxK0xJO0VBQ0k7RUFDQTtBZDQrTFI7O0FlMS9MQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7QWZ3L0xKOztBZ0JwZ01BOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtBaEJrZ01KO0FnQmhnTUk7RUFKSjtJQUtRO0lBQ0E7RWhCbWdNTjtBQUNGOztBZ0JoZ01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJtZ01KOztBZ0JoZ01BO0VBQ0k7RUFDQTtBaEJtZ01KOztBZ0JoZ01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm1nTUo7QWdCamdNSTtFQUNJO0VBQ0E7RUFDQTtBaEJtZ01SO0FnQmhnTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJrZ01SOztBZ0I5L0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJpZ01KOztBZ0I5L0xBO0VBQ0k7QWhCaWdNSjs7QWdCMS9MQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI2L0xKO0FnQjMvTEk7RUFYSjtJQVlRO0lBQ0E7SUFDQTtFaEI4L0xOO0FBQ0Y7O0FnQjMvTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCOC9MSjs7QWdCMy9MQTtFQUNJO0FoQjgvTEo7O0FnQjMvTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCOC9MSjs7QWdCMy9MQTtFQUNJO0VBQ0E7RUFDQTtBaEI4L0xKOztBZ0J2L0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCMC9MSjtBZ0J2L0xJO0VBQ0k7QWhCeS9MUjs7QWdCci9MQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ3L0xKOztBZ0JyL0xBO0VBQ0k7RUFDQTtBaEJ3L0xKOztBZ0JyL0xBO0VBQ0k7QWhCdy9MSjs7QWdCci9MQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ3L0xKOztBZ0JqL0xBO0VBQ0k7RUFDQTtFQUNBO0FoQm8vTEo7QWdCbC9MSTtFQUxKO0lBTVE7SUFDQTtFaEJxL0xOO0FBQ0Y7O0FnQmwvTEE7RUFDSTtFQUNBO0VBQ0E7QWhCcS9MSjs7QWdCbC9MQTtFQUNJO0FoQnEvTEo7O0FnQmwvTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnEvTEo7O0FnQmwvTEE7RUFDSTtFQUNBO0VBQ0E7QWhCcS9MSjs7QWdCOStMQTtFQUNJO0VBQ0E7RUFDQTtBaEJpL0xKOztBZ0I5K0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJpL0xKO0FnQi8rTEk7RUFDSTtBaEJpL0xSOztBZ0I3K0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCZy9MSjs7QWdCNytMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmcvTEo7O0FnQjcrTEE7RUFDSTtFQUNBO0FoQmcvTEo7O0FnQjcrTEE7RUFDSTtFQUNBO0FoQmcvTEo7O0FnQjcrTEE7RUFDSTtBaEJnL0xKOztBZ0I3K0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCZy9MSjs7QWdCNytMQTtFQUNJO0VBQ0E7RUFDQTtBaEJnL0xKOztBZ0I3K0xBO0VBQ0k7RUFDQTtBaEJnL0xKOztBZ0J6K0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNCtMSjtBZ0IxK0xJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCNCtMUjtBZ0J6K0xJO0VBQ0k7QWhCMitMUjtBZ0J4K0xJO0VBQ0k7QWhCMCtMUjs7QWdCbCtMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCcStMSjs7QWdCbCtMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQnErTEo7QWdCbitMSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQnErTFI7QWdCbCtMSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQm8rTFI7O0FnQmgrTEE7RUFDSTtFQUNBO0VBQ0E7QWhCbStMSjtBZ0JqK0xJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCbStMUjtBZ0JqK0xRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJtK0xaOztBZ0J6OUxBO0VBRUk7SUFDSTtFaEIyOUxOO0FBQ0Y7QWdCeDlMQTtFQUdJO0lBQ0k7RWhCdzlMTjtFZ0J0OUxNO0lBQ0k7SUFDQTtFaEJ3OUxWO0FBQ0Y7QWdCaDlMQTtFQUVJOztJQUVJO0VoQmk5TE47QUFDRjtBaUJyMk1BOzs7OztFQUFBO0FBYUk7RUFDSTtBakJnMk1SOztBaUIxMU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI2MU1KO0FpQjMxTUk7RUFQSjtJQVFRO0lBQ0E7SUFDQTtFakI4MU1OO0FBQ0Y7O0FpQjMxTUE7RUFDSTtBakI4MU1KOztBaUIzMU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCODFNSjtBaUI1MU1JO0VBTko7SUFPUTtJQUNBO0VqQisxTU47RWlCNzFNTTtJQUNJO0lBQ0E7RWpCKzFNVjtBQUNGOztBaUJ2MU1BO0VBQ0k7QWpCMDFNSjs7QWlCdjFNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjAxTUo7QWlCeDFNSTtFQU5KO0lBT1E7SUFDQTtFakIyMU1OO0FBQ0Y7O0FpQngxTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakIyMU1KO0FpQnoxTUk7RUFDSTtFQUNBO0VBQ0E7QWpCMjFNUjtBaUJ4MU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakIwMU1SO0FpQnYxTUk7RUFDSTtBakJ5MU1SOztBaUJyMU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCdzFNSjtBaUJ0MU1JO0VBTko7SUFPUTtFakJ5MU1OO0FBQ0Y7O0FpQnQxTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnkxTUo7O0FpQnQxTUE7RUFDSTtBakJ5MU1KO0FpQnYxTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCeTFNUjtBaUJ2MU1RO0VBQ0k7QWpCeTFNWjtBaUJ0MU1RO0VBQ0k7QWpCdzFNWjtBaUJwMU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzMU1SO0FpQm4xTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxMU1SOztBaUIvME1BO0VBQ0k7QWpCazFNSjs7QWlCLzBNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCazFNSjtBaUJoMU1JO0VBQ0k7RUFDQTtBakJrMU1SO0FpQi8wTUk7RUFDSTtBakJpMU1SOztBaUJ6ME1BO0VBQ0k7QWpCNDBNSjs7QWlCejBNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI0ME1KO0FpQjEwTUk7RUFSSjtJQVNRO0lBQ0E7RWpCNjBNTjtBQUNGOztBaUJ4ME1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjIwTVI7QWlCejBNUTtFQUNJO0VBQ0E7RUFDQTtBakIyME1aOztBaUJsME1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnEwTUo7O0FpQmgwTUk7RUFDSTtFQUNBO0VBQ0E7QWpCbTBNUjtBaUJoME1JO0VBQ0k7RUFDQTtBakJrME1SO0FpQi96TUk7RUFDSTtBakJpME1SO0FpQi96TVE7RUFISjtJQUlRO0VqQmswTVY7QUFDRjs7QWlCNXpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQit6TUo7QWlCN3pNSTtFQUNJO0VBQ0E7RUFDQTtBakIrek1SOztBaUJ6ek1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI0ek1KOztBaUJ6ek1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCNHpNSjs7QWlCdnpNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMHpNSjtBaUJ4ek1JO0VBQ0k7RUFDQTtBakIwek1SO0FpQnZ6TUk7RUFDSTtFQUNBO0VBQ0E7QWpCeXpNUjtBaUJ0ek1JO0VBckJKO0lBc0JRO0lBQ0E7RWpCeXpNTjtBQUNGOztBaUJwek1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCdXpNSjtBaUJyek1JO0VBQ0k7RUFDQTtFQUNBO0FqQnV6TVI7QWlCcnpNUTtFQUNJO0FqQnV6TVo7O0FpQmh6TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm16TUo7QWlCanpNSTtFQUNJO0FqQm16TVI7QWlCaHpNSTtFQUNJO0FqQmt6TVI7QWlCL3lNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQml6TVI7O0FpQjN5TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakI4eU1KO0FpQjV5TUk7RUFDSTtFQUNBO0VBQ0E7QWpCOHlNUjtBaUIzeU1JO0VBQ0k7RUFDQTtFQUNBO0FqQjZ5TVI7QWlCMXlNSTtFQUNJO0VBQ0E7QWpCNHlNUjs7QWlCdHlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCeXlNSjs7QWlCcHlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJ1eU1KO0FpQnJ5TUk7RUFDSTtFQUNBO0VBQ0E7QWpCdXlNUjtBaUJweU1JO0VBQ0k7RUFDQTtFQUNBO0FqQnN5TVI7QWlCcHlNUTtFQUNJO0FqQnN5TVo7QWlCbHlNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm95TVI7O0FpQjV4TUE7RUFFSTtJQUNJO0VqQjh4TU47RWlCM3hNRTtJQUNJO0VqQjZ4TU47RWlCMXhNRTtJQUNJO0lBQ0E7RWpCNHhNTjtFaUJ6eE1FO0lBQ0k7RWpCMnhNTjtFaUJ4eE1FO0lBQ0k7RWpCMHhNTjtFaUJ2eE1FO0lBQ0k7RWpCeXhNTjtBQUNGO0FpQnR4TUE7RUFFSTtJQUNJO0VqQnV4TU47RWlCcHhNRTtJQUNJO0VqQnN4TU47RWlCbnhNRTtJQUNJO0lBQ0E7RWpCcXhNTjtFaUJseE1FO0lBQ0k7RWpCb3hNTjtFaUJqeE1FO0lBQ0k7RWpCbXhNTjtBQUNGO0FpQjF3TUE7O0VBRUk7RUFDQTtBakI0d01KOztBaUJ4d01BO0VBRUk7SUFDSTtFakIwd01OO0VpQnZ3TUU7SUFDSTtFakJ5d01OO0FBQ0Y7QWlCcndNQTtFQUVJOzs7O0lBSUk7RWpCc3dNTjtBQUNGO0FrQnB6TkE7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQml6Tko7O0FrQjl5TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJpek5KOztBa0I5eU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQml6Tko7O0FrQjl5TkE7RUFDSTtBbEJpek5KOztBa0I5eU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJpek5KOztBa0I5eU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCaXpOSjs7QWtCOXlOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQml6Tko7O0FrQjl5TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQml6Tko7QWtCL3lOSTtFQUNJO0VBQ0E7QWxCaXpOUjs7QWtCenlOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQjR5Tko7O0FrQnp5TkE7RUFDSTtFQUNBO0VBQ0E7QWxCNHlOSjs7QWtCenlOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEI0eU5KO0FrQjF5Tkk7RUFDSTtFQUNBO0FsQjR5TlI7O0FrQnB5TkE7RUFDSTtFQUNBO0FsQnV5Tko7O0FrQnB5TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCdXlOSjtBa0JyeU5JO0VBQ0k7RUFDQTtBbEJ1eU5SO0FrQnB5Tkk7RUFDSTtFQUNBO0FsQnN5TlI7O0FrQmx5TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQnF5Tko7O0FrQmx5TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCcXlOSjs7QWtCbHlOQTtFQUNJO0VBQ0E7QWxCcXlOSjs7QWtCbHlOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCcXlOSjs7QWtCbHlOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQnF5Tko7O0FrQmx5TkE7RUFDSTtBbEJxeU5KOztBa0J6eE5JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCNHhOUjtBa0IxeE5RO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIyeE5aO0FrQnZ4Tlk7RUFDSTtFQUNBO0FsQnl4TmhCO0FrQnJ4TlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQnV4Tlo7QWtCcnhOWTtFQUNJO0VBQ0E7RUFDQTtBbEJ1eE5oQjtBa0JueE5RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCcXhOWjs7QWtCMXdOQTtFQUVJO0lBQ0k7SUFDQTtJQUNBO0VsQjR3Tk47RWtCMXdOTTtJQUNJO0lBQ0E7RWxCNHdOVjtFa0J4d05FO0lBQ0k7RWxCMHdOTjtFa0J2d05FO0lBQ0k7RWxCeXdOTjtFa0J0d05FO0lBQ0k7RWxCd3dOTjtFa0J0d05NO0lBQ0k7SUFDQTtFbEJ3d05WO0VrQnB3TkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFbEJzd05OO0VrQm53TkU7SUFDSTtFbEJxd05OO0VrQmx3TkU7SUFDSTtJQUNBO0VsQm93Tk47RWtCbHdOTTtJQUNJO0lBQ0E7RWxCb3dOVjtFa0Jod05FO0lBQ0k7RWxCa3dOTjtFa0Ivdk5FO0lBQ0k7RWxCaXdOTjtFa0I1dk5NO0lBQ0k7SUFDQTtFbEI4dk5WO0VrQjN2Tk07SUFDSTtJQUNBO0lBQ0E7SUFDQTtFbEI2dk5WO0VrQnp2TkU7SUFDSTtFbEIydk5OO0VrQnp2Tk07SUFDSTtJQUNBO0VsQjJ2TlY7RWtCenZOVTtJQUNJO0lBQ0E7RWxCMnZOZDtFa0J2dk5NO0lBQ0k7RWxCeXZOVjtFa0J0dk5NO0lBQ0k7RWxCd3ZOVjtFa0Jydk5NO0lBQ0k7RWxCdXZOVjtBQUNGO0FrQmx2TkE7RUFFSTtJQUNJO0VsQm12Tk47QUFDRjtBa0I1dU5BO0VBRUk7SUFDSTtFbEI2dU5OO0FBQ0Y7QW1CM21PQTs7Ozs7Ozs7OztFQUFBO0FBZ0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQndtT0o7O0FtQnJtT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cd21PSjs7QW1Ccm1PQTtFQUVJO0lBQ0k7SUFDQTtFbkJ1bU9OO0VtQnBtT0U7SUFDSTtJQUNBO0VuQnNtT047QUFDRjtBbUI3bE9BO0VBQ0k7RUFDQTtFQUNBO0FuQitsT0o7QW1CN2xPSTtFQUNJO0VBQ0E7QW5CK2xPUjs7QW1CeGxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQjJsT0o7QW1CemxPSTtFQUNJO0VBQ0E7QW5CMmxPUjs7QW1CdmxPQTtFQUNJO0VBQ0E7QW5CMGxPSjs7QW1CdmxPQTtFQUNJO0VBQ0E7QW5CMGxPSjs7QW1CdmxPQTtFQUNJO0VBQ0E7QW5CMGxPSjs7QW1CdmxPQTtFQUNJO0VBQ0E7QW5CMGxPSjs7QW1CdmxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkIwbE9KOztBbUJ2bE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CMGxPSjs7QW1CbmxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQnNsT0o7QW1CcGxPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQnNsT1I7QW1CbmxPSTtFQUNJO0VBQ0E7RUFDQTtBbkJxbE9SO0FtQmxsT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cb2xPUjtBbUJsbE9RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5Cb2xPWjs7QW1CNWtPQTtFQUNJO0FuQitrT0o7O0FtQnhrT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkIya09KO0FtQnprT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQjJrT1I7QW1CemtPUTtFQUNJO0VBQ0E7QW5CMmtPWjtBbUJ4a09RO0VBQ0k7QW5CMGtPWjtBbUJ2a09RO0VBQ0k7RUFDQTtBbkJ5a09aO0FtQm5rT1E7RUFDSTtFQUNBO0FuQnFrT1o7QW1CbGtPUTtFQUNJO0FuQm9rT1o7QW1CamtPUTtFQUNJO0VBQ0E7QW5CbWtPWjs7QW1CampPSTtFQUNJO0FuQm9qT1I7O0FtQjVpT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CK2lPSjtBbUI3aU9JO0VBQ0k7QW5CK2lPUjtBbUI1aU9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5COGlPUjtBbUIzaU9JO0VBQ0k7RUFDQTtBbkI2aU9SO0FtQnhpT0k7RUFDSTtFQUNBO0VBQ0E7QW5CMGlPUjtBbUJ4aU9RO0VBQ0k7RUFDQTtFQUNBO0FuQjBpT1o7QW1CeGlPWTtFQUNJO0FuQjBpT2hCO0FtQm5pT0k7RUFDSTtFQUNBO0VBQ0E7QW5CcWlPUjtBbUJuaU9RO0VBQ0k7RUFDQTtFQUNBO0FuQnFpT1o7QW1CbmlPWTtFQUNJO0FuQnFpT2hCOztBbUJ6aE9JO0VBQ0k7RUFDQTtBbkI0aE9SOztBbUJ4aE9BO0VBQ0k7RUFDQTtFQUNBLDBGQUNJO0FuQjBoT1I7QW1CcGhPSTtFQUNJO0FuQnNoT1I7QW1CL2dPSTtFQUNJO0FuQmloT1I7O0FtQjdnT0E7RUFDSTtFQUNBO0FuQmdoT0o7QW1COWdPSTtFQUNJO0FuQmdoT1I7O0FtQnhnT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CMmdPSjtBbUJ6Z09JO0VBQ0k7QW5CMmdPUjs7QW1CcmdPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBLDBGQUNJO0FuQnVnT1I7QW1CcGdPSTtFQUNJO0VBQ0E7QW5Cc2dPUjtBbUJuZ09JO0VBQ0k7QW5CcWdPUjtBbUJsZ09JO0VBQ0k7QW5Cb2dPUjtBbUJsZ09RO0VBQ0k7QW5Cb2dPWjs7QW1CLy9OQTtFQUNJO0VBQ0E7QW5Ca2dPSjs7QW1CLy9OQTtFQUNJO0FuQmtnT0o7O0FtQjcvTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJnZ09KO0FtQjkvTkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJnZ09SOztBbUJ6L05BO0VBQ0k7RUFDQTtBbkI0L05KOztBbUJ6L05BO0VBQ0k7RUFDQTtBbkI0L05KOztBbUJ6L05BO0VBQ0k7QW5CNC9OSjs7QW1CdC9OQTtFQUNJO0VBQ0E7RUFDQTtBbkJ5L05KO0FtQnAvTkk7RUFDSTtFQUNBO0FuQnMvTlI7O0FtQjkrTkE7RUFFSTtJQUNJO0VuQmcvTk47RW1CMytOTTtJQUNJO0lBQ0E7SUFDQTtFbkI2K05WO0VtQjErTk07SUFDSTtFbkI0K05WO0VtQjErTlU7SUFDSTtFbkI0K05kO0VtQnYrTkU7SUFDSTtFbkJ5K05OO0VtQnQrTkU7SUFDSTtJQUNBO0VuQncrTk47RW1CdCtOTTtJQUNJO0lBQ0E7RW5CdytOVjtFbUJwK05FO0lBQ0k7RW5CcytOTjtFbUJuK05FO0lBQ0k7RW5CcStOTjtFbUJsK05FO0lBQ0k7RW5CbytOTjtFbUIvOU5NO0lBQ0k7RW5CaStOVjtFbUIzOU5NO0lBQ0k7SUFDQTtJQUNBO0VuQjY5TlY7RW1CMTlOTTtJQUNJO0VuQjQ5TlY7QUFDRjtBbUJ2OU5BO0VBRUk7SUFDSTtJQUNBO0VuQnc5Tk47QUFDRjtBbUIvOE5BO0VBRUk7SUFDSTtFbkJnOU5OO0VtQjc4TkU7OztJQUdJO0VuQis4Tk47QUFDRjtBbUJ4OE5BO0VBRUk7SUFDSTtFbkJ5OE5OO0VtQnQ4TkU7SUFDSTtJQUNBO0VuQnc4Tk47RW1CcjhORTtJQUNJO0VuQnU4Tk47RW1CcDhORTtJQUNJO0VuQnM4Tk47QUFDRjtBb0I5Z1BBOzs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBQ0k7RUFDQTtBcEJzZ1BKOztBb0JqZ1BBO0VBQ0k7QXBCb2dQSjs7QW9CNy9PQTtFQUNJO0VBQ0E7RUFDQTtBcEJnZ1BKOztBb0IxL09BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsaVBBQ0k7QXBCNC9PUjtBb0JwL09JO0VBQ0k7RUFDQTtBcEJzL09SO0FvQnAvT1E7RUFDSTtBcEJzL09aO0FvQjkrT0k7RUFDSTtFQUNBO0FwQmcvT1I7QW9CeitPSTtFQUNJO0VBQ0E7RUFDQTtBcEIyK09SO0FvQnorT1E7RUFDSTtFQUNBO0VBQ0E7QXBCMitPWjtBb0J4K09RO0VBQ0k7QXBCMCtPWjtBb0JyK09RO0VBQ0k7QXBCdStPWjs7QW9CaCtPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCbStPSjs7QW9CaCtPQTtFQUNJO0FwQm0rT0o7O0FvQmgrT0E7RUFDSTtFQUNBO0FwQm0rT0o7O0FvQmgrT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJtK09KOztBb0I5OU9BO0VBQ0k7RUFDQTtFQUNBO0FwQmkrT0o7O0FvQjk5T0E7RUFDSTtFQUNBO0VBQ0E7QXBCaStPSjs7QW9COTlPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQmkrT0o7O0FvQjM5T0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQjg5T0o7O0FvQnY5T0E7RUFDSTtFQUNBO0FwQjA5T0o7O0FvQm45T0E7RUFDSTtFQUNBO0VBQ0E7QXBCczlPSjs7QW9CbjlPQTtFQUNJO0FwQnM5T0o7O0FvQjU4T0E7RUFFSTtJQUNJO0VwQjg4T047QUFDRjtBcUI5cFBBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBR0k7QXJCNnBQSjtBcUJ2cFBJO0VBQ0k7QXJCeXBQUjtBcUJ0cFBJO0VBQ0k7RUFDQTtFQUNBO0FyQndwUFI7QXFCbnBQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxzTEFDSTtBckJvcFBaO0FxQjdvUEk7RUFDSTtFQUNBO0FyQitvUFI7QXFCem9QSTtFQUNJO0VBQ0E7RUFDQTtBckIyb1BSO0FxQnhvUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckIwb1BSO0FxQnBvUEk7O0VBRUk7QXJCc29QUjtBcUJub1BJO0VBQ0k7QXJCcW9QUjtBcUJsb1BJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJvb1BSO0FxQmpvUEk7RUFDSTtBckJtb1BSO0FxQnpuUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQjJuUFI7QXFCaG5QSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJrblBSO0FxQjNtUEk7RUFDSTtFQUNBO0FyQjZtUFI7QXFCMW1QSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQjRtUFI7QXFCam1QSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCbW1QUjtBcUJqbVBRO0VBQ0k7RUFDQTtFQUNBO0FyQm1tUFo7QXFCaG1QUTtFQUNJO0FyQmttUFo7QXFCMWxQSTtFQUNJO0VBQ0E7QXJCNGxQUjtBcUJ0bFBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQndsUFI7QXFCbGxQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJvbFBSO0FxQmxsUFE7RUFDSTtFQUNBO0VBQ0E7QXJCb2xQWjtBcUI1a1BJO0VBRUk7SUFDSTtFckI2a1BWO0VxQjFrUE07SUFDSTtFckI0a1BWO0FBQ0Y7O0FxQnhrUEE7RUFFSTtJQUNJO0lBQ0E7RXJCMGtQTjtFcUJ2a1BFO0lBQ0k7SUFDQTtFckJ5a1BOO0FBQ0Y7QXFCL2pQQTtFQUlROzs7SUFHSTtFckI4alBWO0VxQjNqUE07SUFDSTtFckI2alBWO0FBQ0Y7QXNCdDFQQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUEwQkE7RUFPSTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0F0QjYwUEo7O0FzQnYwUEE7RUFDSTtBdEIwMFBKOztBc0JwMFBBO0VBQ0k7RUFDQTtBdEJ1MFBKOztBc0I3elBBO0VBQ0k7QXRCZzBQSjs7QXNCM3pQQTtFQUNJO0F0Qjh6UEo7O0FzQnZ6UEE7RUFDSTtFQUNBO0F0QjB6UEo7O0FzQmh6UEE7RUFDSTtBdEJtelBKOztBdUJoNVBBOzs7Ozs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7O0VBQUE7QUFhQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBeEIyNVBKO0F3QnY1UEk7O0VBQ0k7RUFDQTtBeEIwNVBSO0F3QnY1UEk7O0VBQ0k7QXhCMDVQUjtBd0JyNVBJOztFQUNJO0VBQ0E7RUFDQTtBeEJ3NVBSO0F3QnI1UFE7Ozs7RUFFSTtBeEJ5NVBaO0F3QnA1UFE7O0VBQ0k7RUFDQTtBeEJ1NVBaO0F3Qmw1UFE7O0VBQ0k7RUFDQTtFQUNBO0F4QnE1UFo7QXdCLzRQUTs7RUFDSTtFQUNBO0VBQ0E7QXhCazVQWjtBd0JoNVBZOzs7O0VBRUk7QXhCbzVQaEI7QXdCajVQWTs7RUFDSTtFQUNBO0F4Qm81UGhCO0F3Qjc0UEk7Ozs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4Qmk1UFI7QXdCNTRQSTs7OztFQUVJO0F4Qmc1UFI7QXdCMTRQSTs7RUFDSTtFQUNBO0VBQ0E7QXhCNjRQUjtBd0IzNFBROztFQUNJO0VBQ0E7QXhCODRQWjtBd0I1NFBZOzs7RUFFSTtFQUNBO0F4Qis0UGhCO0F3QjU0UFk7O0VBQ0k7RUFDQTtBeEIrNFBoQjtBd0J4NFBJOztFQUNJO0VBQ0E7QXhCMjRQUjtBd0J6NFBROztFQUNJO0VBQ0E7QXhCNDRQWjs7QXdCcDRQSTtFQURKO0lBRVE7RXhCdzRQTjtBQUNGOztBeUJwaFFBOzs7OztFQUFBO0FBV0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJraFFKO0F5Qi9nUUk7O0VBQ0k7RUFDQTtBekJraFFSO0F5Qi9nUUk7O0VBQ0k7QXpCa2hRUjs7QXlCMWdRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6QjZnUUo7QXlCemdRSTtFQUNJO0VBQ0E7QXpCMmdRUjs7QXlCamdRSTtFQUNJO0VBQ0E7RUFDQTtBekJvZ1FSO0F5QmpnUUk7O0VBRUk7RUFDQTtBekJtZ1FSO0F5QmhnUVE7O0VBQ0k7RUFDQTtBekJtZ1FaO0F5Qi8vUEk7RUFDSTtFQUNBO0VBQ0E7QXpCaWdRUjs7QXlCei9QQTs7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7QXpCNC9QSjtBeUIxL1BJOzs7RUFDSTtBekI4L1BSOztBeUJ0L1BBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJ5L1BKO0F5QnQvUEk7RUFDSTtFQUNBO0F6QncvUFI7O0F5QnAvUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJ1L1BKO0F5QnIvUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJ1L1BSO0F5QnIvUFE7RUFDSTtBekJ1L1BaO0F5QnAvUFE7RUFDSTtBekJzL1BaO0F5QmwvUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qm8vUFI7O0F5QjErUEk7RUFDSTtFQUNBO0VBQ0E7QXpCNitQUjtBeUIzK1BRO0VBQ0k7RUFDQTtBekI2K1BaO0F5QnorUEk7RUFDSTtBekIyK1BSO0F5QnorUFE7RUFDSTtFQUNBO0F6QjIrUFo7QXlCeitQWTs7RUFFSTtBekIyK1BoQjtBeUJwK1BJO0VBQ0k7QXpCcytQUjtBeUJwK1BRO0VBQ0k7QXpCcytQWjs7QXlCMzlQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6Qjg5UFI7QXlCNTlQUTtFQUNJO0VBQ0E7QXpCODlQWjs7QXlCcjlQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6Qnc5UEo7QXlCdDlQSTtFQUNJO0F6Qnc5UFI7QXlCcjlQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6QnU5UFI7QXlCbDlQUTs7RUFFSTtBekJvOVBaOztBeUJ6OFBJO0VBQ0k7QXpCNDhQUjtBeUJ6OFBJO0VBQ0k7RUFDQTtBekIyOFBSO0F5Qng4UEk7O0VBRUk7QXpCMDhQUjs7QXlCbDhQQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCcThQSjtBeUJuOFBJOztFQUNJO0VBQ0E7QXpCczhQUjs7QXlCbDhQQTs7RUFFSTtBekJxOFBKO0F5Qm44UEk7O0VBQ0k7RUFDQTtBekJzOFBSOztBeUJsOFBBO0VBQ0k7RUFDQTtFQUNBO0F6QnE4UEo7O0F5Qmw4UEE7RUFDSTtFQUNBO0VBQ0E7QXpCcThQSjs7QXlCOTdQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0F6Qmc4UEo7QXlCOTdQSTtFQUVJO0VBQ0E7QXpCKzdQUjtBeUI1N1BJO0VBQ0k7RUFDQTtBekI4N1BSO0F5QjU3UFE7RUFDSTtFQUNBO0F6Qjg3UFo7QXlCMTdQSTtFQUNJO0VBQ0E7QXpCNDdQUjtBeUJ6N1BJO0VBQ0k7RUFDQTtFQUNBO0F6QjI3UFI7O0F5QnI3UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBekJ1N1BKO0F5QnI3UEk7RUFFSTtFQUNBO0F6QnM3UFI7O0F5Qjk2UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJpN1BKO0F5Qi82UEk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QXpCaTdQUjs7QXlCejZQQTs7Ozs7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjI2UEo7QXlCdjZQSTtFQUNJO0VBQ0E7RUFDQTtBekJ5NlBSO0F5QnA2UEk7RUFDSTtBekJzNlBSOztBeUI5NVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCaTZQSjtBeUIvNVBJOztFQUVJO0F6Qmk2UFI7O0F5QnY1UEk7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0F6QjA1UFI7QXlCeDVQUTtFQVJKOzs7SUFTUTtFekI2NVBWO0FBQ0Y7QXlCMTVQSTtFQUNJO0VBQ0E7RUFDQTtBekI0NVBSO0F5QjE1UFE7RUFMSjtJQU1RO0lBQ0E7RXpCNjVQVjtBQUNGOztBeUJuNVBJOztFQUVJO0F6QnM1UFI7QXlCbjVQSTs7RUFFSTtFQUNBO0F6QnE1UFI7QXlCbDVQSTtFQUNJO0VBQ0E7QXpCbzVQUjs7QXlCejRQQTtFQUNJO0F6QjQ0UEo7O0F5QnI0UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJ3NFBKO0F5QnQ0UEk7RUFDSTtFQUNBO0F6Qnc0UFI7O0F5QnA0UEE7RUFDSTtFQUNBO0VBQ0E7QXpCdTRQSjtBeUJyNFBJO0VBQ0k7RUFDQTtBekJ1NFBSO0F5QnA0UEk7RUFDSTtBekJzNFBSOztBeUI1M1BBO0VBQ0k7QXpCKzNQSjs7QXlCdDNQQTtFQUNJO0F6QnkzUEo7O0F5QnQzUEE7RUFFSTtJQUNJO0V6QnczUE47RXlCbjNQTTtJQUNJO0lBQ0E7RXpCcTNQVjtFeUJqM1BFO0lBQ0k7RXpCbTNQTjtFeUJoM1BFO0lBQ0k7SUFDQTtFekJrM1BOO0V5QmgzUE07SUFDSTtJQUNBO0V6QmszUFY7QUFDRjtBMEJ4N1FBOzs7Ozs7RUFBQTtBQVlBOztFQUVJO0VBQ0E7RUFDQTtBMUJxN1FKO0EwQmo3UUk7O0VBQ0k7RUFDQTtFQUNBO0ExQm83UVI7QTBCajdRSTs7RUFDSTtFQUNBO0VBQ0E7QTFCbzdRUjtBMEJsN1FROztFQUNJO0VBQ0E7QTFCcTdRWjtBMEIvNlFROztFQUNJO0VBQ0E7QTFCazdRWjtBMEIxNlFROztFQUNJO0VBQ0E7RUFDQTtBMUI2NlFaO0EwQjE2UVE7O0VBQ0k7QTFCNjZRWjtBMEJ6NlFJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCNDZRUjtBMEJ6NlFJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCNDZRUjtBMEJ6NlFJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0ExQjQ2UVI7QTBCejZRSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQjQ2UVI7QTBCejZRSTs7RUFDSTtFQUNBO0VBQ0E7QTFCNDZRUjtBMEJ6NlFJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0ExQjQ2UVI7QTBCeDZRSTtFQUVJOztJQUNJO0lBQ0E7RTFCMDZRVjtFMEJ4NlFVOztJQUNJO0lBQ0E7RTFCMjZRZDtFMEJ2NlFNOztJQUNJO0lBQ0E7SUFDQTtFMUIwNlFWO0UwQnY2UU07OztJQUNJO0UxQjI2UVY7QUFDRjs7QTBCaDZRSTtFQUNJO0VBQ0E7RUFDQTtBMUJtNlFSO0EwQjk1UUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQmc2UVI7QTBCOTVRUTtFQUNJO0VBQ0E7RUFDQTtBMUJnNlFaO0EwQjk1UVk7RUFDSTtBMUJnNlFoQjtBMEI3NVFZO0VBQ0k7QTFCKzVRaEI7QTBCMzVRUTtFQUNJO0ExQjY1UVo7QTBCejVRSTtFQUNJO0ExQjI1UVI7QTBCejVRUTtFQUNJO0ExQjI1UVo7QTBCdDVRUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0ExQnc1UVo7QTBCbjVRUTtFQUNJO0VBQ0E7QTFCcTVRWjtBMEJoNVFROztFQUVJO0VBQ0E7RUFDQTtFQUNBO0ExQms1UVo7QTBCOTRRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFCZzVRUjtBMEI3NFFJO0VBQ0k7QTFCKzRRUjtBMEIxNFFJO0VBQ0k7RUFDQTtFQUNBO0ExQjQ0UVI7QTBCMTRRUTtFQUNJO0VBQ0E7QTFCNDRRWjtBMEJ4NFFJO0VBQ0k7QTFCMDRRUjtBMEJ2NFFJO0VBRUk7SUFDSTtFMUJ3NFFWO0FBQ0Y7O0EwQjUzUVE7O0VBRUk7RUFDQTtBMUIrM1FaO0EwQjMzUUk7RUFDSTtFQUNBO0ExQjYzUVI7QTBCMTNRSTtFQUNJO0VBQ0E7QTFCNDNRUjtBMEIxM1FRO0VBQ0k7RUFDQTtBMUI0M1FaO0EwQnozUVE7RUFDSTtFQUNBO0ExQjIzUVo7QTBCeDNRUTtFQUNJO0VBQ0E7QTFCMDNRWjtBMEJ0M1FJO0VBQ0k7RUFDQTtBMUJ3M1FSOztBMkJucFJBOzs7RUFBQTtBQWFBO0VBQ0k7RUFDQTtFQUNBO0EzQjZvUko7O0E0QmpsUkk7RUR0REE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFM0Iyb1JOO0UyQnpvUk07SUFDSTtFM0Iyb1JWO0UyQnhvUk07SUFDSTtFM0Iwb1JWO0FBQ0Y7QTJCbG9SQTtFQUNJO0EzQm9vUko7QTJCbG9SSTtFQUNJO0EzQm9vUlI7QTJCam9SSTtFQUNJO0EzQm1vUlI7QTRCem5SSTtFRFhBO0lBSVE7RTNCb29SVjtBQUNGO0EyQmpvUkk7RUFDSTtFQUNBO0EzQm1vUlI7QTRCbG9SSTtFREhBO0lBS1E7RTNCb29SVjtBQUNGO0EyQjluUkk7RUFDSTtBM0Jnb1JSO0EyQjFuUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0I0blJSO0EyQjFuUlE7RUFDSTtBM0I0blJaO0EyQnRuUkk7RUFDSTtBM0J3blJSOztBMkI5bVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQmluUlI7QTJCL21SUTtFQUNJO0VBQ0E7RUFDQTtBM0JpblJaO0EyQjdtUkk7RUFDSTtFQUNBO0VBQ0E7QTNCK21SUjtBMkI3bVJRO0VBRUk7RUFDQTtBM0I4bVJaOztBMkJybVJBO0VBQ0k7RUFDQTtBM0J3bVJKO0EyQnRtUkk7RUFDSTtBM0J3bVJSO0EyQnJtUkk7RUFDSTtFQUNBO0VBQ0E7QTNCdW1SUjtBMkJybVJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0J1bVJaO0EyQm5tUkk7RUFDSTtBM0JxbVJSO0EyQm5tUlE7RUFDSTtFQUNBO0VBQ0E7QTNCcW1SWjs7QTJCMWxSSTtFQUNJO0VBQ0E7QTNCNmxSUjtBMkIxbFJJO0VBQ0k7RUFDQTtFQUNBO0EzQjRsUlI7O0EyQmxsUkk7RUFDSTtBM0JxbFJSO0EyQm5sUlE7RUFDSTtBM0JxbFJaO0EyQmxsUlE7RUFDSTtFQUNBO0EzQm9sUlo7QTJCamxSUTtFQUNJO0EzQm1sUlo7QTJCL2tSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCaWxSUjtBMkIva1JRO0VBQ0k7QTNCaWxSWjs7QTJCeGtSQTtFQUlROzs7SUFHSTtFM0J3a1JWO0FBQ0Y7QTJCM2pSSTtFQUNJO0VBQ0E7QTNCNmpSUjtBMkIzalJRO0VBQ0k7RUFDQTtBM0I2alJaO0EyQjFqUlE7RUFDSTtBM0I0alJaO0EyQnhqUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0IwalJSO0EyQnBqUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQnNqUlI7QTJCbmpSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0JxalJSO0EyQm5qUlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7QTNCbWpSWjtBMkI3aVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQitpUlI7QTJCNWlSSTtFQUNJO0EzQjhpUlI7QTJCemlSUTtFQUNJO0EzQjJpUlo7QTJCeGlSUTtFQUNJO0EzQjBpUlo7O0E2QjEzUkE7Ozs7O0VBQUE7QUFnQkE7RUFDSTtFQUNBO0VBQ0E7QTdCbTNSSjtBNkJqM1JJO0VBTEo7SUFNUTtFN0JvM1JOO0FBQ0Y7QTZCbDNSSTtFQVRKO0lBVVE7RTdCcTNSTjtBQUNGOztBNkJsM1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JxM1JKO0E2QmgzUkk7RUFWSjtJQVdRO0U3Qm0zUk47QUFDRjtBNkIxMlJJO0VBQ0k7RUFDQTtBN0I0MlJSO0E2QnAyUlE7RUFESjtJQUVRO0U3QnUyUlY7QUFDRjtBNkJyMlJRO0VBQ0k7QTdCdTJSWjs7QTZCbDJSQTtFQUNJO0VBQ0E7RUFDQTtBN0JxMlJKOztBNkJsMlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCcTJSSjtBNkJuMlJJO0VBQ0k7RUFDQTtBN0JxMlJSO0E2QmwyUkk7RUFDSTtFQUNBO0E3Qm8yUlI7QTZCajJSSTtFQUNJO0VBQ0E7QTdCbTJSUjtBNkJoMlJJO0VBQ0k7RUFDQTtBN0JrMlJSO0E2Qi8xUkk7RUFDSTtFQUNBO0E3QmkyUlI7O0E2QjcxUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBN0JnMlJKOztBNkI3MVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JnMlJKOztBNkI3MVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QmcyUko7QTZCMzFSSTtFQUNJO0E3QjYxUlI7QTZCbDFSSTtFQUNJO0E3Qm8xUlI7O0E2QmgxUkE7RUFDSTtFQUNBO0VBQ0E7QTdCbTFSSjs7QTZCNTBSQTtFQUNJO0VBQ0E7QTdCKzBSSjs7QTZCNTBSQTtFQUNJO0E3QiswUko7O0E2QjUwUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QiswUko7O0E2QjUwUkE7RUFDSTtBN0IrMFJKOztBNkI1MFJBO0VBQ0k7RUFDQTtFQUNBO0VBT0E7RUFDQTtFQUNBO0VBQ0E7QTdCeTBSSjs7QTZCdDBSQTtFQUNJO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QnMwUko7O0E2Qm4wUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JzMFJKOztBNkJuMFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QnMwUko7O0E2Qm4wUkE7RUFLSTtFQUNBO0E3QmswUko7O0E2Qi96UkE7RUFDSTtFQUNBO0E3QmswUko7O0E2QjF6UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCNnpSSjs7QTZCMXpSQTtFQUlJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0IwelJKO0E2Qnh6Ukk7RUFDSTtFQUNBO0E3QjB6UlI7O0E2QnR6UkE7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBN0J1elJKOztBNkJwelJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTdCdXpSSjs7QTZCaHpSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JtelJKOztBNkJoelJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qm16Uko7O0E2Qmh6UkE7RUFDSTtFQUNBO0E3Qm16Uko7O0E2Qmh6UkE7RUFDSTtFQUNBO0VBQ0E7QTdCbXpSSjs7QTZCOXlSSTtFQUNJO0VBQ0E7QTdCaXpSUjs7QTZCN3lSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCZ3pSSjtBNkI5eVJJO0VBQ0k7QTdCZ3pSUjtBNkI3eVJJO0VBQ0k7QTdCK3lSUjtBNkI1eVJJO0VBQ0k7QTdCOHlSUjtBNkIzeVJJO0VBQ0k7QTdCNnlSUjs7QTZCenlSQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0E3QjJ5Uko7QTZCenlSSTtFQUNJO0VBQ0E7QTdCMnlSUjtBNkJ4eVJJO0VBQ0k7RUFDQTtBN0IweVJSO0E2QnZ5Ukk7RUFDSTtFQUNBO0E3Qnl5UlI7QTZCdHlSSTtFQUNJO0VBQ0E7QTdCd3lSUjs7QTZCcHlSQTtFQUNJO0VBQ0E7RUFDQTtBN0J1eVJKOztBNkJweVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QnV5Uko7QTZCcHlSSTtFQUNJO0E3QnN5UlI7QTZCbnlSSTtFQUNJO0VBQ0E7QTdCcXlSUjtBNkJseVJJO0VBQ0k7QTdCb3lSUjtBNkJseVJRO0VBQ0k7QTdCb3lSWjtBNkJqeVJRO0VBQ0k7QTdCbXlSWjs7QTZCOXhSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCaXlSSjs7QTZCOXhSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E3Qml5Uko7O0E2Qjl4UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBN0JpeVJKOztBNkI5eFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTdCaXlSSjs7QTZCOXhSQTtFQUNJO0VBQ0E7RUFDQTtBN0JpeVJKOztBNkI5eFJBO0VBQ0k7RUFDQTtFQUNBO0E3Qml5Uko7O0E2QjF4UkE7RUFDSTtFQUNBO0VBQ0E7QTdCNnhSSjs7QTZCMXhSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0I2eFJKO0E2Qnp4Ukk7RUFDSTtFQUNBO0E3QjJ4UlI7QTZCeHhSSTtFQUNJO0VBQ0E7QTdCMHhSUjtBNkJ2eFJJO0VBQ0k7RUFDQTtBN0J5eFJSO0E2QnZ4UlE7RUFDSTtBN0J5eFJaO0E2QnJ4Ukk7RUFDSTtFQUNBO0E3QnV4UlI7QTZCcnhSUTtFQUNJO0E3QnV4Ulo7QTZCbnhSSTtFQUNJO0VBQ0E7QTdCcXhSUjtBNkJueFJRO0VBQ0k7QTdCcXhSWjtBNkJqeFJJO0VBQ0k7RUFDQTtBN0JteFJSO0E2Qmp4UlE7RUFDSTtBN0JteFJaO0E2Qi93Ukk7RUFFSTtJQUVJO0lBQ0E7RTdCK3dSVjtBQUNGOztBNkIzd1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0I4d1JKOztBNkIzd1JBO0VBQ0k7RUFDQTtFQUNBO0E3Qjh3Uko7O0E2QnR3UkE7RUFDSTtFQUNBO0E3Qnl3Uko7O0E2QnR3UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qnl3Uko7QTZCdndSSTtFQUNJO0E3Qnl3UlI7O0E2QnJ3UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qnd3Uko7QTZCdHdSSTtFQUNJO0VBQ0E7QTdCd3dSUjtBNkJyd1JJO0VBRUk7RUFDQTtBN0Jzd1JSO0E2Qm53Ukk7RUFDSTtFQUNBO0E3QnF3UlI7QTZCbHdSSTtFQUNJO0VBQ0E7QTdCb3dSUjtBNkJqd1JJO0VBQ0k7RUFDQTtBN0Jtd1JSOztBNkIvdlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0Jrd1JKOztBNkIvdlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0Jrd1JKOztBNkI5dlJBO0VBQ0k7RUFLQTtBN0I2dlJKOztBNkIxdlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QjZ2Uko7QTZCM3ZSSTtFQUNJO0VBQ0E7QTdCNnZSUjtBNkIxdlJJO0VBQ0k7RUFDQTtBN0I0dlJSOztBNkJ4dlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0IydlJKOztBNkJ4dlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCMnZSSjtBNkJ6dlJJO0VBQ0k7QTdCMnZSUjtBNkJ4dlJJO0VBQ0k7RUFDQTtFQUNBO0E3QjB2UlI7QTZCdnZSSTtFQUNJO0E3Qnl2UlI7O0E2QnJ2UkE7RUFHSTtBN0JzdlJKOztBNkJudlJBO0VBQ0k7RUFDQTtFQUNBO0E3QnN2Uko7O0E2Qm52UkE7RUFDSTtBN0JzdlJKOztBOEJ0OFNBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCbzhTSjs7QThCajhTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCbzhTSjs7QThCajhTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJvOFNKO0E4Qmw4U0k7RUFDSTtFQUNBO0VBQ0E7QTlCbzhTUjtBOEJsOFNRO0VBQ0k7QTlCbzhTWjs7QThCLzdTQTtFQUNJO0VBQ0E7RUFDQTtBOUJrOFNKOztBOEIzN1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qjg3U0o7O0E4QjM3U0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCODdTSjs7QThCejdTQTtFQUNJO0E5QjQ3U0o7O0E4QnQ3U0E7O0VBRUk7QTlCeTdTSjs7QThCdDdTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qnk3U0o7O0E4Qmw3U0E7RUFDSTtBOUJxN1NKO0E4Qm43U0k7RUFDSTtBOUJxN1NSOztBOEJqN1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJvN1NKOztBOEJqN1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCbzdTSjs7QThCajdTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qm83U0o7O0E4QjM2U0k7RUFDSTtFQUNBO0E5Qjg2U1I7QThCbDdTQTtFQU9JOzs7O0tBQUE7QTlCazdTSjtBOEI1NlNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qjg2U1I7QThCNTZTUTtFQUNJO0VBQ0E7QTlCODZTWjtBOEIzNlNRO0VBQ0k7RUFDQTtBOUI2NlNaO0E4QjE2U1E7RUFDSTtFQUNBO0VBQ0E7QTlCNDZTWjtBOEJ4NlNJO0VBQ0k7QTlCMDZTUjs7QThCbDZTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QnE2U0o7O0E4Qmw2U0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJxNlNKO0E4Qm42U0k7RUFDSTtFQUNBO0E5QnE2U1I7O0E4Qjc1U0E7O0VBRUk7RUFDQTtBOUJnNlNKO0E4Qjk1U0k7O0VBQ0k7QTlCaTZTUjtBOEI5NVNJOztFQUNJO0VBQ0E7RUFDQTtBOUJpNlNSO0E4Qjk1U0k7O0VBQ0k7QTlCaTZTUjs7QThCNzVTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJnNlNKOztBOEI3NVNBO0VBQ0k7RUFDQTtBOUJnNlNKOztBOEI3NVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCZzZTSjtBOEI5NVNJO0VBQ0k7QTlCZzZTUjs7QThCNTVTQTtFQUNJO0VBQ0E7RUFDQTtBOUIrNVNKOztBOEI1NVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCKzVTSjs7QThCNTVTQTtFQUNJO0E5Qis1U0o7QThCNzVTSTtFQUNJO0VBQ0E7QTlCKzVTUjtBOEI3NVNRO0VBQ0k7QTlCKzVTWjs7QThCdDVTQTtFQUNJO0VBQ0E7RUFDQTtBOUJ5NVNKOztBOEJ0NVNBO0VBQ0k7RUFDQTtFQUNBO0E5Qnk1U0o7QThCdjVTSTtFQUNJO0VBQ0E7QTlCeTVTUjtBOEJ0NVNJO0VBQ0k7QTlCdzVTUjs7QThCaDVTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJtNVNKOztBOEI1NFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCKzRTSjs7QThCNTRTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qis0U0o7O0E4Qng0U0E7RUFDSTtFQUNBO0VBQ0E7QTlCMjRTSjs7QThCeDRTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIyNFNKOztBOEJ4NFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIyNFNKO0E4Qno0U0k7RUFDSTtBOUIyNFNSOztBOEJ2NFNBO0VBQ0k7RUFDQTtBOUIwNFNKOztBOEJ2NFNBO0VBQ0k7QTlCMDRTSjs7QThCajRTSTtFQUNJO0VBQ0E7RUFDQTtBOUJvNFNSO0E4Qmo0U0k7RUFDSTtBOUJtNFNSOztBOEIvM1NBO0VBQ0k7RUFDQTtFQUNBO0E5Qms0U0o7O0E4Qi8zU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCazRTSjtBOEJoNFNJO0VBQ0k7QTlCazRTUjs7QThCOTNTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJpNFNKOztBOEI5M1NBO0VBQ0k7RUFDQTtFQUNBO0E5Qmk0U0o7QThCLzNTSTtFQUNJO0VBQ0E7QTlCaTRTUjtBOEIvM1NRO0VBQ0k7QTlCaTRTWjtBOEI3M1NJO0VBQ0k7RUFDQTtBOUIrM1NSOztBOEIzM1NBO0VBRUk7SUFDSTtJQUNBO0U5QjYzU047QUFDRjtBOEJ0M1NBO0VBRUk7SUFDSTtFOUJ1M1NOO0U4QnAzU0U7SUFDSTtFOUJzM1NOO0U4Qm4zU0U7SUFDSTtFOUJxM1NOO0FBQ0Y7QThCbDNTQTtFQUVJO0lBQ0k7RTlCbTNTTjtFOEJoM1NFO0lBQ0k7RTlCazNTTjtFOEIvMlNFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFOUJpM1NOO0U4Qi8yU007SUFDSTtFOUJpM1NWO0U4QjcyU0U7SUFDSTtFOUIrMlNOO0U4QjUyU0U7SUFDSTtJQUNBO0lBQ0E7RTlCODJTTjtBQUNGO0E4QnYyU0E7RUFFSTs7Ozs7O0lBTUk7RTlCdzJTTjtFOEJyMlNFO0lBQ0k7SUFDQTtFOUJ1MlNOO0FBQ0Y7QStCMzNUQTs7Ozs7RUFBQTtBQVNBO0VBQ0k7RUFDQTtFQUNBO0EvQjAzVEo7O0ErQnYzVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0IwM1RKOztBK0J2M1RBO0VBQ0k7RUFDQTtFQUNBO0EvQjAzVEo7O0ErQnYzVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0EvQnczVEo7O0ErQnIzVEE7RUFDSTtFQUNBO0VBQ0E7QS9CdzNUSjs7QStCcjNUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CdzNUSjtBK0J0M1RJO0VBQ0k7RUFDQTtBL0J3M1RSOztBK0JwM1RBO0VBQ0k7QS9CdTNUSjs7QStCcDNUQTtFQUNJO0VBQ0E7RUFDQTtBL0J1M1RKOztBK0JwM1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CdTNUSjs7QStCcDNUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnUzVEo7QStCcjNUSTtFQUNJO0VBQ0E7QS9CdTNUUjs7QStCbjNUQTtFQUNJO0EvQnMzVEo7O0ErQm4zVEE7RUFDSTtFQUNBO0VBQ0E7QS9CczNUSjs7QStCbjNUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQnMzVEo7O0FnQ2grVEE7Ozs7O0VBQUE7QUFTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQ2crVEo7QWdDOTlUSTtFQUNJO0VBQ0E7QWhDZytUUjtBZ0M3OVRJO0VBQ0k7QWhDKzlUUjs7QWdDejlUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEM0OVRKOztBZ0N6OVRBO0VBRUk7SUFDSTtJQUNBO0VoQzI5VE47QUFDRjtBaUN2Z1VBOzs7Ozs7O0VBQUE7QUNBQTs7Ozs7RUFBQTtBQ0FBOzs7RUFBQTtBQWFBO0VBQ0k7QW5DOGdVSjs7QW1DdmdVQTtFQUNJO0FuQzBnVUo7QW1DeGdVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkMwZ1VSO0FtQ3hnVVE7RUFDSTtFQUNBO0FuQzBnVVo7QW1DdmdVUTtFQUNJO0VBQ0E7RUFDQTtBbkN5Z1VaO0FtQ3RnVVE7RUFDSTtFQUNBO0VBQ0E7QW5Dd2dVWjs7QW1DLy9UQTtFQUNJO0VBQ0E7QW5Da2dVSjs7QW1DLy9UQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ2tnVUo7QW1DaGdVSTtFQUNJO0VBQ0E7RUFDQTtBbkNrZ1VSO0FtQ2hnVVE7RUFDSTtFQUNBO0VBQ0E7QW5Da2dVWjtBbUM5L1RJO0VBQ0k7RUFDQTtBbkNnZ1VSO0FtQzkvVFE7RUFDSTtFQUNBO0FuQ2dnVVo7QW1DNy9UUTtFQUNJO0VBQ0E7QW5DKy9UWjtBbUMzL1RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5DNi9UUjtBbUN6L1RRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DMi9UWjtBbUNwL1RRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkNzL1RaO0FtQ24vVFE7RUFDSTtFQUNBO0VBQ0E7QW5DcS9UWjtBbUNsL1RRO0VBQ0k7RUFDQTtFQUNBO0FuQ28vVFo7QW1DbC9UWTtFQUNJO0FuQ28vVGhCO0FtQ2ovVFk7RUFDSTtFQUNBO0VBQ0E7QW5DbS9UaEI7QW1DOStUSTtFQUNJO0FuQ2cvVFI7QW1DNytUSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DKytUUjtBbUM1K1RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkM4K1RSO0FtQzMrVEk7RUFDSTtFQUNBO0VBQ0E7QW5DNitUUjtBbUMxK1RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DNCtUUjtBbUMxK1RRO0VBQ0k7RUFDQTtBbkM0K1RaO0FtQ3grVEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQzArVFI7O0FtQ2grVEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkNtK1RSO0FtQ2grVEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ2srVFI7O0FtQzk5VEE7RUFDSTtFQUNBO0FuQ2krVEo7O0FtQzk5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ2krVEo7QW1DLzlUSTtFQUNJO0VBQ0E7RUFDQTtBbkNpK1RSO0FtQy85VFE7RUFDSTtFQUNBO0VBQ0E7QW5DaStUWjtBbUM5OVRRO0VBQ0k7RUFDQTtFQUNBO0FuQ2crVFo7QW1DNTlUSTtFQUNJO0FuQzg5VFI7QW1DMzlUSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DNjlUUjtBbUMxOVRJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkM0OVRSO0FtQzE5VFE7RUFDSTtFQUNBO0FuQzQ5VFo7QW1DeDlUSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkMwOVRSO0FtQ3g5VFE7RUFDSTtFQUNBO0VBQ0E7QW5DMDlUWjtBbUN2OVRRO0VBQ0k7RUFDQTtFQUNBO0FuQ3k5VFo7QW1DcjlUSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DdTlUUjtBbUNyOVRRO0VBQ0k7QW5DdTlUWjtBbUNwOVRRO0VBQ0k7RUFDQTtBbkNzOVRaO0FtQ3A5VFk7RUFDSTtFQUNBO0FuQ3M5VGhCOztBbUN2OFRRO0VBQ0k7QW5DMDhUWjtBbUN4OFRZO0VBQ0k7QW5DMDhUaEI7QW1DdjhUWTtFQUNJO0FuQ3k4VGhCO0FtQ2g4VFE7RUFDSTtBbkNrOFRaO0FtQzc3VFE7RUFDSTtBbkMrN1RaOztBbUN0N1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ3k3VEo7O0FtQ3Q3VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DeTdUSjs7QW1DdDdUQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkN3N1RKOztBbUNyN1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ3c3VEo7O0FtQ3I3VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkN3N1RKOztBbUNyN1RBO0VBQ0k7RUFDQTtBbkN3N1RKOztBbUNyN1RBO0VBQ0k7RUFDQTtFQUNBO0FuQ3c3VEo7QW1DcDdUSTtFQUNJO0VBQ0E7RUFDQTtBbkNzN1RSO0FtQ3A3VFE7RUFDSTtBbkNzN1RaO0FtQ243VFE7RUFDSTtBbkNxN1RaO0FtQ2w3VFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkNvN1RaOztBNEIvelVJO0VPbVpBO0lBQ0k7SUFDQTtFbkNnN1ROO0VtQzc2VEU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuQys2VE47RW1DNTZURTtJQUVJO01BQ0k7SW5DNjZUUjtJbUMxNlRJO01BQ0k7SW5DNDZUUjtFQUNGO0FBQ0Y7QW1DdjZUQTtFQUNJO0FuQ3k2VEo7O0E0QngxVUk7RU93YkE7SUFDSTtJQUNBO0lBQ0E7RW5DbzZUTjtFbUNqNlRFO0lBQ0k7RW5DbTZUTjtFbUM5NVRNO0lBQ0k7SUFDQTtJQUNBO0VuQ2c2VFY7RW1DOTVUVTs7SUFFSTtFbkNnNlRkO0VtQzk1VGM7O0lBQ0k7RW5DaTZUbEI7RW1DejVURTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RW5DMjVUTjtFbUN6NVRNO0lBQ0k7RW5DMjVUVjtFbUN4NVRNO0lBQ0k7RW5DMDVUVjtBQUNGO0FtQ2w1VEE7RUFJUTs7O0lBR0k7RW5DaTVUVjtFbUM5NFRNO0lBQ0k7RW5DZzVUVjtBQUNGO0FtQ3g0VEE7RUFDSTtBbkMwNFRKO0FtQ3Q0VFE7RUFDSTtBbkN3NFRaO0FtQ2o0VEk7RUFDSTtBbkNtNFRSO0FtQ2o0VFE7RUFDSTtBbkNtNFRaOztBbUM1M1RBO0VBQ0k7RUFDQTtBbkMrM1RKO0FtQzczVEk7RUFDSTtFQUNBO0FuQyszVFI7QW1DNzNUUTtFQUNJO0FuQyszVFo7QW1DNTNUUTtFQUNJO0FuQzgzVFo7O0FtQ24zVEk7RUFDSTtBbkNzM1RSO0FtQ2ozVFE7RUFDSTtFQUNBO0FuQ20zVFo7QW1DajNUWTtFQUNJO0FuQ20zVGhCOztBb0M1L1VBOzs7RUFBQTtBQWFBO0VBQ0k7QXBDcy9VSjs7QW9DLytVQTtFQUNJO0FwQ2svVUo7QW9DaC9VSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENrL1VSO0FvQ2gvVVE7RUFDSTtFQUNBO0FwQ2svVVo7QW9DLytVUTtFQUNJO0VBQ0E7RUFDQTtBcENpL1VaO0FvQzkrVVE7RUFDSTtFQUNBO0VBQ0E7QXBDZy9VWjs7QW9DditVQTtFQUNJO0VBQ0E7QXBDMCtVSjtBb0N4K1VJO0VBQ0k7QXBDMCtVUjtBb0N2K1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDeStVUjtBb0N2K1VRO0VBQ0k7RUFDQTtBcEN5K1VaO0FvQ3QrVVE7RUFDSTtFQUNBO0FwQ3crVVo7QW9DcitVUTtFQUNJO0VBQ0E7RUFDQTtBcEN1K1VaOztBb0M5OVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENpK1VKOztBb0N0OVVBO0VBQ0k7QXBDeTlVSjtBb0N2OVVJO0VBQ0k7QXBDeTlVUjs7QW9DcjlVQTtFQUNJO0VBQ0E7RUFDQTtBcEN3OVVKO0E0QnBpVkk7RVF5RUo7SUFNUTtFcEN5OVVOO0FBQ0Y7O0FvQ3A5VUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3U5VUo7QW9DcjlVSTtFQUNJO0VBQ0E7RUFDQTtBcEN1OVVSO0FvQ3I5VVE7RUFDSTtFQUNBO0VBQ0E7QXBDdTlVWjtBb0NwOVVRO0VBQ0k7RUFDQTtBcENzOVVaO0FvQ2w5VUk7RUFDSTtFQUNBO0FwQ285VVI7QW9DbDlVUTtFQUNJO0VBQ0E7QXBDbzlVWjtBb0NqOVVRO0VBQ0k7RUFDQTtBcENtOVVaO0FvQy84VUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2k5VVI7QW9DOThVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2c5VVI7QW9DOThVUTtFQUNJO0VBQ0E7QXBDZzlVWjtBb0M1OFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM4OFVSO0FvQzM4VUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDNjhVUjtBb0MxOFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDNDhVUjtBb0N6OFVJO0VBQ0k7QXBDMjhVUjtBb0N6OFVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzI4VVo7O0FvQy83VUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcENrOFVSO0FvQy83VUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2k4VVI7O0FvQzc3VUE7RUFDSTtFQUNBO0FwQ2c4VUo7O0FvQzc3VUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2c4VUo7QW9DOTdVSTtFQUNJO0VBQ0E7RUFDQTtBcENnOFVSO0FvQzk3VVE7RUFDSTtFQUNBO0VBQ0E7QXBDZzhVWjtBb0M3N1VRO0VBQ0k7RUFDQTtFQUNBO0FwQys3VVo7QW9DMzdVSTtFQUNJO0FwQzY3VVI7QW9DMTdVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDNDdVUjtBb0N6N1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMyN1VSO0FvQ3o3VVE7RUFDSTtFQUNBO0FwQzI3VVo7QW9DdjdVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN5N1VSO0FvQ3Q3VUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3c3VVI7QW9DdDdVUTtFQUNJO0FwQ3c3VVo7QW9DcjdVUTtFQUNJO0VBQ0E7QXBDdTdVWjtBb0NyN1VZO0VBQ0k7RUFDQTtBcEN1N1VoQjs7QW9DNzZVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENnN1VKOztBb0M3NlVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2c3VUo7O0FvQzc2VUE7RUFDSTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDKzZVSjs7QW9DNTZVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMrNlVKOztBb0M1NlVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDKzZVSjs7QW9DNTZVQTtFQUNJO0VBQ0E7QXBDKzZVSjs7QW9DNTZVQTtFQUNJO0VBQ0E7RUFDQTtBcEMrNlVKO0FvQzM2VUk7RUFDSTtFQUNBO0VBQ0E7QXBDNjZVUjtBb0MzNlVRO0VBQ0k7QXBDNjZVWjtBb0MxNlVRO0VBQ0k7QXBDNDZVWjtBb0N6NlVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDMjZVWjs7QTRCdHpWSTtFUXNaQTtJQUNJO0lBQ0E7SUFDQTtFcENvNlVOO0VvQy81VU07SUFDSTtJQUNBO0lBQ0E7RXBDaTZVVjtFb0MvNVVVOztJQUVJO0VwQ2k2VWQ7RW9DLzVVYzs7SUFDSTtFcENrNlVsQjtFb0MxNVVFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFcEM0NVVOO0VvQzE1VU07SUFDSTtFcEM0NVVWO0VvQ3o1VU07SUFDSTtFcEMyNVVWO0VvQ3Y1VUU7SUFDSTtJQUNBO0VwQ3k1VU47RW9DdDVVRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXBDdzVVTjtFb0NyNVVFO0lBRUk7TUFDSTtJcENzNVVSO0lvQ241VUk7TUFDSTtJcENxNVVSO0VBQ0Y7QUFDRjtBb0NoNVVBO0VBQ0k7QXBDazVVSjs7QW9DMzRVQTtFQUlROzs7SUFHSTtFcEMyNFVWO0VvQ3g0VU07SUFDSTtFcEMwNFVWO0FBQ0Y7QUFuMFZBOzs7OztHQUFBLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9hcHAuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX3Rva2Vucy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2Zvcm0tcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2RvY3VtZW50LXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX21hcmtldHBsYWNlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZ2xvYmFsLXNlYXJjaC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2RhdGFncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fY2xpZW50LWZvcm0uc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19iaWxsaW5nLWZvcm0uc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wYXltZW50LXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wYXltZW50cy1saXN0LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fdXNlcnMtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3Byb2ZpbGUtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3R3by1mYWN0b3Iuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19ub3RpZmljYXRpb25zLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19zdWJzY3JpcHRpb24tcGFnZXMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19vbmJvYXJkaW5nLWNoZWNrbGlzdC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX29uYm9hcmRpbmctd2l6YXJkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbW9uZXkuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX25hdmJhci12ZXJ0aWNhbC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19mb3Jtcy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19jb21wYW55LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3Mvc2V0dGluZ3Muc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19kYXNoYm9hcmQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jbGllbnQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1xdW90ZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3BheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNvbGlkSW52b2ljZSBNYWluIEFwcGxpY2F0aW9uIFN0eWxlc2hlZXRcbiAqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgYXBwbGljYXRpb24gc3R5bGVzLlxuICogSXQgaW1wb3J0cyBCb290c3RyYXAsIHRoZSBkZXNpZ24gc3lzdGVtLCBjb21wb25lbnRzLCBhbmQgbGF5b3V0cy5cbiAqL1xuXG5AdXNlICdzYXNzOmNvbG9yJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMS4gQk9PVFNUUkFQIENPUkUgSU1QT1JUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQm9vdHN0cmFwIGZ1bmN0aW9ucyBmaXJzdCAobmVlZGVkIGZvciBjb2xvciBtYW5pcHVsYXRpb24sIGV0Yy4pXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDIuIFNPTElESU5WT0lDRSBCUkFORCBWQVJJQUJMRVMgKE92ZXJyaWRlIEJvb3RzdHJhcCBkZWZhdWx0cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUHJpbWFyeSBjb2xvcnNcbiRncmVlbi1iYXNlOiAjMmU5NjNhO1xuJGdyZWVuLWRhcms6ICMxZjZjMjk7XG4kZ3JlZW4tbGlnaHQ6ICNlOGY1ZTk7XG4kb3JhbmdlLWJhc2U6ICNmMGEwMTU7XG4kb3JhbmdlLWRhcms6ICNjODgyMGU7XG4kb3JhbmdlLWxpZ2h0OiAjZmZmOGUxO1xuXG4vLyBPdmVycmlkZSBCb290c3RyYXAgdmFyaWFibGVzXG4kcHJpbWFyeTogJGdyZWVuLWJhc2U7XG4kc2Vjb25kYXJ5OiAkb3JhbmdlLWJhc2U7XG5cbi8vIEJvZHkgYW5kIExpbmsgQ29sb3JzXG4kYm9keS1jb2xvcjogIzMzMzMzMztcbiRib2R5LWJnOiAjZjRmNmY4O1xuJGxpbmstY29sb3I6ICRwcmltYXJ5O1xuJGxpbmstaG92ZXItY29sb3I6ICRncmVlbi1kYXJrO1xuXG4vLyBCdXR0b24gc3RhdGVzXG4kYnRuLXByaW1hcnktYmc6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWJvcmRlci1jb2xvcjogJHByaW1hcnk7XG4kYnRuLXByaW1hcnktaG92ZXItYmc6ICRncmVlbi1kYXJrO1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJvcmRlci1jb2xvcjogJGdyZWVuLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJnOiAkZ3JlZW4tZGFyaztcbiRidG4tcHJpbWFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkZ3JlZW4tZGFyaztcbiRidG4tc2Vjb25kYXJ5LWJnOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktaG92ZXItYmc6ICRvcmFuZ2UtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJvcmRlci1jb2xvcjogJG9yYW5nZS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJnOiAkb3JhbmdlLWRhcms7XG4kYnRuLXNlY29uZGFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkb3JhbmdlLWRhcms7XG5cbi8vIEFsZXJ0IENvbG9yc1xuJGFsZXJ0LXByaW1hcnktYmc6ICRncmVlbi1saWdodDtcbiRhbGVydC1wcmltYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRncmVlbi1saWdodCwgJGxpZ2h0bmVzczogLTUlKTtcbiRhbGVydC1wcmltYXJ5LXRleHQ6ICRncmVlbi1kYXJrO1xuJGFsZXJ0LXNlY29uZGFyeS1iZzogJG9yYW5nZS1saWdodDtcbiRhbGVydC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJG9yYW5nZS1saWdodCwgJGxpZ2h0bmVzczogLTUlKTtcbiRhbGVydC1zZWNvbmRhcnktdGV4dDogJG9yYW5nZS1kYXJrO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAzLiBERVNJR04gU1lTVEVNIEZPVU5EQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGRlc2lnbiB0b2tlbnMgKGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgdHlwb2dyYXBoeSwgZXRjLilcbkBpbXBvcnQgJy4vZGVzaWduLXN5c3RlbS9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDQuIENPTVBPTkVOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGFsbCBjb21wb25lbnQgc3R5bGVzXG5AaW1wb3J0ICcuL2NvbXBvbmVudHMvaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA1LiBMQVlPVVQgUEFUVEVSTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IGFsbCBsYXlvdXQgc3R5bGVzXG5AaW1wb3J0ICcuL2xheW91dHMvaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA2LiBGT1JNIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHZW5lcmljIGZvcm0gY29tcG9uZW50cyAocmV1c2FibGUgYWNyb3NzIHRoZSBhcHApXG5AaW1wb3J0ICcuL2Zvcm1zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNy4gUEFHRS1TUEVDSUZJQyBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29tcGFueSBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vY29tcGFueSc7XG5cbi8vIFNldHRpbmdzIHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9zZXR0aW5ncyc7XG5cbi8vIERhc2hib2FyZCBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2Rhc2hib2FyZCc7XG5cbi8vIENsaWVudCBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vY2xpZW50JztcblxuLy8gSW52b2ljZSB2aWV3IHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL2ludm9pY2Utdmlldyc7XG5cbi8vIEV4dGVybmFsIGludm9pY2UgdmlldyBwYWdlIHN0eWxlcyAocHVibGljLWZhY2luZylcbkBpbXBvcnQgJy4vZXh0ZXJuYWwtaW52b2ljZS12aWV3JztcblxuLy8gRXh0ZXJuYWwgcXVvdGUgdmlldyBwYWdlIHN0eWxlcyAocHVibGljLWZhY2luZylcbkBpbXBvcnQgJy4vZXh0ZXJuYWwtcXVvdGUtdmlldyc7XG5cbi8vIFF1b3RlIHZpZXcgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vcXVvdGUtdmlldyc7XG5cbi8vIFBheW1lbnQgbWFya2V0cGxhY2UgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vcGF5bWVudC1tYXJrZXRwbGFjZSc7XG5cbi8vIE5vdGlmaWNhdGlvbiBtYXJrZXRwbGFjZSBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9ub3RpZmljYXRpb24tbWFya2V0cGxhY2UnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA4LiBMRUdBQ1kgQk9PVFNUUkFQIE9WRVJSSURFUyAoVG8gYmUgY2xlYW5lZCB1cClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSBvdmVycmlkZXMgdGhhdCBzaG91bGQgZXZlbnR1YWxseSBiZSBtb3ZlZFxuLy8gdG8gdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBmaWxlcyBpbiB0aGUgZGVzaWduIHN5c3RlbS5cblxuLy8gS2VlcCBsZWdhY3kgYWN0aXZlIG5hdiBzdHlsaW5nIGZvciBub3dcblxuLyogLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZjJmZjtcbiAgICBjb2xvcjogIzRmNDZlNTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn0gKi9cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBNYWluIEluZGV4XG4gKlxuICogSW1wb3J0cyBhbGwgZGVzaWduIHN5c3RlbSBmb3VuZGF0aW9uIGZpbGVzLlxuICogVGhpcyBmaWxlIHNob3VsZCBiZSBpbXBvcnRlZCBlYXJseSBpbiBhcHAuc2NzcyxcbiAqIGFmdGVyIEJvb3RzdHJhcCBmdW5jdGlvbnMvdmFyaWFibGVzIGJ1dCBiZWZvcmUgY29tcG9uZW50cy5cbiAqL1xuXG4vLyBDb3JlIGRlc2lnbiB0b2tlbnMgKGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgZXRjLilcbkBpbXBvcnQgJ3Rva2Vucyc7XG5cbi8vIFR5cG9ncmFwaHkgc3lzdGVtXG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBEZXNpZ24gVG9rZW5zXG4gKlxuICogQ29yZSBkZXNpZ24gdG9rZW5zIGRlZmluaW5nIGNvbG9ycywgc3BhY2luZywgc2hhZG93cywgYm9yZGVyIHJhZGl1cyxcbiAqIGFuZCB0cmFuc2l0aW9ucy4gQWxsIHZhbHVlcyBhcmUgZXhwb3NlZCBhcyBDU1MgY3VzdG9tIHByb3BlcnRpZXNcbiAqIHdpdGggdGhlIGAtLXN3cC1gIHByZWZpeCBmb3IgcnVudGltZSB0aGVtaW5nIHN1cHBvcnQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09MT1IgUEFMRVRURVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEJyYW5kIENvbG9ycyAoUHJpbWFyeSAmIFNlY29uZGFyeSlcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBQcmltYXJ5OiBHcmVlbiAtIFVzZWQgZm9yIG1haW4gQ1RBcywgbGlua3MsIGFjdGl2ZSBzdGF0ZXNcbiAgICAtLXN3cC1wcmltYXJ5OiAjMmU5NjNhO1xuICAgIC0tc3dwLXByaW1hcnktcmdiOiA0NiwgMTUwLCA1ODtcbiAgICAtLXN3cC1wcmltYXJ5LWhvdmVyOiAjMjY4MDMyO1xuICAgIC0tc3dwLXByaW1hcnktZGFyazogIzFmNmMyOTtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0OiAjZThmNWU5O1xuICAgIC0tc3dwLXByaW1hcnktbGlnaHRlcjogI2YxZjlmMjtcblxuICAgIC8vIFNlY29uZGFyeTogT3JhbmdlIC0gVXNlZCBzcGFyaW5nbHkgZm9yIGFjY2VudHNcbiAgICAtLXN3cC1zZWNvbmRhcnk6ICNmMGEwMTU7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LXJnYjogMjQwLCAxNjAsIDIxO1xuICAgIC0tc3dwLXNlY29uZGFyeS1ob3ZlcjogI2Q4OTAxMjtcbiAgICAtLXN3cC1zZWNvbmRhcnktZGFyazogI2M4ODIwZTtcbiAgICAtLXN3cC1zZWNvbmRhcnktbGlnaHQ6ICNmZmY4ZTE7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0ZXI6ICNmZmZjZjA7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTmV1dHJhbCBDb2xvcnMgKFNsYXRlLWJhc2VkIGdyYXkgc2NhbGUgZm9yIG1vZGVybiBmZWVsKVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWdyYXktNTA6ICNmOGZhZmM7XG4gICAgLS1zd3AtZ3JheS0xMDA6ICNmMWY1Zjk7XG4gICAgLS1zd3AtZ3JheS0yMDA6ICNlMmU4ZjA7XG4gICAgLS1zd3AtZ3JheS0zMDA6ICNjYmQ1ZTE7XG4gICAgLS1zd3AtZ3JheS00MDA6ICM5NGEzYjg7XG4gICAgLS1zd3AtZ3JheS01MDA6ICM2NDc0OGI7XG4gICAgLS1zd3AtZ3JheS02MDA6ICM0NzU1Njk7XG4gICAgLS1zd3AtZ3JheS03MDA6ICMzMzQxNTU7XG4gICAgLS1zd3AtZ3JheS04MDA6ICMxZTI5M2I7XG4gICAgLS1zd3AtZ3JheS05MDA6ICMwZjE3MmE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2VtYW50aWMgQ29sb3JzIChGZWVkYmFjayAmIFN0YXR1cylcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBTdWNjZXNzXG4gICAgLy8gTk9URTogYHN1Y2Nlc3NgICgyLjU0OjEgb24gc3VyZmFjZSkgYW5kIGBzdWNjZXNzLWhvdmVyYCAoMy43NzoxKSBhcmUgZmlsbFxuICAgIC8vIGNvbG91cnMsIG5vdCB0ZXh0IGNvbG91cnMgLSBib3RoIGZhaWwgV0NBRyBBQSBhcyB0ZXh0LiBVc2UgYHN1Y2Nlc3MtZGFya2BcbiAgICAvLyBmb3IgYW55IHN1Y2Nlc3MtY29sb3VyZWQgKnRleHQqLiBTZWUgREVTSUdOLm1kIC0gVGhlIExlZ2libGUgU3RhdHVzIFJ1bGUuXG4gICAgLS1zd3Atc3VjY2VzczogIzEwYjk4MTtcbiAgICAtLXN3cC1zdWNjZXNzLXJnYjogMTYsIDE4NSwgMTI5O1xuICAgIC0tc3dwLXN1Y2Nlc3MtaG92ZXI6ICMwNTk2Njk7XG4gICAgLS1zd3Atc3VjY2Vzcy1kYXJrOiAjMDQ3ODU3OyAgIC8vIEVtZXJhbGQtNzAwIC0gQUEtc2FmZSBzdWNjZXNzIHRleHQgKDUuNDg6MSBvbiBzdXJmYWNlLCA1LjA2OjEgb24gYm9keS1iZylcbiAgICAtLXN3cC1zdWNjZXNzLWxpZ2h0OiAjZDFmYWU1O1xuICAgIC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcjogI2VjZmRmNTtcblxuICAgIC8vIERhbmdlclxuICAgIC8vIE5PVEU6IGBkYW5nZXJgICgzLjc2OjEgb24gc3VyZmFjZSkgaXMgYSBmaWxsIGNvbG91ciwgbm90IGEgdGV4dCBjb2xvdXIuXG4gICAgLy8gVXNlIGBkYW5nZXItZGFya2AgZm9yIGRhbmdlci1jb2xvdXJlZCAqdGV4dCouXG4gICAgLS1zd3AtZGFuZ2VyOiAjZWY0NDQ0O1xuICAgIC0tc3dwLWRhbmdlci1yZ2I6IDIzOSwgNjgsIDY4O1xuICAgIC0tc3dwLWRhbmdlci1ob3ZlcjogI2RjMjYyNjtcbiAgICAtLXN3cC1kYW5nZXItZGFyazogI2I5MWMxYzsgICAgLy8gUmVkLTcwMCAtIEFBLXNhZmUgZGFuZ2VyIHRleHQgKDYuNDc6MSBvbiBzdXJmYWNlLCA1Ljk3OjEgb24gYm9keS1iZylcbiAgICAtLXN3cC1kYW5nZXItbGlnaHQ6ICNmZWUyZTI7XG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0ZXI6ICNmZWYyZjI7XG5cbiAgICAvLyBXYXJuaW5nXG4gICAgLS1zd3Atd2FybmluZzogI2Y1OWUwYjtcbiAgICAtLXN3cC13YXJuaW5nLXJnYjogMjQ1LCAxNTgsIDExO1xuICAgIC0tc3dwLXdhcm5pbmctaG92ZXI6ICNkOTc3MDY7XG4gICAgLS1zd3Atd2FybmluZy1saWdodDogI2ZlZjNjNztcbiAgICAtLXN3cC13YXJuaW5nLWxpZ2h0ZXI6ICNmZmZiZWI7XG5cbiAgICAvLyBJbmZvXG4gICAgLS1zd3AtaW5mbzogIzNiODJmNjtcbiAgICAtLXN3cC1pbmZvLXJnYjogNTksIDEzMCwgMjQ2O1xuICAgIC0tc3dwLWluZm8taG92ZXI6ICMyNTYzZWI7XG4gICAgLS1zd3AtaW5mby1saWdodDogI2RiZWFmZTtcbiAgICAtLXN3cC1pbmZvLWxpZ2h0ZXI6ICNlZmY2ZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU3VyZmFjZSBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ib2R5LWJnOiAjZjRmNmY4O1xuICAgIC0tc3dwLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgLS1zd3Atc3VyZmFjZS1ob3ZlcjogI2Y4ZmFmYztcbiAgICAtLXN3cC1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xuICAgIC0tc3dwLXN1cmZhY2Utb3ZlcmxheTogcmdiKDE1IDIzIDQyIC8gNTAlKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBUZXh0IENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIERlZmF1bHQgYm9keSB0ZXh0LiBBbGlhc2VzIGB0ZXh0LXByaW1hcnlgIHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIHRoZVxuICAgIC8vIGxpdGVyYWwgLSBpdCB3YXMgYSBwdXJlICMzMzMzMzMgZ3JheSwgd2hpY2ggdGhlIFRpbnRlZCBOZXV0cmFscyBSdWxlXG4gICAgLy8gcHJvaGliaXRzLCBhbmQgdGhlcmUgaXMgbm8gcmVhc29uIGZvciB0aGUgdHdvIHRvIGV2ZXIgZGl2ZXJnZS5cbiAgICAtLXN3cC1ib2R5LWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAtLXN3cC10ZXh0LXByaW1hcnk6ICMxZTI5M2I7XG4gICAgLS1zd3AtdGV4dC1zZWNvbmRhcnk6ICM0NzU1Njk7XG4gICAgLS1zd3AtdGV4dC1tdXRlZDogIzY0NzQ4YjtcblxuICAgIC8vIFdBUk5JTkc6IDIuNTY6MSBvbiBzdXJmYWNlLCAyLjM3OjEgb24gYm9keS1iZyAtIEZBSUxTIFdDQUcgQUEgKDEuNC4zKS5cbiAgICAvLyBTYWZlIE9OTFkgZm9yIGRpc2FibGVkIHRleHQgKGV4ZW1wdCBmcm9tIDEuNC4zKSBhbmQgZGVjb3JhdGl2ZSBnbHlwaHMuXG4gICAgLy8gTmV2ZXIgdXNlIGZvciBwbGFjZWhvbGRlcnMgb3IgYW55IG90aGVyIG1lYW5pbmdmdWwgdGV4dC5cbiAgICAtLXN3cC10ZXh0LWxpZ2h0OiAjOTRhM2I4O1xuICAgIC0tc3dwLXRleHQtaW52ZXJzZTogI2ZmZmZmZjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCb3JkZXIgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtYm9yZGVyOiAjZTJlOGYwO1xuICAgIC0tc3dwLWJvcmRlci1saWdodDogI2YxZjVmOTtcbiAgICAtLXN3cC1ib3JkZXItZGFyazogI2NiZDVlMTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBMaW5rIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWxpbmstY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLXN3cC1saW5rLWhvdmVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1BBQ0lORyBTQ0FMRSAoOHB4IGJhc2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1zcGFjZS0wOiAwO1xuICAgIC0tc3dwLXNwYWNlLXB4OiAxcHg7XG4gICAgLS1zd3Atc3BhY2UtMC01OiAwLjEyNXJlbTsgIC8vIDJweFxuICAgIC0tc3dwLXNwYWNlLTE6IDAuMjVyZW07ICAgICAvLyA0cHhcbiAgICAtLXN3cC1zcGFjZS0xLTU6IDAuMzc1cmVtOyAgLy8gNnB4XG4gICAgLS1zd3Atc3BhY2UtMjogMC41cmVtOyAgICAgIC8vIDhweFxuICAgIC0tc3dwLXNwYWNlLTItNTogMC42MjVyZW07ICAvLyAxMHB4XG4gICAgLS1zd3Atc3BhY2UtMzogMC43NXJlbTsgICAgIC8vIDEycHhcbiAgICAtLXN3cC1zcGFjZS0zLTU6IDAuODc1cmVtOyAgLy8gMTRweFxuICAgIC0tc3dwLXNwYWNlLTQ6IDFyZW07ICAgICAgICAvLyAxNnB4XG4gICAgLS1zd3Atc3BhY2UtNTogMS4yNXJlbTsgICAgIC8vIDIwcHhcbiAgICAtLXN3cC1zcGFjZS02OiAxLjVyZW07ICAgICAgLy8gMjRweFxuICAgIC0tc3dwLXNwYWNlLTc6IDEuNzVyZW07ICAgICAvLyAyOHB4XG4gICAgLS1zd3Atc3BhY2UtODogMnJlbTsgICAgICAgIC8vIDMycHhcbiAgICAtLXN3cC1zcGFjZS05OiAyLjI1cmVtOyAgICAgLy8gMzZweFxuICAgIC0tc3dwLXNwYWNlLTEwOiAyLjVyZW07ICAgICAvLyA0MHB4XG4gICAgLS1zd3Atc3BhY2UtMTE6IDIuNzVyZW07ICAgIC8vIDQ0cHhcbiAgICAtLXN3cC1zcGFjZS0xMjogM3JlbTsgICAgICAgLy8gNDhweFxuICAgIC0tc3dwLXNwYWNlLTE0OiAzLjVyZW07ICAgICAvLyA1NnB4XG4gICAgLS1zd3Atc3BhY2UtMTY6IDRyZW07ICAgICAgIC8vIDY0cHhcbiAgICAtLXN3cC1zcGFjZS0yMDogNXJlbTsgICAgICAgLy8gODBweFxuICAgIC0tc3dwLXNwYWNlLTI0OiA2cmVtOyAgICAgICAvLyA5NnB4XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJPUkRFUiBSQURJVVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXJhZGl1cy1ub25lOiAwO1xuICAgIC0tc3dwLXJhZGl1cy1zbTogMC4zNzVyZW07ICAgIC8vIDZweCAtIFNtYWxsIGVsZW1lbnRzLCB0YWdzXG4gICAgLS1zd3AtcmFkaXVzLW1kOiAwLjVyZW07ICAgICAgLy8gOHB4IC0gRm9ybSBjb250cm9scywgYnV0dG9uc1xuICAgIC0tc3dwLXJhZGl1cy1sZzogMC43NXJlbTsgICAgIC8vIDEycHggLSBDYXJkcywgbW9kYWxzXG4gICAgLS1zd3AtcmFkaXVzLXhsOiAxcmVtOyAgICAgICAgLy8gMTZweCAtIExhcmdlIGNhcmRzLCBkaWFsb2dzXG4gICAgLS1zd3AtcmFkaXVzLTJ4bDogMS41cmVtOyAgICAgLy8gMjRweCAtIEV4dHJhIGxhcmdlIGVsZW1lbnRzXG4gICAgLS1zd3AtcmFkaXVzLWZ1bGw6IDk5OTlweDsgICAgLy8gUGlsbCBzaGFwZVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSEFET1dTIChTdWJ0bGUsIG1vZGVybiBlbGV2YXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBFbGV2YXRpb24gc2hhZG93c1xuICAgIC0tc3dwLXNoYWRvdy14czogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIC0tc3dwLXNoYWRvdy1zbTogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMTAlKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDEwJSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDEwJSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG5cbiAgICAvLyBJbm5lciBzaGFkb3dcbiAgICAtLXN3cC1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDUlKTtcblxuICAgIC8vIENvbG9yZWQgc2hhZG93cyBmb3IgYnV0dG9ucyBhbmQgaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICAtLXN3cC1zaGFkb3ctcHJpbWFyeTogMCA0cHggMTRweCAwIHJnYig0NiAxNTAgNTggLyAyNSUpO1xuICAgIC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnOiAwIDhweCAyMHB4IDAgcmdiKDQ2IDE1MCA1OCAvIDMwJSk7XG4gICAgLS1zd3Atc2hhZG93LWRhbmdlcjogMCA0cHggMTRweCAwIHJnYigyMzkgNjggNjggLyAyNSUpO1xuICAgIC0tc3dwLXNoYWRvdy1kYW5nZXItbGc6IDAgOHB4IDIwcHggMCByZ2IoMjM5IDY4IDY4IC8gMzAlKTtcblxuICAgIC8vIEZvY3VzIHJpbmcgc2hhZG93XG4gICAgLS1zd3AtcmluZy1wcmltYXJ5OiAwIDAgMCAzcHggcmdiKDQ2IDE1MCA1OCAvIDE1JSk7XG4gICAgLS1zd3AtcmluZy1kYW5nZXI6IDAgMCAwIDNweCByZ2IoMjM5IDY4IDY4IC8gMTUlKTtcbiAgICAtLXN3cC1yaW5nLW9mZnNldDogMCAwIDAgMnB4IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFJBTlNJVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIER1cmF0aW9uc1xuICAgIC0tc3dwLWR1cmF0aW9uLWZhc3Q6IDE1MG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLWJhc2U6IDIwMG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLXNsb3c6IDMwMG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLXNsb3dlcjogNDAwbXM7XG5cbiAgICAvLyBUaW1pbmcgZnVuY3Rpb25zXG4gICAgLS1zd3AtZWFzZS1saW5lYXI6IGxpbmVhcjtcbiAgICAtLXN3cC1lYXNlLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAtLXN3cC1lYXNlLW91dDogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgLS1zd3AtZWFzZS1pbi1vdXQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG5cbiAgICAvLyBDb21tb24gdHJhbnNpdGlvbnNcbiAgICAtLXN3cC10cmFuc2l0aW9uLWZhc3Q6IHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tYmFzZTogdmFyKC0tc3dwLWR1cmF0aW9uLWJhc2UpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1zbG93OiB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcblxuICAgIC8vIFByb3BlcnR5LXNwZWNpZmljIHRyYW5zaXRpb25zXG4gICAgLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnM6IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1zaGFkb3c6IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi10cmFuc2Zvcm06IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLWFsbDogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBaLUlOREVYIFNDQUxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC16LWRyb3Bkb3duOiAxMDAwO1xuICAgIC0tc3dwLXotc3RpY2t5OiAxMDIwO1xuICAgIC0tc3dwLXotZml4ZWQ6IDEwMzA7XG4gICAgLS1zd3Atei1tb2RhbC1iYWNrZHJvcDogMTA0MDtcbiAgICAtLXN3cC16LW1vZGFsOiAxMDUwO1xuICAgIC0tc3dwLXotcG9wb3ZlcjogMTA2MDtcbiAgICAtLXN3cC16LXRvb2x0aXA6IDEwNzA7XG4gICAgLS1zd3Atei10b2FzdDogMTA4MDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUE9ORU5ULVNQRUNJRklDIFRPS0VOU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gQ2FyZFxuICAgIC0tc3dwLWNhcmQtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1jYXJkLWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgLS1zd3AtY2FyZC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIC0tc3dwLWNhcmQtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAtLXN3cC1jYXJkLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAtLXN3cC1jYXJkLWhlYWRlci1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIC0tc3dwLWNhcmQtZm9vdGVyLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBGb3JtIGNvbnRyb2xzXG4gICAgLS1zd3AtaW5wdXQtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1pbnB1dC1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIC0tc3dwLWlucHV0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtaW5wdXQtcGFkZGluZy15OiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAtLXN3cC1pbnB1dC1wYWRkaW5nLXg6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAtLXN3cC1pbnB1dC1mb2N1cy1ib3JkZXI6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLXN3cC1pbnB1dC1mb2N1cy1yaW5nOiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgIC8vIEJ1dHRvbnNcbiAgICAtLXN3cC1idG4tcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1idG4tcGFkZGluZy15OiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAtLXN3cC1idG4tcGFkZGluZy14OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgLS1zd3AtYnRuLWZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICAvLyBNb2RhbFxuICAgIC0tc3dwLW1vZGFsLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtbW9kYWwtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICAtLXN3cC1tb2RhbC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIC0tc3dwLW1vZGFsLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFRhYmxlXG4gICAgLS1zd3AtdGFibGUtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC10YWJsZS1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIC0tc3dwLXRhYmxlLWhlYWRlci1iZzogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIC0tc3dwLXRhYmxlLXJvdy1ob3Zlci1iZzogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIC0tc3dwLXRhYmxlLWNlbGwtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIEFsZXJ0XG4gICAgLS1zd3AtYWxlcnQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1hbGVydC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAvLyBNb25leSBkaXNwbGF5IChzaWduYXR1cmUgY29tcG9uZW50IC0gc2VlIGNvbXBvbmVudHMvX21vbmV5LnNjc3MpXG4gICAgLy8gRXZlcnkgY29sb3VyIGhlcmUgaXMgQUEtY29tcGxpYW50IGFnYWluc3QgQk9USCBgc3VyZmFjZWAgYW5kIGBib2R5LWJnYCxcbiAgICAvLyBiZWNhdXNlIG1vbmV5IG11c3QgbmV2ZXIgYmUgbWlzcmVhZGFibGUgb24gYW55IHN1cmZhY2UgaXQgbGFuZHMgb24uXG4gICAgLS1zd3AtbW9uZXktY3VycmVuY3k6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7ICAvLyA3LjU4OjEgLyA2Ljk5OjFcbiAgICAtLXN3cC1tb25leS1uZXV0cmFsOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTsgICAgIC8vIDE0LjYzOjEgLyAxMy41MDoxXG4gICAgLS1zd3AtbW9uZXktcGFpZDogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7ICAgICAgICAvLyA1LjQ4OjEgLyA1LjA2OjFcbiAgICAtLXN3cC1tb25leS1vdmVyZHVlOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspOyAgICAgIC8vIDYuNDc6MSAvIDUuOTc6MVxuXG4gICAgLy8gUmVsYXRpdmUgc3RlcCBhcHBsaWVkIHRvIGEgYC5tb25leS0tdG90YWxgIGFtb3VudC4gVW5pdGxlc3MgbXVsdGlwbGllciBzb1xuICAgIC8vIHRoZSBzdGVwIGlzIGNvcnJlY3QgYXQgZXZlcnkgaW5oZXJpdGVkIGJhc2Ugc2l6ZS5cbiAgICAtLXN3cC1tb25leS10b3RhbC1zY2FsZTogMS4xMjU7XG5cbiAgICAvLyBSZWxhdGl2ZSBzaXplIG9mIHRoZSBjdXJyZW5jeSBjb2RlIGFnYWluc3QgaXRzIGFtb3VudC4gVGhlIGNvZGUgaXMgYSB1bml0LFxuICAgIC8vIG5vdCBhIHNlY29uZCBudW1iZXIsIGFuZCByZWFkcyBhcyBzdWJvcmRpbmF0ZSByYXRoZXIgdGhhbiBjb21wZXRpbmcuXG4gICAgLS1zd3AtbW9uZXktY3VycmVuY3ktc2NhbGU6IDAuNzVlbTtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBUeXBvZ3JhcGh5XG4gKlxuICogVHlwb2dyYXBoeSBzY2FsZSwgZm9udCBmYW1pbGllcywgd2VpZ2h0cywgYW5kIGxpbmUgaGVpZ2h0cy5cbiAqIFVzZXMgc3lzdGVtIGZvbnRzIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZCBuYXRpdmUgZmVlbC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT05UIEZBTUlMSUVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBTeXN0ZW0gZm9udCBzdGFjayAtIE1vZGVybiwgcGVyZm9ybWFudCwgbmF0aXZlIGZlZWxcbiAgICAtLXN3cC1mb250LXNhbnM6IC1hcHBsZS1zeXN0ZW0sIGJsaW5rbWFjc3lzdGVtZm9udCwgJ1NlZ29lIFVJJywgcm9ib3RvLFxuICAgICAgICAgICAgICAgICAgICAgJ0hlbHZldGljYSBOZXVlJywgYXJpYWwsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmLFxuICAgICAgICAgICAgICAgICAgICAgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsXG4gICAgICAgICAgICAgICAgICAgICAnTm90byBDb2xvciBFbW9qaSc7XG5cbiAgICAvLyBNb25vc3BhY2UgZm9yIGNvZGUsIG51bWJlcnMgaW4gdGFibGVzXG4gICAgLS1zd3AtZm9udC1tb25vOiB1aS1tb25vc3BhY2UsIHNmbW9uby1yZWd1bGFyLCAnU0YgTW9ubycsIG1lbmxvLCBtb25hY28sXG4gICAgICAgICAgICAgICAgICAgICBjb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcblxuICAgIC8vIERlZmF1bHQgZm9udCBmYW1pbHlcbiAgICAtLXN3cC1mb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtc2Fucyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgU0laRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXRleHQteHM6IDAuNzVyZW07ICAgICAgIC8vIDEycHggLSBGaW5lIHByaW50LCBiYWRnZXNcbiAgICAtLXN3cC10ZXh0LXNtOiAwLjgxMjVyZW07ICAgICAvLyAxM3B4IC0gSGVscCB0ZXh0LCBjYXB0aW9uc1xuICAgIC0tc3dwLXRleHQtYmFzZTogMC45Mzc1cmVtOyAgIC8vIDE1cHggLSBCb2R5IHRleHQgKHNsaWdodGx5IGxhcmdlciB0aGFuIDE0cHggZm9yIHJlYWRhYmlsaXR5KVxuICAgIC0tc3dwLXRleHQtbWQ6IDFyZW07ICAgICAgICAgIC8vIDE2cHggLSBFbXBoYXNpemVkIGJvZHlcbiAgICAtLXN3cC10ZXh0LWxnOiAxLjEyNXJlbTsgICAgICAvLyAxOHB4IC0gQ2FyZCB0aXRsZXMsIHNlY3Rpb24gaGVhZGVyc1xuICAgIC0tc3dwLXRleHQteGw6IDEuMjVyZW07ICAgICAgIC8vIDIwcHggLSBQYWdlIHN1YnRpdGxlc1xuICAgIC0tc3dwLXRleHQtMnhsOiAxLjVyZW07ICAgICAgIC8vIDI0cHggLSBQYWdlIHRpdGxlc1xuICAgIC0tc3dwLXRleHQtM3hsOiAxLjg3NXJlbTsgICAgIC8vIDMwcHggLSBIZXJvIHRpdGxlc1xuICAgIC0tc3dwLXRleHQtNHhsOiAyLjI1cmVtOyAgICAgIC8vIDM2cHggLSBMYXJnZSBkaXNwbGF5XG4gICAgLS1zd3AtdGV4dC01eGw6IDNyZW07ICAgICAgICAgLy8gNDhweCAtIEV4dHJhIGxhcmdlIGRpc3BsYXlcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBIRUlHSFRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1sZWFkaW5nLW5vbmU6IDE7XG4gICAgLS1zd3AtbGVhZGluZy10aWdodDogMS4yNTtcbiAgICAtLXN3cC1sZWFkaW5nLXNudWc6IDEuMzc1O1xuICAgIC0tc3dwLWxlYWRpbmctbm9ybWFsOiAxLjU7XG4gICAgLS1zd3AtbGVhZGluZy1yZWxheGVkOiAxLjYyNTtcbiAgICAtLXN3cC1sZWFkaW5nLWxvb3NlOiAyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT05UIFdFSUdIVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLWZvbnQtdGhpbjogMTAwO1xuICAgIC0tc3dwLWZvbnQtZXh0cmFsaWdodDogMjAwO1xuICAgIC0tc3dwLWZvbnQtbGlnaHQ6IDMwMDtcbiAgICAtLXN3cC1mb250LW5vcm1hbDogNDAwO1xuICAgIC0tc3dwLWZvbnQtbWVkaXVtOiA1MDA7XG4gICAgLS1zd3AtZm9udC1zZW1pYm9sZDogNjAwO1xuICAgIC0tc3dwLWZvbnQtYm9sZDogNzAwO1xuICAgIC0tc3dwLWZvbnQtZXh0cmFib2xkOiA4MDA7XG4gICAgLS1zd3AtZm9udC1ibGFjazogOTAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMRVRURVIgU1BBQ0lOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtdHJhY2tpbmctdGlnaHRlcjogLTAuMDVlbTtcbiAgICAtLXN3cC10cmFja2luZy10aWdodDogLTAuMDI1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctbm9ybWFsOiAwO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGU6IDAuMDI1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZXI6IDAuMDVlbTtcbiAgICAtLXN3cC10cmFja2luZy13aWRlc3Q6IDAuMWVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBPR1JBUEhZIFVUSUxJVFkgQ0xBU1NFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQYWdlIHRpdGxlIC0gTGFyZ2UsIHByb21pbmVudCBoZWFkaW5nXG5cbi50ZXh0LXBhZ2UtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy10aWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctdGlnaHQpO1xufVxuXG4vLyBQYWdlIHN1YnRpdGxlXG5cbi50ZXh0LXBhZ2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gQ2FyZCB0aXRsZVxuXG4udGV4dC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1zbnVnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIENhcmQgc3VidGl0bGVcblxuLnRleHQtY2FyZC1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gU2VjdGlvbiB0aXRsZSAod2l0aCBpY29uIHBhdHRlcm4pXG5cbi50ZXh0LXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXNudWcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICBzdmcsXG4gICAgaSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBMYWJlbCB0ZXh0IChmb3JtIGxhYmVscywgdGFibGUgaGVhZGVycylcblxuLnRleHQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vLyBCb2R5IHRleHRcblxuLnRleHQtYm9keSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctcmVsYXhlZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbn1cblxuLy8gU21hbGwvSGVscCB0ZXh0XG5cbi50ZXh0LWhlbHAge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIE1vbm9zcGFjZSB0ZXh0IChmb3IgSURzLCBjb2RlcylcblxuLnRleHQtbW9ubyB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4vLyBUYWJsZSBoZWFkZXIgdGV4dFxuXG4udGV4dC10YWJsZS1oZWFkZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xufVxuXG4vLyBFbXBoYXNpemVkL0hpZ2hsaWdodCB0ZXh0XG5cbi50ZXh0LWVtcGhhc2lzIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gTXV0ZWQgdGV4dFxuXG4udGV4dC1zdWJ0bGUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIExpbmsgc3R5bGluZ1xuXG4udGV4dC1saW5rIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWxpbmstY29sb3IpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWxpbmstaG92ZXItY29sb3IpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi8vIFRydW5jYXRlIHRleHQgd2l0aCBlbGxpcHNpc1xuXG4udGV4dC10cnVuY2F0ZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vLyBNdWx0aS1saW5lIHRydW5jYXRpb24gKHJlcXVpcmVzIC13ZWJraXQpXG5cbi50ZXh0LWxpbmUtY2xhbXAtMiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnRleHQtbGluZS1jbGFtcC0zIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIENvbXBvbmVudCBJbmRleFxuICpcbiAqIEN1c3RvbSBjb21wb25lbnQgc3R5bGVzIHRoYXQgZXh0ZW5kIEJvb3RzdHJhcC9UYWJsZXIuXG4gKiBPbmx5IGFkZCBzdHlsZXMgaGVyZSB0aGF0IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBiZXlvbmQgd2hhdCBCb290c3RyYXAvVGFibGVyIG9mZmVyLlxuICpcbiAqIE5vdGU6IE1vc3QgY29tcG9uZW50IHN0eWxpbmcgY29tZXMgZnJvbSBCb290c3RyYXAgNSBhbmQgVGFibGVyLlxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucywgbm90IHJlcGxhY2VtZW50cy5cbiAqL1xuXG4vLyBTaGFyZWQgRm9ybSBQYWdlIC0gQ29uc29saWRhdGVkIGZvcm0tcGFnZSBsYXlvdXQgcGF0dGVyblxuQGltcG9ydCAnZm9ybS1wYWdlJztcblxuLy8gRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBsYXlvdXQgZm9yIEludm9pY2UgYW5kIFF1b3RlIHZpZXcgcGFnZXNcbkBpbXBvcnQgJ2RvY3VtZW50LXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIGxheW91dCBmb3IgcHVibGljLWZhY2luZyBJbnZvaWNlIGFuZCBRdW90ZSBwYWdlc1xuQGltcG9ydCAnZXh0ZXJuYWwtZG9jLXZpZXcnO1xuXG4vLyBNYXJrZXRwbGFjZSAtIFNoYXJlZCBzdHlsZXMgZm9yIFBheW1lbnQgYW5kIE5vdGlmaWNhdGlvbiBtYXJrZXRwbGFjZSBwYWdlc1xuQGltcG9ydCAnbWFya2V0cGxhY2UnO1xuXG4vLyBHbG9iYWwgU2VhcmNoIC0gVG9wIG5hdmlnYXRpb24gc2VhcmNoIGJhciB3aXRoIGxpdmUgcmVzdWx0cyBkcm9wZG93blxuQGltcG9ydCAnZ2xvYmFsLXNlYXJjaCc7XG5cbi8vIERhdGFHcmlkIC0gTW9kZXJuIHRhYmxlL2dyaWQgY29tcG9uZW50IHN0eWxlc1xuQGltcG9ydCAnZGF0YWdyaWQnO1xuXG4vLyBDbGllbnQgRm9ybSAtIE1vZGVybiBjbGllbnQgY3JlYXRpb24gZm9ybVxuQGltcG9ydCAnY2xpZW50LWZvcm0nO1xuXG4vLyBCaWxsaW5nIEZvcm0gLSBTaGFyZWQgc3R5bGVzIGZvciBJbnZvaWNlIGFuZCBRdW90ZSBjcmVhdGlvbiBmb3Jtc1xuQGltcG9ydCAnYmlsbGluZy1mb3JtJztcblxuLy8gUGF5bWVudCBQYWdlIC0gSW52b2ljZSBwYXltZW50IGZvcm0gd2l0aCBtZXRob2Qgc2VsZWN0aW9uXG5AaW1wb3J0ICdwYXltZW50LXBhZ2UnO1xuXG4vLyBQYXltZW50cyBMaXN0IC0gUGF5bWVudHMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzIGFuZCBmaWx0ZXJzXG5AaW1wb3J0ICdwYXltZW50cy1saXN0JztcblxuLy8gVXNlcnMgUGFnZSAtIFVzZXJzIGxpc3Qgd2l0aCBLUEkgY2FyZHMgYW5kIHRhYnNcbkBpbXBvcnQgJ3VzZXJzLXBhZ2UnO1xuXG4vLyBQcm9maWxlIFBhZ2UgLSBVc2VyIHByb2ZpbGUgYW5kIHNldHRpbmdzIHBhZ2VzXG5AaW1wb3J0ICdwcm9maWxlLXBhZ2UnO1xuXG4vLyBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uIC0gMkZBIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2luIHBhZ2VzXG5AaW1wb3J0ICd0d28tZmFjdG9yJztcblxuLy8gTm90aWZpY2F0aW9ucyBQYWdlIC0gVXNlciBub3RpZmljYXRpb24gcHJlZmVyZW5jZXNcbkBpbXBvcnQgJ25vdGlmaWNhdGlvbnMtcGFnZSc7XG5cbi8vIFN1YnNjcmlwdGlvbiBQYWdlcyAtIFRyaWFsIGV4cGlyZWQsIGNhbmNlbGxlZCwgcGVuZGluZyBzdWJzY3JpcHRpb24gc3RhdGVzXG5AaW1wb3J0ICdzdWJzY3JpcHRpb24tcGFnZXMnO1xuXG4vLyBPbmJvYXJkaW5nIENoZWNrbGlzdCAtIERhc2hib2FyZCBjaGVja2xpc3Qgd2lkZ2V0IHN0eWxlc1xuQGltcG9ydCAnb25ib2FyZGluZy1jaGVja2xpc3QnO1xuXG4vLyBPbmJvYXJkaW5nIFdpemFyZCAtIEZpcnN0LXJ1biBmbG93ICgvb25ib2FyZGluZykgc3R5bGVzXG5AaW1wb3J0ICdvbmJvYXJkaW5nLXdpemFyZCc7XG5cbi8vIE1vbmV5IC0gU2lnbmF0dXJlIGNvbXBvbmVudDsgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgZXZlcnkgY3VycmVuY3kgdmFsdWVcbkBpbXBvcnQgJ21vbmV5JztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU2hhcmVkIEZvcm0gUGFnZSBTdHlsZXNcbiAqXG4gKiBDb25zb2xpZGF0ZWQgZm9ybS1wYWdlIGxheW91dCBwYXR0ZXJuIHVzZWQgYWNyb3NzIFRheEJ1bmRsZSwgQ2xpZW50QnVuZGxlLFxuICogVXNlckJ1bmRsZSAoUHJvZmlsZSwgSW52aXRlLCBDaGFuZ2VQYXNzd29yZCkgYW5kIHNpbWlsYXIgZm9ybSBwYWdlcy5cbiAqXG4gKiBUZW1wbGF0ZSBzdHJ1Y3R1cmU6XG4gKiAgIC5mb3JtLXBhZ2UgPiAuZm9ybS1wYWdlLWNvbnRhaW5lclstLW5hcnJvd3wtLW1lZGl1bXwtLXdpZGVdID5cbiAqICAgICAuZm9ybS1wYWdlLWhlYWRlciA+IC5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQgPlxuICogICAgICAgLmZvcm0tcGFnZS1pY29uWy0tc2VjdXJpdHldICsgZGl2KC5mb3JtLXBhZ2UtdGl0bGUgKyAuZm9ybS1wYWdlLXN1YnRpdGxlKVxuICogICAgIC5mb3JtLXBhZ2Utc2VjdGlvbnMgPiAuZm9ybS1wYWdlLXNlY3Rpb24gPlxuICogICAgICAgLnNlY3Rpb24taGVhZGVyID4gLnNlY3Rpb24taWNvblstLXNlY3VyaXR5XSArIC5zZWN0aW9uLWhlYWRlci10ZXh0XG4gKiAgICAgICAgICguc2VjdGlvbi10aXRsZSArIC5zZWN0aW9uLWRlc2NyaXB0aW9uKVxuICogICAgICAgLnNlY3Rpb24tY29udGVudCA+IC5mb3JtLWdyaWQgPiAuZm9ybS1maWVsZFsuZm9ybS1maWVsZC13aWRlXVxuICogICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyA+IC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lclstLW1lZGl1bV1cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0lEVEgtQ09OU1RSQUlORUQgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTI0KTtcblxuICAgICYtLW5hcnJvdyB7IG1heC13aWR0aDogODAwcHg7IH1cblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cblxuICAgICYtLXdpZGUgICB7IG1heC13aWR0aDogMTEwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmZvcm0tcGFnZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tc2VjdXJpdHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5mb3JtLXBhZ2UtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5mb3JtLXBhZ2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTlMgTElTVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElORElWSURVQUwgU0VDVElPTiBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Utc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBUkVEIFNFQ1RJT04gSEVBREVSICh1c2VkIGluc2lkZSBmb3JtLXBhZ2Utc2VjdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5zZWN0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjE1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5zZWN0aW9uLWhlYWRlci10ZXh0IHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VjdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBCT0RZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFdPLUNPTFVNTiBGT1JNIEdSSURcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxufVxuXG4uZm9ybS1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZm9ybS1maWVsZC13aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVElDS1kgRk9PVEVSIEFDVElPTlMgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2IoMCAwIDAgLyA1JSk7XG59XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgJi0tbWVkaXVtIHsgbWF4LXdpZHRoOiA5MDBweDsgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTkhBTkNFRCBTQVZFIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLXNhdmUsXG4uYnRuLXNhdmUtcHJpbWFyeSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIERvY3VtZW50IFZpZXcgU2hhcmVkIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBsYXlvdXQgYW5kIGNvbXBvbmVudCBzdHlsZXMgZm9yIEludm9pY2UgYW5kIFF1b3RlIHZpZXcgcGFnZXMuXG4gKiBVc2VzIGdlbmVyaWMgYGRvYy12aWV3LSpgIC8gYGRvYy0qYCBjbGFzcyBuYW1lcyB0byBhdm9pZCBkdXBsaWNhdGlvbi5cbiAqIEJvdGggaW52b2ljZS12aWV3LnNjc3MgYW5kIHF1b3RlLXZpZXcuc2NzcyB1c2UgdGhlc2UgY2xhc3NlcyBkaXJlY3RseS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctcGFnZSB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgfVxufVxuXG4uZG9jLXZpZXctaGVhZGVyLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRvYy12aWV3LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXZpZXctdGl0bGUtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRvYy12aWV3LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsLCAxLjI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4uZG9jLXZpZXctbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRvYy12aWV3LW1ldGEtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG5cbi8vIEhlYWRlciBBY3Rpb25zXG5cbi5kb2Mtdmlldy1oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG59XG5cbi5kb2Mtdmlldy11dGlsaXR5LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gRHJvcGRvd24gc3R5bGluZ1xuXG4uZG9jLXZpZXctaGVhZGVyIC5kcm9wZG93bi1tZW51IHtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLnRleHQtZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVSTyBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1oZXJvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLmJ0bi1oZXJvLXVyZ2VudCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWRhbmdlcikgMCUsIHZhcigtLXN3cC1kYW5nZXItaG92ZXIpIDEwMCUpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1kYW5nZXIpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1kYW5nZXItaG92ZXIpIDAlLCB2YXIoLS1zd3AtZGFuZ2VyKSAxMDAlKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1kYW5nZXItbGcpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFJTiBDT05URU5UIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctY29udGVudCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzNDBweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gMTAyNHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRE9DVU1FTlQgQVJFQSAoTWFpbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWRvY3VtZW50IHtcbiAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgb3ZlcmZsb3dcbn1cblxuLmRvYy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gUGlsbC1zaGFwZWQgc3RhdHVzIGNoaXBzIHdoZXJldmVyIHRoZXkgYXBwZWFyIGluc2lkZSB0aGUgZG9jdW1lbnQgdmlldyBvciBpdHNcbi8vIHNpZGViYXIsIG1hdGNoaW5nIHRoZSBkZXNpZ24gc3lzdGVtIHNwZWMgKHJhZGl1cy1mdWxsLCB3ZWlnaHQgNTAwLCAycHggeCAxMHB4KS5cblxuLmRvYy1jYXJkIC5iYWRnZSxcbi5kb2MtcGFnZS1oZWFkZXIgLmJhZGdlLFxuLmRvYy12aWV3LWhlYWRlciAuYmFkZ2UsXG4uZG9jLXZpZXctc2lkZWJhciAuYmFkZ2Uge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgcGFkZGluZzogMnB4IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcblxuICAgIC8vIFRhYmxlciBiaW5kcyBgdGV4dC1ncmF5LWZnYCB0byBhbWJlciB2aWEgLS1icy1zZWNvbmRhcnk7IHRoaXMgbWFrZXMgYVxuICAgIC8vIGBDYW5jZWxsZWRgIGNoaXAgcmVhZCBhcyBhIHdhcm5pbmcuIFBpbiB0aGUgbmV1dHJhbCBjaGlwIHRvIHNsYXRlIHNvIHRoZVxuICAgIC8vIGNvbG91ciBtYXRjaGVzIHdoYXQgdGhlIGNsYXNzIG5hbWUgaW1wbGllcy5cblxuICAgICYuYmctZ3JheS50ZXh0LWdyYXktZmcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG59XG5cbi8vIERvY3VtZW50IEhlYWRlciAoRnJvbS9UbylcblxuLmRvYy1oZWFkZXItZnJvbS10byB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLXN3cC1ncmF5LTUwKSAwJSwgdmFyKC0tc3dwLXN1cmZhY2UpIDEwMCUpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cbn1cblxuLmRvYy1wYXJ0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uZG9jLXBhcnR5LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi5kb2MtcGFydHktbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZywgMS4xMjVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5kb2MtcGFydHktZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cblxuICAgIC5kZXRhaWwtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiOlwiO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGV0YWlsLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxuXG4gICAgYS5kZXRhaWwtdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIExpbmUgSXRlbXMgVGFibGVcblxuLmRvYy1pdGVtcyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXG4gICAgdGhlYWQge1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICYuY29sdW1uLXByaWNlLFxuICAgICAgICAgICAgJi5jb2x1bW4tcXR5LFxuICAgICAgICAgICAgJi5jb2x1bW4tdGF4LFxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0YWJsZSBoZWFkZXIgb24gbW9iaWxlXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFjayByb3dzIGFzIGNhcmRzIG9uIG1vYmlsZVxuICAgICAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cbiAgICAgICAgICAgICYuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jb2x1bW4tcHJpY2UsXG4gICAgICAgICAgICAmLmNvbHVtbi1xdHksXG4gICAgICAgICAgICAmLmNvbHVtbi10YXgsXG4gICAgICAgICAgICAmLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhY2sgY2VsbHMgb24gbW9iaWxlXG4gICAgICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXR0cihkYXRhLWxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbHVtbiB3aWR0aHMgKGRlc2t0b3Agb25seSlcbiAgICBAbWVkaWEgKHdpZHRoID49IDY0MXB4KSB7XG5cbiAgICAgICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcHJpY2Uge1xuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1xdHkge1xuICAgICAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRheCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMjBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVG90YWxzIFNlY3Rpb25cblxuLmRvYy10b3RhbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZy10b3A6IDA7XG59XG5cbi5kb2MtdG90YWxzLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtaW4td2lkdGg6IDI4MHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG59XG5cbi50b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB9XG59XG5cbi8vIFBheW1lbnRzIHJlY2VpdmVkIGFyZSBtb25leSBpbjsgc3VjY2VzcyBncmVlbiBlYXJucyBpdHMgcGxhY2UgaGVyZS5cblxuLnRvdGFscy1yb3ctcGF5bWVudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4vLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYSBzdWNjZXNzIHN0YXRlLiBTdGF5IG5ldXRyYWw7IHF1aWV0ICQwIGNhc2VzLlxuXG4udG90YWxzLXJvdy1kaXNjb3VudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4udG90YWxzLXJvdy1maW5hbCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbmQgdG90YWwgaXMgaW5mb3JtYXRpb25hbDsgZ3JlZW4gaXMgcmVzZXJ2ZWQgZm9yIGFjdHVhbGx5LXBhaWQgc3RhdGVzXG4gICAgLy8gKGhhbmRsZWQgYnkgLnN1bW1hcnktaXRlbS1wYWlkIC8gLnRvdGFscy1yb3ctcGF5bWVudCkuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZywgMS4xMjVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG59XG5cbi8vIERvY3VtZW50IEZvb3RlciAoVGVybXMgJiBOb3RlcylcblxuLmRvYy1mb290ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xufVxuXG4uZG9jLWZvb3Rlci1zZWN0aW9uIHtcblxuICAgICYgKyAmIHtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4uZG9jLWZvb3Rlci10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5kb2MtZm9vdGVyLXRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNJREVCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LXNpZGViYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gMTAyNHB4KSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpO1xuICAgIH1cbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1tdXRlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1zdWNjZXNzIHtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtaGlnaGxpZ2h0IHtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtc3VjY2VzcyAuZG9jLXNpZGViYXItY2FyZC1pY29uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIFN1bW1hcnkgR3JpZFxuXG4uZG9jLXN1bW1hcnktZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyBTdW1tYXJ5IEl0ZW1zXG5cbi5zdW1tYXJ5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAuc3VtbWFyeS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgIC8vIEFtb3VudCBmaWVsZDogdG90YWwgaW52b2ljZSB2YWx1ZS4gTmV1dHJhbCBieSBkZWZhdWx0OyB0aGUgc3RhdHVzIHJvdyBjYXJyaWVzXG4gICAgLy8gdGhlIFwiUGFpZCAvIE92ZXJkdWUgLyBEcmFmdFwiIG1lYW5pbmcuIEdyZWVuIGhlcmUgd291bGQgZG91YmxlLWVuY29kZS5cblxuICAgIC5zdW1tYXJ5LXZhbHVlLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC8vIEJhbGFuY2Ugc3RpbGwgb3dlZDogYW1iZXIgYXR0ZW50aW9uIGlzIGFwcHJvcHJpYXRlLlxuXG4gICAgLnN1bW1hcnktdmFsdWUtYmFsYW5jZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgIH1cbn1cblxuLnN1bW1hcnktaXRlbS1vdmVyZHVlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luOiBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTIpKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgLnN1bW1hcnktdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1pdGVtLXBhaWQge1xuXG4gICAgLnN1bW1hcnktdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cbn1cblxuLy8gQ2xpZW50IEluZm8gKHVzZWQgaW4gc2lkZWJhcilcblxuLmNsaWVudC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNsaWVudC1jb250YWN0IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4uY29udGFjdC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uY29udGFjdC1lbWFpbCxcbi5jb250YWN0LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4vLyBQYXltZW50cyBMaXN0ICh1c2VkIGluIGludm9pY2Ugc2lkZWJhcilcblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xufVxuXG4ucGF5bWVudC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5wYXltZW50LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LWNhcmQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4ucGF5bWVudC1tZXRob2QsXG4ucGF5bWVudC1kYXRlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi5wYXltZW50LW1lc3NhZ2Uge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi8vIFJlbGF0ZWQgZG9jdW1lbnQgbGlua3NcblxuLnJlbGF0ZWQtcXVvdGUtbGluayxcbi5yZWxhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLnJlbGF0ZWQtaW52b2ljZS1zdGF0dXMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuZG9jLXZpZXctcGFnZSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5kb2Mtdmlldy1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLmRvYy12aWV3LWRvY3VtZW50IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmRvYy1jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cblxuICAgIC5kb2MtaGVhZGVyLWZyb20tdG8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgfVxuXG4gICAgLmRvYy1pdGVtcy10YWJsZSB7XG5cbiAgICAgICAgdGhlYWQgdGgge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRvYy10b3RhbHMtZ3JpZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmRvYy1mb290ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5uby1wcmludCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEV4dGVybmFsIERvY3VtZW50IFZpZXcgLSBTaGFyZWQgU3R5bGVzXG4gKlxuICogU2hhcmVkIHN0eWxlcyBmb3IgcHVibGljLWZhY2luZyBpbnZvaWNlIGFuZCBxdW90ZSB2aWV3cy5cbiAqIEludm9pY2Utc3BlY2lmaWM6IGV4dGVybmFsLWludm9pY2Utdmlldy5zY3NzXG4gKiBRdW90ZS1zcGVjaWZpYzogZXh0ZXJuYWwtcXVvdGUtdmlldy5zY3NzXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBXUkFQUEVSIChzaGFyZWQgYmFzZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1ncmF5LTUwLCAjZjhmYWZjKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVBQIEJSQU5ESU5HIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXBwLWJyYW5kaW5nLWhlYWRlciB7XG4gICAgcGFkZGluZzogMS41cmVtIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcblxuICAgIC5hcHAtbG9nbyB7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFwcC1icmFuZC1uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMyZTk2M2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIH1cblxuICAgIC5hcHAtYnJhbmQtdGFnbGluZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXNlY29uZGFyeSwgIzY0NzQ4Yik7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTiBCQVIgKFRPUClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtYWN0aW9uLWJhciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUE9HUkFQSFkgJiBWSVNVQUwgSElFUkFSQ0hZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbXBhbnkgbmFtZSBpbiBoZWFkZXJcblxuLmV4dC1kb2MtY29tcGFueS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi8vIERvY3VtZW50IG51bWJlciAtIGxhcmdlIGFuZCBwcm9taW5lbnRcblxuLmV4dC1kb2MtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xufVxuXG4uZXh0LWRvYy1udW1iZXItbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi8vIFZBVCBudW1iZXIgLSBzdWJ0bGUgb3BhY2l0eVxuXG4uZXh0LWRvYy12YXQtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBvcGFjaXR5OiAwLjc1O1xufVxuXG4vLyBMb2dvIGNvbnRhaW5lclxuXG4uZXh0LWRvYy1sb2dvIHtcblxuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1FVEFEQVRBIENBUkQgLSBEYXRlLCBEdWUgRGF0ZSwgVG90YWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG59XG5cbi5leHQtZG9jLW1ldGFkYXRhLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uZXh0LWRvYy1tZXRhZGF0YS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xufVxuXG4uZXh0LWRvYy1tZXRhZGF0YS10b3RhbCB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRlJPTSAvIFRPIFNFQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXBhcnRpZXMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmV4dC1kb2MtcGFydHktbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5leHQtZG9jLXBhcnR5LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1kZXRhaWwge1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XG4gICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSVRFTVMgVEFCTEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtaXRlbXMtdGFibGUge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG5cbiAgICB0aGVhZCB7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLCAjY2JkNWUxKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDAuNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRib2R5IHtcblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRibHItZ3JheS01MCwgI2Y4ZmFmYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIH1cblxuICAgIC5pdGVtLWFtb3VudCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ3RudW0nO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UQUxTIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtdG90YWxzLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy10b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNjI1cmVtIDA7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcbiAgICB9XG59XG5cbi5leHQtZG9jLXRvdGFscy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ3RudW0nO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmV4dC1kb2MtdG90YWxzLWZpbmFsIHtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItZGFyaywgIzk0YTNiOCk7XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgbWFyZ2luLXRvcDogMC43NXJlbTtcblxuICAgIC5leHQtZG9jLXRvdGFscy1yb3cge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMCAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMyZTk2M2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPT1RFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1mb290ZXIge1xuXG4gICAgLmNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWJnLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIH1cblxuICAgIC5hcHAtbG9nbyBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyNHB4O1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDQVJEIFJFRklORU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN0YXR1cyBiYWRnZXNcblxuLmJhZGdlIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xufVxuXG4vLyBIb3Jpem9udGFsIHJ1bGVzXG5cbmhyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4vLyBGb2N1cyBzdHlsZXMgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cblxuLmJ0bjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4uY2FyZC1sZyB7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMi41cmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA5OTFweCkge1xuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCAuY2FyZC1ib2R5LFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIH1cblxuICAgIC5jYXJkLWxnIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjdweCkge1xuXG4gICAgLmV4dC1kb2MtbnVtYmVyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLXRvdGFsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLWZpbmFsIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1wYXJ0aWVzLXNlY3Rpb24ge1xuXG4gICAgICAgIC5jb2wtc20tNjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcblxuICAgIC5jb250YWluZXIteGwge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgfVxuXG4gICAgLmNhcmQtbGcgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIC5jYXJkLWJvZHksXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgfVxuXG4gICAgLy8gQXBwIGJyYW5kaW5nIGhlYWRlciAtIHN0YWNrIG9uIG1vYmlsZVxuXG4gICAgLmFwcC1icmFuZGluZy1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAxcmVtIDA7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwcC1icmFuZC1uYW1lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcHAtYnJhbmQtdGFnbGluZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvb3RlciAtIHN0YWNrIG9uIG1vYmlsZVxuXG4gICAgLmV4dC1kb2MtZm9vdGVyIHtcblxuICAgICAgICAuYnRuLXNtIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdGFjayBtZXRhZGF0YSBpdGVtcyBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQge1xuXG4gICAgICAgIC5jb2wtc20tNCxcbiAgICAgICAgLmNvbC1zbS02IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ha2UgYWN0aW9uIGJ1dHRvbnMgc3RhY2sgbmljZWx5IG9uIG1vYmlsZVxuXG4gICAgLmV4dC1kb2MtYWN0aW9uLWJhciB7XG5cbiAgICAgICAgLmQtZmxleC5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgZ2FwOiAwLjc1cmVtO1xuXG4gICAgICAgICAgICAuZC1mbGV4LmdhcC0yIHtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGdhcDogMC41cmVtO1xuXG4gICAgICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4tcHJpbWFyeSxcbiAgICAgICAgICAgIC5idG4tZGFuZ2VyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhYmxlIGFkanVzdG1lbnRzXG5cbiAgICAuZXh0LWRvYy1pdGVtcy10YWJsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG5cbiAgICAgICAgdGhlYWQgdGgge1xuICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICB0Ym9keSB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLm5vLXByaW50LFxuICAgIC5kLXByaW50LW5vbmUge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBwYWdlIHtcbiAgICAgICAgbWFyZ2luOiAxY207XG4gICAgfVxuXG4gICAgaHRtbCxcbiAgICBib2R5IHtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1wYWdlLFxuICAgIC5wYWdlLXdyYXBwZXIsXG4gICAgLnBhZ2UtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jb250YWluZXIteGwge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMC41Y20gIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnJvdyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jYXJkLFxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQsXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQge1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC5jYXJkLWxnIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuXG4gICAgdGFibGUge1xuICAgICAgICBicmVhay1pbnNpZGU6IGF1dG87XG4gICAgfVxuXG4gICAgdHIge1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICBicmVhay1hZnRlcjogYXV0bztcbiAgICB9XG5cbiAgICB0aGVhZCB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgICB9XG5cbiAgICAuYmctbGlnaHQsXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5iZy1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAudGV4dC1wcmltYXJ5LFxuICAgIC5leHQtZG9jLW1ldGFkYXRhLXRvdGFsLFxuICAgIC5leHQtZG9jLXRvdGFscy1maW5hbCAuZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgICAgICBjb2xvcjogIzJlOTYzYSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LXN1Y2Nlc3Mge1xuICAgICAgICBjb2xvcjogIzEwYjk4MSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtaXRlbXMtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQ6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaHIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNjYmQ1ZTEgIWltcG9ydGFudDtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU2hhcmVkIE1hcmtldHBsYWNlIFN0eWxlc1xuICpcbiAqIENvbW1vbiBzdHlsZXMgc2hhcmVkIGJldHdlZW4gUGF5bWVudEJ1bmRsZSBhbmQgTm90aWZpY2F0aW9uQnVuZGxlIG1hcmtldHBsYWNlIHBhZ2VzLlxuICogUGFnZS1zcGVjaWZpYyBzdHlsZXMgcmVtYWluIGluIHBheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyBhbmQgbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlLnNjc3MuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFSS0VUUExBQ0UgUEFORUwgLSBMZWZ0IFNpZGUgU3RpY2t5IFBhbmVsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTE2KSk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogNnB4O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWNvbG9ycyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS00MDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubWFya2V0cGxhY2UtaGVhZGVyIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC5mb3JtLWNvbnRyb2w6Zm9jdXMpIHtcblxuICAgICAgICAgICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBERUxFVEUgQ09ORklSTUFUSU9OIE5FU1RFRCBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYigwIDAgMCAvIDYwJSk7XG4gICAgei1pbmRleDogMTA2MDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4xNXMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiAxMDcwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMTVzIGVhc2U7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA0ODBweDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNjYWxlLWluIDAuMnMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWhlYWRlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5kZWxldGUtaWNvbi13cmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBUkVEIEFOSU1BVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBtYXJrZXRwbGFjZS1mYWRlLWluIHtcblxuICAgIGZyb20geyBvcGFjaXR5OiAwOyB9XG5cbiAgICB0byB7IG9wYWNpdHk6IDE7IH1cbn1cblxuQGtleWZyYW1lcyBtYXJrZXRwbGFjZS1zbGlkZS11cCB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpIHNjYWxlKDAuOTgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBtYXJrZXRwbGFjZS1zY2FsZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVVElMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iYWRnZS1zbSB7XG4gICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLm1hcmtldHBsYWNlLXNlYXJjaC1jbGVhciB7XG4gICAgei1pbmRleDogMTA7XG4gICAgcmlnaHQ6IDhweCAhaW1wb3J0YW50O1xufVxuIiwiLyoqXG4gKiBHbG9iYWwgU2VhcmNoIC0gVG9wIG5hdmlnYXRpb24gc2VhcmNoIGJhciB3aXRoIGxpdmUgcmVzdWx0cyBkcm9wZG93blxuICovXG5cbi5nbG9iYWwtc2VhcmNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA2MDBweDtcblxuICAgICYtaW5wdXQtd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmLWljb24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDAuNzVyZW07XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgJi1pbnB1dCB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIC8vIDAuNzVyZW0gaWNvbi1sZWZ0ICsgMXJlbSBpY29uLXdpZHRoICsgMC41cmVtIGdhcCA9IDIuMjVyZW1cbiAgICAgICAgLy8gUmlnaHQ6IGhlbHAtYnRuIDIwcHggKyBnYXAgNnB4ICsgc2hvcnRjdXQgfjY1cHggKyBtYXJnaW4gMTBweCA9IH4xMDFweCDiiYggNi41cmVtXG4gICAgICAgIHBhZGRpbmc6IDAgNi41cmVtIDAgMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDM4cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDBkM2Q4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiAjMzU0MDUyO1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCBzZWFyY2ggY2FuY2VsIGJ1dHRvblxuXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMmU5NjNhO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYig0NiAxNTAgNTggLyAxMiUpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDAuNjI1cmVtO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICB9XG5cbiAgICAmLXNob3J0Y3V0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgICAgIGtiZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMXJlbSAwLjM1cmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm9zcGFjZSk7XG4gICAgICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTZlN2U5O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNlYXJjaC1oZWxwLXRyaWdnZXIge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTNlODtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyMnB4O1xuICAgIGhlaWdodDogMjJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogI2FkYjViZDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogIzQ5NTA1NztcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjOWFhMGFjO1xuICAgIH1cbn1cblxuLnNlYXJjaC1oZWxwLXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5zZWFyY2gtaGVscC1vcCB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1tb25vc3BhY2UpO1xuICAgIGJhY2tncm91bmQ6ICNmNWY3ZmI7XG4gICAgcGFkZGluZzogMC4xNXJlbSAwLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGNvbG9yOiAjMzU0MDUyO1xufVxuXG4uc2VhcmNoLWhlbHAtZXhhbXBsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogM3B4O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzJlOTYzYTtcblxuICAgIGNvZGUge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgY29sb3I6ICMxYTU2ZGI7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgfVxufVxuXG4uc2VhcmNoLWRyb3Bkb3duIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDZweCk7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBtaW4td2lkdGg6IDUyMHB4O1xuXG4gICAgLy8gRXh0ZW5kIHN5bW1ldHJpY2FsbHkgYmV5b25kIHRoZSBpbnB1dCBmb3IgYSB3aWRlciBwYW5lbFxuICAgIG1hcmdpbi1sZWZ0OiAtNjBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IC02MHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2U2ZTdlOTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA4cHggNDBweCByZ2IoMCAwIDAgLyAxOCUpLCAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuXG4gICAgLy8gVXNlIGlzb2xhdGlvbiB0byBhdm9pZCBzdGFja2luZyBjb250ZXh0IGlzc3VlcyBmcm9tIHRoZSBuYXZiYXJcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgei1pbmRleDogOTk5OTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbmltYXRpb246IHNlYXJjaC1kcm9wZG93bi1pbiAwLjEycyBlYXNlLW91dDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2VhcmNoLWRyb3Bkb3duLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMC45OSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2VhcmNoLXNwaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0cyB7XG4gICAgbWF4LWhlaWdodDogNDQwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogNHB4O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlM2U4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgfVxufVxuXG4uc2VhcmNoLWdyb3VwIHtcblxuICAgICYgKyAmIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmMGYyZjU7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG4gICAgfVxuXG4gICAgJi1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDAuODc1cmVtIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWl0ZW0ge1xuXG4gICAgJi5pcy1hY3RpdmUgLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgfVxuXG4gICAgJjpob3ZlciAuc2VhcmNoLXJlc3VsdC1saW5rIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmYjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMC44NzVyZW07XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4wOHMgZWFzZTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWFyY2gtcmVzdWx0LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uc2VhcmNoLXJlc3VsdC1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWFyZ2luLXRvcDogMXB4O1xufVxuXG4uc2VhcmNoLXJlc3VsdC1hc2lkZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBnYXA6IDAuMnJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC40NXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtbWV0YSB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogIzM1NDA1MjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uc2VhcmNoLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAyLjVyZW0gMXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXG4gICAgJi1pY29uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmLXRleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4uc2VhcmNoLWVycm9yIHtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItZGFuZ2VyLCAjZDYzOTM5KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbn1cblxuLnNlYXJjaC1jaGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOGYwZmU7XG4gICAgY29sb3I6ICMxYTU2ZGI7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtcmVtb3ZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtY2hpcHMtYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjJmNTtcbiAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhcmNoLXN1Z2dlc3Rpb25zIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNmU3ZTk7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiKDAgMCAwIC8gMTIlKTtcbiAgICB6LWluZGV4OiAxMDAwMDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtIDAuMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICB9XG5cbiAgICAmLWl0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiAjMzU0MDUyO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgICAgIH1cblxuICAgICAgICBjb2RlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERhdGFHcmlkIENvbXBvbmVudCBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4sIGNsZWFuIGRhdGEgZ3JpZCBzdHlsaW5nIGZvbGxvd2luZyB0aGUgU29saWRJbnZvaWNlIGRlc2lnbiBzeXN0ZW0uXG4gKiBVc2VzIGRlc2lnbiB0b2tlbnMgZnJvbSBfdG9rZW5zLnNjc3MgZm9yIGNvbnNpc3RlbmN5LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERBVEFHUklEIEJBU0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkIHtcbiAgICAvLyBDb250YWluZXIgZm9yIHRoZSBlbnRpcmUgZGF0YWdyaWQgY29tcG9uZW50XG4gICAgLy8gTm90ZTogb3ZlcmZsb3cgaXMgTk9UIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgZHJvcGRvd25zIHRvIGV4dGVuZCBiZXlvbmQgYm91bmRzXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRmxhc2ggbWVzc2FnZXMgaW5zaWRlIHRoZSBkYXRhZ3JpZFxuXG4gICAgPiAuYWxlcnQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLmRhdGFncmlkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQVJDSCAmIEZJTFRFUiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLWVuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZGF0YWdyaWQtc2VhcmNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMTtcbiAgICBtYXgtd2lkdGg6IDMyMHB4O1xuXG4gICAgLmRhdGFncmlkLXNlYXJjaC1pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gtaW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSVZFIEZJTFRFUlMgKENoaXBzIGluIHRvb2xiYXIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVycyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItcmVtb3ZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLWtleSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItdmFsdWUge1xuICAgICAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1yZW1vdmUge1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJTFRFUiBQQU5FTCAoRHJvcGRvd24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1maWx0ZXItZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBFbnN1cmUgbmVzdGVkIGRyb3Bkb3ducyAobGlrZSBzZWxlY3QyKSBhcHBlYXIgYWJvdmUgdGhlIHBhbmVsXG5cbiAgICAuZHJvcGRvd24tbWVudSxcbiAgICAuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAgICAgICB6LWluZGV4OiAxMDYwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDM1MHB4KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3ducyB3aXRoaW4gZmllbGRzIGhhdmUgcHJvcGVyIHotaW5kZXhcblxuICAgIC5mb3JtLXNlbGVjdCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgLy8gRGF0ZSByYW5nZSBmaWVsZHNcblxuICAgIC5yb3cge1xuICAgICAgICAtLWJzLWd1dHRlci14OiAwLjVyZW07XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXdpZGdldCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciBmb3JtIHdpZGdldHNcblxuICAgIC8vIERhdGUgcmFuZ2UgZmllbGRzIC0gZGlzcGxheSBpbmxpbmUgKHNpZGUgYnkgc2lkZSlcbiAgICAvLyBUaGUgRGF0ZVJhbmdlRm9ybVR5cGUgY3JlYXRlcyBhIGNvbnRhaW5lciBkaXYgd2l0aCBzdGFydC9lbmQgZGF0ZSBmaWVsZHNcblxuICAgID4gZGl2Omhhcyg+IGRpdiA+IGlucHV0W3R5cGU9XCJkYXRlXCJdKSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgLy8gRWFjaCBkYXRlIGZpZWxkIGNvbnRhaW5lclxuXG4gICAgICAgICAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIGNob2ljZSAoY2hlY2tib3hlcy9yYWRpb3MpIC0gcmVuZGVyIGFzIHN0YW5kYXJkIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJyaWRlIGFueSBzd2l0Y2ggc3R5bGVzIC0gZm9yY2UgcmVndWxhciBjaGVja2JveCBhcHBlYXJhbmNlXG5cbiAgICAgICAgJi5mb3JtLXN3aXRjaCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVtb3ZlIHN3aXRjaC9waWxsIGFwcGVhcmFuY2VcblxuICAgICAgICAgICAgJlt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJyUzZSUzY3BhdGggZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNmZmYnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdNNiAxMGwzIDNsNi02Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNwYWNlIGJldHdlZW4gY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vIEZvcm0gZWxlbWVudHMgd2l0aGluIGZpbHRlciBwYW5lbFxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsIHtcbiAgICAvLyBTdGFuZGFyZCBmb3JtIGNvbnRyb2xzXG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIaWRlIG5lc3RlZCBsYWJlbHMgZnJvbSBEYXRlUmFuZ2VGb3JtVHlwZSAod2Ugc2hvdyBvdXIgb3duKVxuXG4gICAgLmRhdGFncmlkLWZpbHRlci1maWVsZCA+IC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBEYXRlIHJhbmdlIHN1Yi1sYWJlbHNcblxuICAgIC5kYXRhZ3JpZC1maWx0ZXItZmllbGQgLnJvdyB7XG5cbiAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE11bHRpcGxlIGNob2ljZSBjaGVja2JveGVzXG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuIG11bHRpcGxlIGNoZWNrYm94ZXMgaW4gYSBsaXN0XG5cbiAgICAuZm9ybS1jaGVjayArIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBkcm9wZG93biBhZGp1c3RtZW50c1xuXG4gICAgc2VsZWN0W211bHRpcGxlXSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAgICAgb3B0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVhQT1JUIE1FTlUgKERyb3Bkb3duKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtZXhwb3J0LWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudSB7XG4gICAgd2lkdGg6IDI4MHB4O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudS10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtc3VidGl0bGUge1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmRhdGFncmlkLWV4cG9ydC1vcHRpb246aG92ZXIgJixcbiAgICAuZGF0YWdyaWQtZXhwb3J0LW9wdGlvbjpmb2N1cy12aXNpYmxlICYge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi10ZXh0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24taGludCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09MVU1OIFZJU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWNvbHVtbi1waWNrZXIge1xuXG4gICAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgZGVmYXVsdCBkcm9wZG93biBjYXJldFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMjBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCTEUgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10YWJsZS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cblxuICAgIHRib2R5IHtcbiAgICAgICAgLy8gVGFidWxhciBmaWd1cmVzIGFjcm9zcyB0aGUgdGFibGUgc28gYW1vdW50cywgSURzIGFuZCBkYXRlcyBhbGlnbiBjbGVhbmx5XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxuXG4gICAgdGJvZHkgdHIge1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHR5cGVzXG5cbiAgICAuY29sLWNoZWNrYm94IHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICB0aC5jb2wtY2hlY2tib3gge1xuICAgICAgICAvLyBLZWVwIGhlYWRlciBjaGVja2JveCBjZW50ZXJlZCB0byBtYXRjaCBjZWxsc1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbC1pZCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmNvbC1kYXRlIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBNb25leSBjb2x1bW5zOiByaWdodC1hbGlnbiBib3RoIGhlYWRlciBhbmQgY2VsbCwgdGFidWxhciBmaWd1cmVzIG9uIHN5c3RlbSBmb250LlxuICAgIC8vIE1vbm8gaXMgcmVzZXJ2ZWQgZm9yIGlkZW50aWZpZXJzIHBlciB0aGUgZGVzaWduIHN5c3RlbTsgbW9uZXkgcmVhZHMgYXMgZGF0YSwgbm90IGNvZGUuXG5cbiAgICAuY29sLWFtb3VudCxcbiAgICAuY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIHRoLmNvbC1hbW91bnQsXG4gICAgdGguY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGhlIHNvcnRhYmxlIGxpbmsgaW5zaWRlIGEgcmlnaHQtYWxpZ25lZCBoZWFkZXIgbmVlZHMgaXRzIGNvbnRlbnQgcHVzaGVkIHJpZ2h0IHRvb1xuXG4gICAgdGguY29sLWFtb3VudCAuZGF0YWdyaWQtc29ydC1saW5rLFxuICAgIHRoLmNvbC1tb25leSAuZGF0YWdyaWQtc29ydC1saW5rIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAuY29sLXN0YXR1cyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmNvbC1hY3Rpb25zIHtcbiAgICAgICAgd2lkdGg6IDElO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAvLyBUYWJsZXIgYmFkZ2VzIGxpdmUgaW5zaWRlIHN0YXR1cyBjZWxscy4gVGhlIGRlc2lnbiBzeXN0ZW0gbWFuZGF0ZXMgcGlsbCBjaGlwcy5cblxuICAgIHRib2R5IC5iYWRnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAgICAgLy8gYHRleHQtZ3JheS1mZ2AgaXMgYW1iZXItYm91bmQ7IG5ldXRyYWxpc2UgdGhlIENhbmNlbGxlZCBjaGlwIGV4cGxpY2l0bHkuXG5cbiAgICAgICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFNvcnRhYmxlIGNvbHVtbiBoZWFkZXJzXG5cbi5kYXRhZ3JpZC1zb3J0LWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgICYuc29ydGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIG9wYWNpdHk6IDAuMzU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIgLmRhdGFncmlkLXNvcnQtaWNvbiB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBST1cgQUNUSU9OUyAoSWNvbiBCdXR0b25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtcm93LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGF0YWdyaWQtYWN0aW9uLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi12aWV3OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5hY3Rpb24tZWRpdDpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuYWN0aW9uLWRlbGV0ZTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBtZW51IGJ1dHRvblxuXG4uZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyLFxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBUaHJlZS1kb3QgZHJvcGRvd24gbWVudSBjb250YWluZXJcblxuLmRhdGFncmlkLW1vcmUtbWVudSB7XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMTYwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwO1xuICAgIH1cbn1cblxuLy8gU2hvdyBtb3JlIGJ1dHRvbiBvbiByb3cgaG92ZXIgb25seSAoc3VidGxlIFVYKVxuXG50Ym9keSB0cjpub3QoOmhvdmVyKSAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbnRib2R5IHRyOmhvdmVyIC5kYXRhZ3JpZC1tb3JlLWJ0bixcbi5kYXRhZ3JpZC1tb3JlLW1lbnUuc2hvdyAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tCT1ggU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWVtcHR5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZW1wdHktdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRhdGFncmlkLWVtcHR5LW1lc3NhZ2Uge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZW1wdHktYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGTE9BVElORyBCVUxLIEFDVElPTiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWJ1bGstYmFyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAyNHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgei1pbmRleDogOTk5OTsgLy8gVmVyeSBoaWdoIHRvIGVuc3VyZSB2aXNpYmlsaXR5IGFib3ZlIGV2ZXJ5dGhpbmdcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5IDBzIDMwMG1zO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkgMHM7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1iYXItaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY291bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAuY291bnQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDEwJSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbiAgICB9XG5cbiAgICAmLmJ0bi1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjM5IDY4IDY4IC8gMjAlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY2xvc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAxMCUpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHSU5BVElPTiBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZvb3Rlci1pbmZvIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtcGVyLXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1wYWdpbmF0aW9uIHtcblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAucGFnZS1pdGVtIHtcblxuICAgICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RBVFVTIEJBREdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0wLTUpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgJi5zdGF0dXMtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMDY1ZjQ2O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1kYW5nZXIge1xuICAgICAgICBjb2xvcjogIzk5MWIxYjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy13YXJuaW5nIHtcbiAgICAgICAgY29sb3I6ICM5MjQwMGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLWluZm8ge1xuICAgICAgICBjb2xvcjogIzFlNDBhZjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUxBVElWRSBEQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yZWxhdGl2ZS1kYXRlIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMT0FESU5HIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1sb2FkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyA3MCUpO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1sb2FkaW5nLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB6LWluZGV4OiAxMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuZGF0YWdyaWQtaGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtdGFibGUge1xuXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstYmFyLWlubmVyIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYnVsay1kaXZpZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVYUEFOREFCTEUgUk9XU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIC8vIEV4cGFuZCBjb2x1bW4gc3R5bGluZ1xuXG4gICAgLmNvbC1leHBhbmQge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwYW5kLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2U7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi8vIERldGFpbCByb3cgKGhpZGRlbiBieSBkZWZhdWx0KVxuXG4uZGF0YWdyaWQtZGV0YWlsLXJvdyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG5cbiAgICAmLnZpc2libGUge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWRldGFpbC1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFuaW1hdGlvbjogZGF0YWdyaWQtc2xpZGUtZG93biAyMDBtcyBlYXNlO1xuXG4gICAgLy8gT3ZlcnJpZGUgbmVzdGVkIGRhdGFncmlkIGNhcmQgc3R5bGVzIHdoZW4gaW5zaWRlIGRldGFpbCByb3dcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGRhdGFncmlkLXNsaWRlLWRvd24ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUEkgVE9LRU4gSElTVE9SWSAoRXhwYW5kYWJsZSBSb3cgRGV0YWlsKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXBpLXRva2VuLWhpc3Rvcnkge1xuXG4gICAgaDQge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkge1xuXG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cjpsYXN0LWNoaWxkIHRkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQ2xpZW50IEZvcm0gU3R5bGVzXG4gKlxuICogQ2xpZW50LXNwZWNpZmljIHN0eWxlcyBmb3IgdGhlIGNsaWVudCBjcmVhdGlvbi9lZGl0IGZvcm0uXG4gKiBPdXRlciBmb3JtLXBhZ2UgbGF5b3V0IHVzZXMgc2hhcmVkIGNsYXNzZXMgZnJvbSBfZm9ybS1wYWdlLnNjc3MuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT1BUSU9OQUwgU0VDVElPTiBWQVJJQU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1zZWN0aW9uLW9wdGlvbmFsIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFUVVJUkVEIC8gT1BUSU9OQUwgU0VDVElPTiBJQ09OIE1PRElGSUVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWljb24tcmVxdWlyZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRBQ1QgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uY29udGFjdC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5jb250YWN0LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uY29udGFjdC1hdmF0YXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtY2FyZC10aXRsZSB7XG4gICAgZmxleDogMTtcbn1cblxuLmNvbnRhY3QtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY29udGFjdC1jYXJkLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0LWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uY29udGFjdC1mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4uY29udGFjdC1maWVsZC1lbWFpbCB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQURESVRJT05BTCBDT05UQUNUIERFVEFJTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlsLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDE0MHB4IDFmciBhdXRvO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIC5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgICAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLWFkZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWRkLWRldGFpbC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERFJFU1MgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkcmVzc2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmFkZHJlc3MtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5hZGRyZXNzLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYWRkcmVzcy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5hZGRyZXNzLWNhcmQtdGl0bGUge1xuICAgIGZsZXg6IDE7XG59XG5cbi5hZGRyZXNzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmFkZHJlc3MtY2FyZC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYWRkcmVzcy1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmFkZHJlc3MtZm9ybS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREIElURU0gQUNUSU9OIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkLWl0ZW0tYWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uYWRkLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJysnO1xuICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFOSU1BVElPTiBGT1IgTkVXIElURU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgY2xpZW50LXNsaWRlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtY2FyZCxcbi5hZGRyZXNzLWNhcmQge1xuICAgIGFuaW1hdGlvbjogY2xpZW50LXNsaWRlLWluIDAuMnMgZWFzZS1vdXQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVNUFRZIFNUQVRFIFNUWUxJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbnRhY3RzLWxpc3Q6ZW1wdHk6OmJlZm9yZSxcbi5hZGRyZXNzZXMtbGlzdDplbXB0eTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZW1wdHktY29udGFjdHMtaGludCxcbi5lbXB0eS1hZGRyZXNzZXMtaGludCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQmlsbGluZyBGb3JtIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gaW52b2ljZSBjcmVhdGlvbiBmb3JtIHdpdGggMi1jb2x1bW4gbGF5b3V0LFxuICogc3RpY2t5IHRvdGFscyBzaWRlYmFyLCBhbmQgY29sbGFwc2libGUgc2VjdGlvbnMuXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQklMTElORyBGT1JNIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLmJpbGxpbmctZm9ybS1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMjQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwO1xufVxuXG4uYmlsbGluZy1mb3JtLWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5iaWxsaW5nLWZvcm0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmJpbGxpbmctZm9ybS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLmJpbGxpbmctZm9ybS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCSUxMSU5HIERFVEFJTFMgU0VDVElPTiAoQ2xpZW50LCBJbnZvaWNlIElELCBEYXRlcywgRGlzY291bnQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWRldGFpbHMtc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmJpbGxpbmctZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZpZXIgZm9yIGZvcm1zIHdpdGhvdXQgZGF0ZSBmaWVsZHMgKGUuZy4sIFF1b3RlcylcblxuICAgICYtLW5vLWRhdGVzIHtcblxuICAgICAgICAuYmlsbGluZy1kZXRhaWxzLXJpZ2h0IHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1kZXRhaWxzLXJpZ2h0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIEludm9pY2UgSUQgd2l0aCBpbmxpbmUgZWRpdFxuXG4uYmlsbGluZy1pZC1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmJpbGxpbmctaWQtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuXG4gICAgICAgIC8vIElkZW50aWZpZXJzIGFyZSBub3QgbW9uZXkuIFByaW1hcnkgZ3JlZW4gaXMgcmVzZXJ2ZWQgZm9yIHBhaWQgc3RhdGVzIGFuZCBDVEFzLlxuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtZWRpdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJpbGxpbmctaWQtZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi8vIERhdGUgZmllbGRzIHJvd1xuXG4uaW52b2ljZS1kYXRlcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBTRUxFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zZWxlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogYmlsbGluZy1zbGlkZS1pbiAwLjJzIGVhc2Utb3V0O1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNoYW5nZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNvbnRhY3RzIHtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY29udGFjdHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jb250YWN0LWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5jb250YWN0LW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICAuY29udGFjdC1lbWFpbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUFJTiBDT05URU5UIC0gMiBDT0xVTU4gTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tbWFpbiB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzMjBweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDExMDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyODBweDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBJVEVNUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYmlsbGluZy1pdGVtcy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmJpbGxpbmctaXRlbXMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctaXRlbXMtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBMaW5lIGl0ZW1zIGxpc3QgKHJlc3BvbnNpdmUgZ3JpZClcblxuLmJpbGxpbmctaXRlbXMtbGlzdCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDIuNmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCgxNDBweCwgMC45ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIFdpdGhvdXQgdGF4IGNvbHVtbiAtIGdpdmUgZGVzY3JpcHRpb24gZXZlbiBtb3JlIHNwYWNlXG5cbi5iaWxsaW5nLWl0ZW1zLWxpc3Q6bm90KDpoYXMoLmNvbHVtbi10YXgpKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMy44ZnIpIG1pbm1heCgxMDBweCwgMC45ZnIpIDU2cHggbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMy44ZnIpIG1pbm1heCgxMDBweCwgMC45ZnIpIDU2cHggbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBXaGVuIHRoZSBUYXggY29sdW1uIGV4aXN0cyBidXQgbm8gbGluZS10YXggZHJvcGRvd25zIGFyZSBhZGRlZCBvbiBhbnkgcm93LFxuLy8gc2hyaW5rIHRoZSBUYXggc2xvdCBzbyB0aGUgXCIrIEFkZCB0YXhcIiBidXR0b24gZG9lc24ndCBsZWF2ZSBhIHZpc2libGUgZ2FwXG4vLyBiZXR3ZWVuIFRheCBhbmQgVG90YWwuIFRoZSB3aWRlciBzbG90IHJldHVybnMgdGhlIG1vbWVudCBhIHRheCByb3cgYXBwZWFycy5cblxuLmJpbGxpbmctaXRlbXMtbGlzdDpoYXMoLmNvbHVtbi10YXgpOm5vdCg6aGFzKC5saW5lLXRheC1yb3cpKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMy4yZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDgwcHgsIDAuNWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMi42ZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDE0MHB4LCAwLjlmcikgbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLy8gUHJldmVudCBncmlkIGJsb3dvdXRcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1pbi13aWR0aDogMDsgLy8gUHJldmVudCBncmlkIGJsb3dvdXRcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1wcmljZSxcbiAgICAuY29sdW1uLXF0eSxcbiAgICAuY29sdW1uLXRheCB7XG5cbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tcHJpY2Uge1xuICAgICAgICAvLyBTbGltIGRvd24gdGhlIGxlYWRpbmcgY3VycmVuY3ktc3ltYm9sIGFkZG9uICh0aGUgXCIkXCIvXCLigqxcIiBwcmVmaXgpXG4gICAgICAgIC8vIHNvIGl0IHN0b3BzIGVhdGluZyB+MzAlIG9mIHRoZSBjb2x1bW4ncyB1c2FibGUgaW5wdXQgd2lkdGguXG5cbiAgICAgICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjRyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXF0eSB7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBNb2JpbGUgcmVzcG9uc2l2ZSBsYXlvdXRcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAgICdkZXNjIGRlc2MnXG4gICAgICAgICAgICAncHJpY2UgcXR5J1xuICAgICAgICAgICAgJ3RheCB0YXgnXG4gICAgICAgICAgICAnYWN0aW9ucyB0b3RhbCc7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBkZXNjO1xuXG4gICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogODBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcHJpY2Uge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBwcmljZTtcblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1xdHkge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBxdHk7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdGF4IHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogdGF4O1xuXG4gICAgICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogYWN0aW9ucztcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogdG90YWw7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgICAgICAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUmVtb3ZlIGl0ZW0gYnV0dG9uXG5cbi5yZW1vdmUtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLy8gQWRkIGl0ZW0gYnV0dG9uXG5cbi5hZGQtaXRlbS1hY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZC1pdGVtLWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEVSLUxJTkUgTVVMVEktVEFYIChTdGFja2VkIHJvd3MgaW4gdGhlIFRheCBjb2x1bW4pXG4vLyBFYWNoIC5saW5lLXRheC1yb3cgdXNlcyBhIHNpbmdsZS1yb3cgZmxleCBsYXlvdXQ6XG4vLyAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUkFxuLy8gICDilIIgdGF4IGRyb3Bkb3duICAgICAgICAgICAgICAgICAgICDilIIgIMOXICDilIJcbi8vICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSYXG4vLyBDb21wb3VuZCBpcyBhIHByb3BlcnR5IG9mIHRoZSB1bmRlcmx5aW5nIFRheCByYXRlIChzbmFwc2hvdHRlZCBpbnRvIExpbmVUYXhcbi8vIHZpYSBgc25hcHNob3RGcm9tYCkg4oCUIHRoZXJlJ3Mgbm8gcGVyLWxpbmUgb3ZlcnJpZGUsIHNvIHRoZSBmb3JtIGRvZXNuJ3Rcbi8vIGV4cG9zZSBpdC5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmxpbmUtdGF4LWNvbGxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5saW5lLXRheC1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA0cHg7XG59XG5cbi5saW5lLXRheC1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4ubGluZS10YXgtZmllbGQtdGF4IHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgICBzZWxlY3QsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgcGFkZGluZzogNHB4IDIycHggNHB4IDhweDtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDZweCBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTJweDtcbiAgICB9XG59XG5cbi5saW5lLXRheC1hY3Rpb25zIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5saW5lLXRheC1yZW1vdmUtYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLCBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1kYW5nZXItcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4ubGluZS10YXgtYWRkLWJ0biB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOVk9JQ0UtTEVWRUwgVEFYRVMgKFdpdGhob2xkaW5nICYgYWRqdXN0bWVudHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1zdWJ0aXRsZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXgtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDJmcikgbWlubWF4KDAsIDFmcikgbWlubWF4KDAsIDNmcikgYXV0bztcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4uaW52b2ljZS10YXgtZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmludm9pY2UtdGF4LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RBTFMgU0lERUJBUiAoU3RpY2t5IG9uIERlc2t0b3ApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLXRvdGFscy1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5OTJweCkge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cblxuLmJpbGxpbmctdG90YWxzLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYmlsbGluZy10b3RhbHMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYmlsbGluZy10b3RhbHMtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uYmlsbGluZy10b3RhbHMtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmJpbGxpbmctdG90YWxzLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbn1cblxuLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4udG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnRvdGFscy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLnRvdGFscy1yb3ctZGlzY291bnQge1xuICAgIC8vIEEgZGlzY291bnQgaXMgYSBkZWR1Y3Rpb24sIG5vdCBhbiBlcnJvci4gUXVpZXQgaXQgZG93biBpbnN0ZWFkIG9mIGZsYWdnaW5nIGl0IHJlZC5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLnRvdGFscy1yb3ctdG90YWwge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGdyYW5kIHRvdGFsIGlzIGluZm9ybWF0aW9uYWwsIG5vdCBhIFwiUGFpZFwiIHN0YXRlLiBHcmVlbiBvbmx5IHdoZW4gdGhlXG4gICAgLy8gaW52b2ljZSBpcyBhY3R1YWxseSBwYWlkOyBvbiB0aGUgZWRpdCBzY3JlZW4gdGhpcyBzdGF5cyBuZXV0cmFsIHRleHQuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxufVxuXG4vLyBEaXNjb3VudCBmaWVsZCBpbiBzaWRlYmFyXG5cbi5kaXNjb3VudC1maWVsZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRFUk1TICYgTk9URVMgQ09MTEFQU0lCTEUgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy10ZXJtcy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJltvcGVuXSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuICAgICAgICAudGVybXMtc3VtbWFyeSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAudGVybXMtc3VtbWFyeS1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRlcm1zLXN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG59XG5cbi50ZXJtcy1zdW1tYXJ5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRleHQge1xuICAgIGZsZXg6IDE7XG59XG5cbi50ZXJtcy1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuXG4udGVybXMtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4udGVybXMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TIChTdGlja3kgRm9vdGVyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLWFjdGlvbnMge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIFNwbGl0IGJ1dHRvbiBncm91cCBmb3Igc2F2ZSBhY3Rpb25zXG5cbi5zYXZlLWJ1dHRvbi1ncm91cCB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAxODBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTU9CSUxFIExJTkUgSVRFTSBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy10YWJsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbXMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPj0gNzY5cHgpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtdG90YWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5pdGVtLXRvdGFsLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFOSU1BVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBiaWxsaW5nLXNsaWRlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIwKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZGV0YWlscy1zZWN0aW9uLFxuICAgIC5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24sXG4gICAgLmJpbGxpbmctdG90YWxzLWNhcmQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC1kaXNwbGF5IHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5iaWxsaW5nLWlkLWxhYmVsLFxuICAgICAgICAuYmlsbGluZy1pZC12YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVjdXJyaW5nIFNjaGVkdWxlIFNlY3Rpb24gKG9uIGNyZWF0ZS9lZGl0IHBhZ2UpXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgLnNlY3Rpb24taGVhZGVyLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeSkgMCUsIHZhcigtLXN3cC1wcmltYXJ5LWRhcmspIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWN0aW9uLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgICAgIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSkgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yZWN1cnJpbmctc2NoZWR1bGUtY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLy8gUmVjdXJyaW5nIE9wdGlvbnMgV3JhcHBlciAtIFN0eWxlIGZvcm0gZmllbGRzIHJlbmRlcmVkIGJ5IER5bmFtaWNGb3JtQnVpbGRlclxuXG4ucmVjdXJyaW5nLW9wdGlvbnMtd3JhcHBlciB7XG4gICAgLy8gVHlwZSBmaWVsZCAocmFkaW8gYnV0dG9ucykgLSBNYWtlIHRoZW0gdmlzdWFsIGNhcmRzXG5cbiAgICBbaWQkPSdfdHlwZSddLCBbaWQkPSdfZW5kVHlwZSddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNzBweDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgW2lkJD0nX2VuZFR5cGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIERheXMgZmllbGQgZm9yIFdlZWtseS9ZZWFybHkgKGNoZWNrYm94ZXMgZm9yIGRheXMvbW9udGhzKSAtIE1ha2UgdGhlbSBidXR0b24gdG9nZ2xlc1xuXG4gICAgW2lkJD0nX2RheXMnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg4MHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoNzBweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5mb3JtLWNoZWNrIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRleHQgY29udGVudCBpcyB2aXNpYmxlXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLWZyZXF1ZW5jeS1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLnJlY3VycmluZy1mcmVxdWVuY3ktdGV4dCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFZhcmlhYmxlIEhlbHAgLSBDb2xsYXBzaWJsZSBJbmZvIEJveFxuXG4ucmVjdXJyaW5nLXZhcmlhYmxlcy1oZWxwIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tYmctc3VidGxlKTtcblxuICAgIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZW1waGFzaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnZhcmlhYmxlcy1jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG5cbiAgICAgICAgLnZhcmlhYmxlcy1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZhcmlhYmxlcy1saXN0IHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICAgICAgICAgY29kZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudmFyaWFibGUtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC52YXJpYWJsZS1leGFtcGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXhhbXBsZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmW29wZW5dIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBWSUVXIFBBR0UgU0lERUJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBIaWdobGlnaHRlZCBjYXJkIChlLmcuLCBSZWN1cnJpbmcgU2NoZWR1bGUgY2FyZClcblxuLmludm9pY2Utc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDMpLCB0cmFuc3BhcmVudCk7XG59XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBHcmlkIChsYWJlbCB8IHZhbHVlIHBhaXJzKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vLyBVcGNvbWluZyBPY2N1cnJlbmNlcyBMaXN0XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm9jY3VycmVuY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ub2NjdXJyZW5jZS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIEdlbmVyYXRlZCBJbnZvaWNlcyBMaXN0XG5cbi5nZW5lcmF0ZWQtaW52b2ljZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAuZ2VuZXJhdGVkLWludm9pY2UtbnVtYmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi52aWV3LWFsbC1saW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBQYXltZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBwYXltZW50IHBhZ2Ugd2l0aCB0d28tY29sdW1uIGxheW91dCxcbiAqIGNhcmQtYmFzZWQgcGF5bWVudCBtZXRob2Qgc2VsZWN0aW9uLCBhbmQgaW52b2ljZSBzdW1tYXJ5LlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgUEFHRSBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLnBheW1lbnQtY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEyKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5wYXltZW50LWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wYXltZW50LWhlYWRlci1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUV08tQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFIFNVTU1BUlkgQ0FSRCAoTGVmdCBDb2x1bW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWludm9pY2Utc3VtbWFyeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgfVxufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1pbmZvLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi8vIFN1bW1hcnkgU2VjdGlvbnNcblxuLnN1bW1hcnktc2VjdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLnN1bW1hcnktc2VjdGlvbi1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc3VtbWFyeS1jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5jbGllbnQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNyZWRpdC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLy8gSW52b2ljZSBEZXRhaWxzIEdyaWRcblxuLmludm9pY2UtZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kZXRhaWwtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGV0YWlsLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIExpbmUgSXRlbXMgUHJldmlld1xuXG4ubGluZS1pdGVtcy1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5saW5lLWl0ZW0tcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4ubGluZS1pdGVtLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXgtd2lkdGg6IDYwJTtcbn1cblxuLmxpbmUtaXRlbS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIFN1bW1hcnkgVG90YWxzXG5cbi5zdW1tYXJ5LXRvdGFscyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFN0YXkgbmV1dHJhbC5cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWRpc2NvdW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIFBheW1lbnRzIGFscmVhZHkgcmVjZWl2ZWQgYXJlIHBvc2l0aXZlIG1vbmV5IGluLlxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctcGF5bWVudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctYmFsYW5jZSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIFRoZSBhbW91bnQtdG8tcGF5IGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIHdvdWxkIGltcGx5IFwiUGFpZFwiLCB3aGljaCBpdFxuICAgIC8vIGlzbid0IHlldC4gVGhlIFwiQmFsYW5jZSByZW1haW5pbmdcIiBjYWxsb3V0IG5leHQgdG8gdGhlIGFtb3VudCBmaWVsZFxuICAgIC8vIGFscmVhZHkgY2FycmllcyB0aGUgYXR0ZW50aW9uLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIEZPUk0gQ0FSRCAoUmlnaHQgQ29sdW1uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1mb3JtLXNlY3Rpb24ge1xuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgfVxufVxuXG4ucGF5bWVudC1mb3JtLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGF5bWVudC1mb3JtLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5wYXltZW50LWZvcm0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtZm9ybS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi5wYXltZW50LWZvcm0tZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIEJPRFkgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgLy8gU3R5bGUgZm9ybSBsYWJlbHNcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9ybSBoZWxwIHRleHRcblxuICAgIC5mb3JtLXRleHQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIEZpeCBmb3IgbW9uZXkgdHlwZSBpbnB1dCBncm91cHNcblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cblxuICAgIC8vIFRleHRhcmVhIHN0eWxpbmdcblxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHByb3BlciBzcGFjaW5nIGJldHdlZW4gZm9ybSBncm91cHNcblxuICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIE1FVEhPRFMgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpoYXMoLnBheW1lbnQtbWV0aG9kLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKC5wYXltZW50LW1ldGhvZC1pbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXRob2QtcHJlZmVycmVkIHtcbiAgICBvcmRlcjogLTE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJhZGdlLW9ubGluZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZS1jcmVkaXQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTU9VTlQgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmZvcm0tbGFiZWwsXG4gICAgLmZvcm0tc2VjdGlvbi1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uYW1vdW50LWJhbGFuY2UtaGludCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FQVFVSRSBPTkxJTkUgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNhcHR1cmUtb25saW5lLWZpZWxkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWhlbHAge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDIuNXJlbSArIHZhcigtLXN3cC1zcGFjZS0yKSk7XG4gICAgfVxufVxuXG4vLyBIaWRlIGNhcHR1cmUgb25saW5lIHNlY3Rpb24gd2hlbiBvZmZsaW5lIG1ldGhvZCBzZWxlY3RlZFxuXG5bZGF0YS1wYXltZW50LW1ldGhvZC1zZWxlY3QtdGFyZ2V0PVwiY2FwdHVyZU9ubGluZVwiXS5kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJQ0tBQkxFIExJTktTIChDbGllbnQgJiBJbnZvaWNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LW5hbWUtbGluayxcbi5pbnZvaWNlLWlkLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsaWVudC1uYW1lLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xufVxuXG4uaW52b2ljZS1pZC1saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubywgbW9ub3NwYWNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBISVNUT1JZIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGlzdG9yeS1jYXJkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5wYXltZW50LWhpc3RvcnktaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQsICNmZWYzYzcpIDAlLCByZ2IoMjQ1IDE1OCAxMSAvIDIwJSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLCAjZjU5ZTBiKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS10aXRsZSB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1jb3VudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIENBUkRTIChNYXRjaGluZyBQUiAjMjIxNSBzdHlsZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIsIHJnYigxNiAxODUgMTI5IC8gNSUpKTtcbn1cblxuLnBheW1lbnQtY2FyZC1mYWlsZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIsIHJnYigyMzkgNjggNjggLyA1JSkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5wYXltZW50LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVkgQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4tcGF5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgIC5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTE2KTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuaW52b2ljZS1kZXRhaWxzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAucGF5bWVudC1mb3JtLWZvb3RlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogUGF5bWVudHMgTGlzdCBQYWdlIFN0eWxlc1xuICpcbiAqIE1pbmltYWwgc3R5bGluZyBmb3IgdGhlIHBheW1lbnRzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcy5cbiAqIE1vc3Qgc3R5bGVzIGNvbWUgZnJvbSBUYWJsZXIvQm9vdHN0cmFwIC0gdGhpcyBmaWxlIG9ubHkgYWRkcyBzcGVjaWZpYyBjdXN0b21pemF0aW9ucy5cbiAqL1xuXG4vLyBLUEkgU3RhdGlzdGljcyBDYXJkcyAtIHN1YnRsZSBob3ZlciBlZmZlY3RcblxuLnJvdy1kZWNrIC5jYXJkLXNtIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gVXNlcnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4gdXNlcnMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzIGFuZCB0YWJiZWQgaW50ZXJmYWNlLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVTRVJTIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi51c2Vycy1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBLUEkgU1RBVFMgQ0FSRFMgKFRvcCBvZiBQYWdlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBVc2VzIHN0YW5kYXJkIEJvb3RzdHJhcCBjYXJkLXNtIHN0eWxpbmcgZnJvbSByZWNlbnQgcmVkZXNpZ25zXG4vLyBObyBjdXN0b20gc3R5bGVzIG5lZWRlZCAtIEJvb3RzdHJhcC9UYWJsZXIgaGFuZGxlcyB0aGlzXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgSU4gQ0FSRCBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXNlcyBzdGFuZGFyZCBuYXYtdGFicyBjYXJkLWhlYWRlci10YWJzIHBhdHRlcm5cbi8vIEN1c3RvbSB0YWIgc3R5bGVzIGFyZSBpbiBfdGFicy5zY3NzIGNvbXBvbmVudFxuLy8gTm8gYWRkaXRpb25hbCBjdXN0b20gc3R5bGVzIG5lZWRlZFxuXG4vLyBFbXB0eSBzdGF0ZSB1c2VzIFRhYmxlcidzIGJ1aWx0LWluIC5lbXB0eSBjb21wb25lbnQgY2xhc3Nlc1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBQcm9maWxlIFBhZ2UgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciB0aGUgdXNlciBwcm9maWxlIHZpZXcgYW5kIHNpZGViYXIgbmF2aWdhdGlvbi5cbiAqIEZvcm0gcGFnZXMgKGVkaXQsIGNoYW5nZS1wYXNzd29yZCkgdXNlIHNoYXJlZCBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogSW5jbHVkZXM6IHNpZGViYXIgbmF2aWdhdGlvbiwgcHJvZmlsZSB2aWV3LCBzZWN1cml0eSBzdGF0dXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lERUJBUiBOQVZJR0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNpZGViYXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5wcm9maWxlLW5hdi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLnByb2ZpbGUtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5wcm9maWxlLW5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1uYXYtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiBjdXJyZW50Y29sb3I7XG59XG5cbi5wcm9maWxlLW5hdi10ZXh0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBIRUFERVIgV0lUSCBBVkFUQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtYXZhdGFyIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5wcm9maWxlLWhlYWRlci1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4ucHJvZmlsZS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLnByb2ZpbGUtZW1haWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIElORk9STUFUSU9OIFNFQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBERVRBSUwgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1kZXRhaWwtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1pdGVtLXdpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi5kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIFNFQ1VSSVRZIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdXJpdHktc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zZWN1cml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG59XG5cbi5zZWN1cml0eS1pdGVtLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXdhcm5pbmctcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tYWN0aW9uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHT09HTEUgU0lHTi1JTiBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdvb2dsZS1zaWduaW4tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBU1NXT1JEIFJFUVVJUkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG5cbiAgICBsaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIDAgdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4pyTJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRhYmxldCBhZGp1c3RtZW50c1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkgYW5kICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAvLyBQcm9maWxlIHNlY3Rpb24gZm9vdGVyIGJ1dHRvbnNcblxuICAgIC5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIsXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gU3R5bGVzXG4gKlxuICogTW9kZXJuIDJGQSBjb25maWd1cmF0aW9uIGFuZCBsb2dpbiBwYWdlcyB3aXRoIGVsZWdhbnQgZGVzaWduLlxuICogTWF0Y2hlcyB0aGUgcHJvZmlsZSBwYWdlIHBhdHRlcm5zIGFuZCBUYWJsZXIgZGVzaWduIHN5c3RlbS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFUSU9OIFBBR0UgLSAyRkEgU0VUVElOR1MgU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnR3by1mYWN0b3Itc2V0dGluZ3Mge1xuXG4gICAgLmZvcm0tcGFnZS1zZWN0aW9ucyB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLy8gU2VjdGlvbiBDb250ZW50IExheW91dFxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnR3by1mYWN0b3Itc2VjdGlvbi1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIFNFVFVQIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG59XG5cbi5zZXR1cC1zdGVwcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLnNldHVwLXN0ZXBzIC5zdGVwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWltYWdlIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgfVxuXG4gICAgLm1hbnVhbC1lbnRyeS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyBWZXJpZmljYXRpb24gRm9ybVxuXG4udmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbn1cblxuLnZlcmlmaWNhdGlvbi1jb2RlLWlucHV0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpICFpbXBvcnRhbnQ7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNlbTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBQ0tVUCBDT0RFUyBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFja3VwLWNvZGVzLW1vZGFsLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uYmFja3VwLWNvZGVzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uYmFja3VwLWNvZGUtaXRlbSB7XG5cbiAgICBjb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9HSU4gUEFHRVMgLSAyRkEgVkVSSUZJQ0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50d28tZmFjdG9yLWxvZ2luLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4udHdvLWZhY3Rvci1sb2dpbi1jYXJkIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuY2FyZC1zdGF0dXMtdG9wIHtcbiAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBdmF0YXIgSWNvblxuXG4udHdvLWZhY3Rvci1hdmF0YXIge1xuICAgIHdpZHRoOiA3MnB4O1xuICAgIGhlaWdodDogNzJweDtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAmLnR3by1mYWN0b3ItYXZhdGFyLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgfVxufVxuXG4vLyBMb2dpbiBIZWFkaW5nXG5cbi50d28tZmFjdG9yLWxvZ2luLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50d28tZmFjdG9yLWxvZ2luLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gVmVyaWZpY2F0aW9uIENvZGUgSW5wdXQgKGZvciBsb2dpbiBwYWdlcylcblxuLnR3by1mYWN0b3ItY29kZS1pbnB1dCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM2VtO1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gRm9ybSBIaW50XG5cbi50d28tZmFjdG9yLWZvcm0taGludCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVHJ1c3QgRGV2aWNlIE9wdGlvblxuXG4udHJ1c3QtZGV2aWNlLW9wdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMTVlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBNZXRob2RzIFNlY3Rpb25cblxuLmFsdGVybmF0aXZlLW1ldGhvZHMge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYWx0ZXJuYXRpdmUtbWV0aG9kcy10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxufVxuXG4vLyBTZWN1cml0eSBOb3RpY2VcblxuLnR3by1mYWN0b3Itc2VjdXJpdHktbm90aWNlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBFbWFpbCBSZXNlbmQgU2VjdGlvblxuXG4uZW1haWwtcmVzZW5kLXNlY3Rpb24ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuXG4gICAgLnJlc2VuZC10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLnJlc2VuZC1saW5rIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmV4cGlyeS13YXJuaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLnRvdHAtc2V0dXAtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgfVxuXG4gICAgLnNldHVwLXN0ZXBzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG4gICAgfVxuXG4gICAgLmJhY2t1cC1jb2Rlcy1ncmlkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIC50d28tZmFjdG9yLWxvZ2luLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWSBJTVBST1ZFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm9jdXMgdmlzaWJsZSBzdHlsZXNcblxuLmJhY2t1cC1jb2RlLWl0ZW0gY29kZTpmb2N1cy12aXNpYmxlLFxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHN1bW1hcnk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vLyBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydFxuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG5cbiAgICAucXItY29kZS1pbWFnZSB7XG4gICAgICAgIGJvcmRlci13aWR0aDogM3B4O1xuICAgIH1cblxuICAgIC5iYWNrdXAtY29kZS1pdGVtIGNvZGUge1xuICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICB9XG59XG5cbi8vIFJlZHVjZWQgbW90aW9uIHN1cHBvcnRcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuYmFja3VwLWNvZGUtaXRlbSBjb2RlLFxuICAgIC5zZXR1cC1zdGVwcyAuc3RlcCxcbiAgICAubWFudWFsLWVudHJ5LWRldGFpbHMgc3VtbWFyeSxcbiAgICAudHdvLWZhY3Rvci1jb2RlLWlucHV0IHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIE5vdGlmaWNhdGlvbnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBOb3RpZmljYXRpb24gcHJlZmVyZW5jZXMgcGFnZSB3aXRoIGNhcmQtYmFzZWQgbGF5b3V0IGFuZCBjYXRlZ29yeSBncm91cGluZy5cbiAqIFBhZ2UgY29udGFpbmVyL2hlYWRlci9mb290ZXIgdXNlIHNoYXJlZCBmb3JtLXBhZ2UtKiBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgbm90aWZpY2F0aW9uLXNwZWNpZmljIHN0eWxlcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlRFR1JBVElPTiBNQU5BR0VNRU5UIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaW5mbyB7XG4gICAgZmxleDogMTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5pbnRlZ3JhdGlvbi1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PVElGSUNBVElPTiBHUk9VUFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IC8vIFNpbmdsZSBjb2x1bW4gb24gbW9iaWxlXG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ubm90aWZpY2F0aW9uLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5ncm91cC10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1jYXJkcyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDsgLy8gQWxsb3dzIHRleHQgdHJ1bmNhdGlvblxufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWluZm8ge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQU5ORUwgQ0hFQ0tCT1hFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEJvb3RzdHJhcCBmb3JtLWNoZWNrIGludGVncmF0aW9uIC0gY29tcGFjdCBpbmxpbmUgc3R5bGVcblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgLy8gSGlkZSBjaGVja2JveCB2aXN1YWxseSBidXQga2VlcCBpdCBhY2Nlc3NpYmxlIGZvciBmb3JtIHN1Ym1pc3Npb25cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZm9jdXMgcmluZyB0byBsYWJlbCB3aGVuIGNoZWNrYm94IGlzIGZvY3VzZWRcblxuICAgICAgICAgICAgJjpmb2N1cyArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dDpjaGVja2VkICsgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1vYmlsZSAoPCA3NjhweClcbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tbWFuYWdlbWVudC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICAuZ3JvdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQtY29udGVudCB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgICAgICAubm90aWZpY2F0aW9uLWNoYW5uZWxzLWxpc3Qge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjayAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb25zLWVtcHR5LXN0YXRlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICAgICAuZW1wdHktc3RhdGUtaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUYWJsZXQgYW5kIERlc2t0b3AgKD4gNzY4cHgpIC0gMiBjb2x1bW4gbGF5b3V0IGZvciBjYXRlZ29yaWVzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG5cbiAgICAubm90aWZpY2F0aW9uLWdyb3VwcyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tY2FyZCB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT05TIC0gRGlzYWJsZWQgZm9yIGNsZWFuZXIsIGZhc3RlciByZW5kZXJpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQW5pbWF0aW9ucyByZW1vdmVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGNsZWFuZXIgZmVlbFxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTdWJzY3JpcHRpb24gUGFnZXMgU3R5bGVzXG4gKlxuICogQmlsbGluZywgcGxhbi1waWNrZXIsIGFuZCBzdWJzY3JpcHRpb24tc3RhdGUgcGFnZXMgKHByaWNpbmcsIG92ZXJ2aWV3LFxuICogY2hhbmdlLCBjYW5jZWxsZWQsIHBhdXNlZCwgcGVuZGluZywgdHJpYWwgZXhwaXJlZCkuXG4gKlxuICogQWxsIHZhbHVlcyBhcmUgYC0tc3dwLSpgIGRlc2lnbiB0b2tlbnMuIFN0YXRlIGlzIGNhcnJpZWQgYnkgYSBzb2Z0IGljb25cbiAqIG1lZGFsbGlvbiArIGhlYWRpbmcsIG5ldmVyIGJ5IGEgZGVjb3JhdGl2ZSBhY2NlbnQgc3RyaXBlLCBhIGNvbG9yZWQgZ2xvdywgb3JcbiAqIGEgbG9vcGluZyBhbmltYXRpb24uIENvbG91ciBzdGF5cyBvbiB0aGUgYnJhbmQ6IFRydXN0IEdyZWVuIGlzIHRoZSBvbmx5XG4gKiBhY2NlbnQ7IHRoZXJlIGlzIG5vIFRhYmxlciBibHVlIGFuZCBubyBhbWJlci1ieS1hY2NpZGVudCBoZXJlLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBU0UgUEFHRSBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTI0KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLXN3cC1ncmF5LTUwKSwgdmFyKC0tc3dwLXN1cmZhY2UpKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNjQwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICBhbmltYXRpb246IHN1YnNjcmlwdGlvbi1mYWRlLWluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgc3Vic2NyaXB0aW9uLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFQURFUiBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgaGVhZGVyIChhYm92ZSBzdWJzY3JpcHRpb24gY29udGFpbmVyKVxuXG4uc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgLmg0IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gU29mdCBtZWRhbGxpb24sIGZsYXQgdGludCArIHRpbnRlZCBnbHlwaCAodGhlIHNhbWUgbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZFxuLy8gZW1wdHkgc3RhdGVzIGFuZCBvbmJvYXJkaW5nIHdpemFyZCB1c2UpLiBObyBncmFkaWVudCBkaXNjLlxuXG4uc3Vic2NyaXB0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTgpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24taW5mbyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCRU5FRklUUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENhbmNlbGxlZCBwYWdlOiBsb2NrZWQgZmVhdHVyZXMgYXJlIG11dGVkLCBub3QgYWxhcm1lZCBpbiByZWQuIExvc2luZyBhY2Nlc3Ncbi8vIHRvIGEgZmVhdHVyZSB5b3UgY2hvc2UgdG8gY2FuY2VsIGlzIGluZm9ybWF0aW9uLCBub3QgYW4gZXJyb3IuXG5cbi5zdWJzY3JpcHRpb24tY2FuY2VsbGVkLXBhZ2UgLnN1YnNjcmlwdGlvbi1iZW5lZml0cyBsaSBzdmcge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTlMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuYnRuLWxnIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCksIHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1naG9zdCB7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFURS1TUEVDSUZJQyBQQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiBtZWRhbGxpb24gKyBoZWFkaW5nICsgY29weS4gVGhlIHByZXZpb3VzIDRweFxuLy8gdG9wIGFjY2VudCBzdHJpcGVzIG9uIGAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lcmAgd2VyZSB0aGUgYWNjZW50LXN0cmlwZVxuLy8gYW50aS1wYXR0ZXJuICh0aGUgXCI+MXB4IGNvbG91cmVkIGJvcmRlclwiIHJ1bGUpIHJvdGF0ZWQgdG8gdGhlIHRvcCBlZGdlLCBhbmRcbi8vIHRoZSByZWQgZGFuZ2VyIGZyYW1pbmcgb24gdGhlIGNhbmNlbGxlZCBwYWdlIHNjb2xkZWQgYSB1c2VyIGZvciBhIGNob2ljZVxuLy8gdGhleSBtYWRlOyBib3RoIGFyZSBnb25lLlxuXG4uc3Vic2NyaXB0aW9uLXBhdXNlZC1wYWdlIHtcbiAgICAvLyBQYXVzZWQgYmVuZWZpdHMgYXJlIG5laXRoZXIgYWNoaWV2ZW1lbnRzIChncmVlbikgbm9yIGxvc3NlcyAocmVkKSAtIHRoZXlcbiAgICAvLyBhcmUgc2ltcGx5IG9uIGhvbGQuXG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxFUlQgQkFOTkVSIChUb3Agb2YgcGFnZSBpbmplY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hbGVydC1iYW5uZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLmQtZmxleCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC8vIFdhcm5pbmcgYmFubmVyICh0cmlhbClcblxuICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYW5nZXIgYmFubmVyIChjYW5jZWxsZWQpXG5cbiAgICAmLmFsZXJ0LWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklDSU5HIFBBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wcmljaW5nLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgLy8gSG92ZXIgbGlmdHMgYnkgc2hhZG93IG9ubHkgKG5vIHRyYW5zZm9ybSksIHBlciB0aGUgZGVzaWduIHN5c3RlbSdzIGNhcmRcbiAgICAvLyBydWxlcy5cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAvLyBSZXNlcnZlIHRoZSBiYW5uZXIncyBoZWlnaHQgb24gZXZlcnkgcGFpZCBjYXJkIHNvIHRoZSBwcmljZSBiYXNlbGluZSBpc1xuICAgIC8vIHRoZSBzYW1lIHdoZXRoZXIgb3Igbm90IHRoZSBjYXJkIGNhcnJpZXMgYSBiYW5uZXIgKHRoZSBiYW5uZXIgaXRzZWxmIGlzXG4gICAgLy8gdGFrZW4gb3V0IG9mIGZsb3cgYmVsb3cpLlxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS05KTtcbiAgICB9XG59XG5cbi5wbGFuLWNhcmQtcmVjb21tZW5kZWQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIH1cbn1cblxuLy8gUmliYm9uIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBjYXJkLiBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgc28gaXQgbmV2ZXIgcHVzaGVzXG4vLyB0aGUgcHJpY2UgZG93biAodGhlIGNhcmQgYm9keSByZXNlcnZlcyBtYXRjaGluZyB0b3AgcGFkZGluZyBhYm92ZSksIGFuZCBpblxuLy8gVHJ1c3QgR3JlZW4gLSBub3QgdGhlIFRhYmxlci1ibHVlIGl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvLlxuXG4ucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBpbnNldC1pbmxpbmU6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBGcmVlIHBsYW46IHByZXNlbnRlZCBhcyBhIHNsaW0gc2Vjb25kYXJ5IGNhcmQgYmVsb3cgdGhlIG1haW4gZ3JpZC5cblxuLnBsYW4tY2FyZC1mcmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBsYW4tY2FyZC1mcmVlLWhlYWRlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ucGxhbi1jYXJkLWZyZWUtY3RhIHtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLy8gSW5saW5lIGZlYXR1cmUgbGlzdCBmbG93cyBob3Jpem9udGFsbHkgYW5kIHdyYXBzOyBrZWVwcyB0aGUgZnJlZSBzdHJpcCBzbGltLlxuXG4ucGxhbi1jYXJkLWZlYXR1cmVzLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyBUaGUgZGlzcGxheSBwcmljZSByZW5kZXJzIHRocm91Z2ggdGhlIGAubW9uZXlgIGNvbXBvbmVudCAoYG1vbmV5LS10b3RhbGApLFxuLy8gd2hpY2ggaW5oZXJpdHMgaXRzIHNpemUgZnJvbSBoZXJlOyB0aGUgaW50ZXJ2YWwgc2l0cyBxdWlldGx5IGJlc2lkZSBpdC5cblxuLnBsYW4tY2FyZC1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC00eGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5wbGFuLWNhcmQtaW50ZXJ2YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG59XG5cbi5wbGFuLWNhcmQtZmVhdHVyZXMge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuXG4vLyBBIGNvdXBvbiAvIHByb21vIGNhcmQgKHRyaWFsLWV4cGlyZWQgcGFnZSkuIFRva2VuaXNlZCBncmVlbi10aW50IHBhbmVsLFxuLy8gcmVwbGFjaW5nIHRoZSBvZmYtc3lzdGVtIFRhYmxlciBgYXp1cmVgIHV0aWxpdGllcy5cblxuLnN1YnNjcmlwdGlvbi1jb3Vwb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC8vIFRoZSBjb3Vwb24gY29kZSBpdHNlbGYsIGluIHNvbGlkIFRydXN0IEdyZWVuIHNvIGl0IHJlYWRzIGFzIHRoZSBvbmUgdGhpbmdcbiAgICAvLyB0byBjb3B5LiBXaXRob3V0IHRoaXMgYSBiYXJlIGAuYmFkZ2VgIGZhbGxzIGJhY2sgdG8gdGhlIHRoZW1lJ3MgYW1iZXIuXG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1wYWdlLWhlYWRlciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1ncm91cCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1cmVtO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tc3VidGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYWN0aW9ucyB7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbGVydC1iYW5uZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLXNtIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUYWJsZXQgYWRqdXN0bWVudHNcbkBtZWRpYSAod2lkdGggPj0gNzY4cHgpIGFuZCAod2lkdGggPD0gOTkxLjk4cHgpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWR1Y2VkIG1vdGlvbjogZHJvcCB0aGUgY29udGFpbmVyIHJldmVhbCBhbmQgdGhlIGhvdmVyIHNoYWRvdyB0cmFuc2l0aW9ucy5cbi8vIFRoZXJlIGlzIG5vIGxvb3BpbmcvcHVsc2luZyBhbmltYXRpb24gbGVmdCBpbiB0aGlzIGZpbGUgdG8gZ3VhcmQuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZCxcbiAgICAucGxhbi1jYXJkLWZyZWUsXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIC5idG4tbGcge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuYWxlcnQtYmFubmVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIHdpZGdldFxuICpcbiAqIFRoZSBmaXJzdCBjb21wb25lbnQgYSBuZXcgdXNlciBtZWV0cy4gUHJpb3JpdGllcywgaW4gb3JkZXI6XG4gKiAgIDEuIENvbnZleSBzdGF0ZSAodG9kbyAvIGRvbmUgLyBob3ZlcmVkIC8gZm9jdXNlZCkuIE5ldmVyIGRlY29yYXRpb24uXG4gKiAgIDIuIFN0YXkgb24gdGhlIFNvbGlkSW52b2ljZSBkZXNpZ24gc3lzdGVtIC0gYC0tc3dwLSpgIHRva2VucyBvbmx5LlxuICogICAzLiBSZWFkIGNvcnJlY3RseSB3aGV0aGVyIGEgcm93IGlzIGFuIDxhPiAoYWN0aW9uYWJsZSkgb3IgYSA8c3Bhbj4gKGRvbmUpLlxuICpcbiAqIFN0cnVjdHVyZSBjb21lcyBmcm9tIFRhYmxlciAoYGNhcmRgLCBgY2FyZC1zdGFtcGAsIGBjYXJkLWxpbmstcG9wYCxcbiAqIGBvZmZjYW52YXNgLCBgdmlzdWFsbHktaGlkZGVuYCkuIFRoaXMgZmlsZSBvbmx5IGFkZHMgd2hhdCBUYWJsZXIgZG9lcyBub3RcbiAqIGFscmVhZHkgcHJvdmlkZSAtIGl0IGRvZXMgbm90IHJlc3RhdGUgb3IgZmlnaHQgaXQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1VDQ0VTUyBDQVJEIC0gYWxsIHN0ZXBzIGNvbXBsZXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1hdGNoZXMgYDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYWN0aXZlXCI+YC4gTm90IGludGVyYWN0aXZlIChpdHMgb25seSBjb250cm9sXG4vLyBpcyB0aGUgZGlzbWlzcyBidXR0b24gaW5zaWRlKSwgc28gaXQgZ2V0cyBubyBob3ZlciBzdGF0ZSAtIGEgbGlmdCBoZXJlIHdvdWxkXG4vLyBiZSBhIGZhbHNlIGFmZm9yZGFuY2UuIEEgZmxhdCBzdWNjZXNzIHRpbnQgcGx1cyBhIGZ1bGwgMXB4IGJvcmRlciBjYXJyaWVzXG4vLyB0aGUgc3RhdGU7IHRoZSBjYXJkIGtlZXBzIFRhYmxlcidzIHJlc3RpbmcgYHNoYWRvdy1zbWAuXG5cbi5jYXJkLmNhcmQtYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbn1cblxuLy8gRGVjb3JhdGl2ZSB3YXRlcm1hcmsgYmVoaW5kIHRoZSBjYXJkIHRpdGxlIChUYWJsZXIgYC5jYXJkLXN0YW1wYCkuXG5cbi5jYXJkLXN0YW1wLWljb24ge1xuICAgIG9wYWNpdHk6IDAuMTU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIRUNLTElTVCBJVEVNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2hlY2tsaXN0LWl0ZW1zLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xufVxuXG4vLyBSZW5kZXJzIGFzIDxhPiB3aGlsZSBpbmNvbXBsZXRlIGFuZCA8c3Bhbj4gb25jZSBjb21wbGV0ZSwgc28gZXZlcnlcbi8vIGludGVyYWN0aXZlIHN0eWxlIGlzIGdhdGVkIGJlaGluZCBgOm5vdCguY29tcGxldGVkKWAuXG5cbi5jaGVja2xpc3QtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuXG4gICAgLy8gSG92ZXIgYW5kIGZvY3VzIHJlc29sdmUgdG8gdGhlIHNhbWUgc3VyZmFjZSBzbyBwb2ludGVyIGFuZCBrZXlib2FyZFxuICAgIC8vIHVzZXJzIGFyZSBzaG93biB0aGUgc2FtZSB0YXJnZXQ7IGZvY3VzIGFkZHMgdGhlIGhhbG8gYmVsb3cuXG5cbiAgICAmOm5vdCguY29tcGxldGVkKTppcyg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAuY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb2N1cyBIYWxvLiBgLS1zd3AtcmluZy1wcmltYXJ5YCBpcyBhIDE1JS1hbHBoYSBncmVlbiAofjEuMToxIG9uIHdoaXRlKVxuICAgIC8vIGFuZCBjYW5ub3QgY2FycnkgYSBmb2N1cyBpbmRpY2F0b3Igb24gaXRzIG93biwgc28gdGhlIGJvcmRlciBzaGlmdHMgdG9cbiAgICAvLyBmdWxsIGAtLXN3cC1wcmltYXJ5YCBhbG9uZ3NpZGUgaXQgdG8gbWVldCBXQ0FHIDIuMSBTQyAyLjQuMTEuXG5cbiAgICAmOm5vdCguY29tcGxldGVkKTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gRG9uZS4gU2lnbmFsbGVkIGJ5IHRpbnQgKyBzdHJpa2V0aHJvdWdoICsgd2VpZ2h0IGRyb3AgKyBkZS1lbXBoYXNpcywgc29cbiAgICAvLyBpdCBzdXJ2aXZlcyB3aXRob3V0IGh1ZS4gVGhlIHByb2dyYW1tYXRpYyBzaWduYWwgaXMgQTUnc1xuICAgIC8vIHZpc3VhbGx5LWhpZGRlbiBzdGF0dXMgdGV4dCwgbm90IGFueXRoaW5nIGluIGhlcmUuXG5cbiAgICAmLmNvbXBsZXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgICAgIC5pdGVtLW5hbWUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgIH1cblxuICAgICAgICAuaXRlbS1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RoaW5nIGxlZnQgdG8gbmF2aWdhdGUgdG8uXG5cbiAgICAgICAgLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBDb21wbGV0aW9uIG1hcmtlci4gR3JlZW4gY2hlY2sgd2hlbiBkb25lOyBhIG5ldXRyYWwgcmluZyB3aGVuIG5vdC5cblxuLmNoZWNrbGlzdC1pdGVtLWljb24ge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtOm5vdCguY29tcGxldGVkKSAuY2hlY2tsaXN0LWl0ZW0taWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gU2NvcGVkIHRvIHRoZSByb3c6IGBpdGVtLWljb25gIC8gYGl0ZW0tbmFtZWAgYXJlIHRvbyBnZW5lcmljIHRvIG93biBnbG9iYWxseS5cblxuLmNoZWNrbGlzdC1pdGVtIC5pdGVtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0gLml0ZW0tbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbn1cblxuLy8gQWx3YXlzIHZpc2libGUsIG5vdCBob3Zlci1yZXZlYWxlZDogaG92ZXIgbmV2ZXIgZmlyZXMgb24gdG91Y2gsIHNvIGFcbi8vIGhvdmVyLW9ubHkgYWZmb3JkYW5jZSBpcyBpbnZpc2libGUgdG8gaGFsZiB0aGUgdXNlcnMgd2hvIG5lZWQgaXQuXG5cbi5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT0ZGQ0FOVkFTIFBBTkVMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyB7XG4gICAgd2lkdGg6IDQyMHB4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLy8gUHJvZ3Jlc3Mgc3VtbWFyeSBjYXJkIGF0IHRoZSB0b3Agb2YgdGhlIHBhbmVsLiBTY29wZWQgdG8gdGhpcyB3aWRnZXQgLSB0aGVcbi8vIHVuc2NvcGVkIGAub2ZmY2FudmFzLWJvZHkgLmNhcmRgIGl0IHJlcGxhY2VzIHdvdWxkIHJlc3R5bGUgZXZlcnkgY2FyZCBpblxuLy8gZXZlcnkgb2ZmY2FudmFzIGluIHRoZSBhcHAuXG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyAub2ZmY2FudmFzLWJvZHkgLmNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xufVxuXG4ub25ib2FyZGluZy1wcm9ncmVzcy1sYWJlbCB7XG4gICAgbWluLXdpZHRoOiAzcmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE5vIG1vdGlvbiBzdXJ2aXZlcyBpbiB0aGlzIGZpbGUgLSBubyB0cmFuc2Zvcm1zLCBubyBrZXlmcmFtZXMuIFdoYXQgaXMgbGVmdFxuLy8gaXMgYSAxNTBtcyBjb2xvdXIvc2hhZG93IGNyb3NzLWZhZGUsIHdoaWNoIGlzIG5vdCB2ZXN0aWJ1bGFyLiBUaGlzIGJsb2NrIGlzXG4vLyBkZWZlbnNpdmUgb25seSwgYW5kIGlzIHBvaW50ZWQgYXQgYSBzZWxlY3RvciB0aGF0IGFjdHVhbGx5IGV4aXN0cy5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuY2hlY2tsaXN0LWl0ZW0ge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogT25ib2FyZGluZyBXaXphcmQgLSB0aGUgZmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKVxuICpcbiAqIFRoaXMgaXMgdGhlIGZpcnN0IHNjcmVlbiBldmVyeSBuZXcgdXNlciBtZWV0czogcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXNpZ251cCxcbiAqIGEgdXNlciB3aXRoIG5vIGNvbXBhbnkgaXMgcmVkaXJlY3RlZCBoZXJlIHRvIGNyZWF0ZSB0aGVpciBjb21wYW55LCBhblxuICogb3B0aW9uYWwgZmlyc3QgY2xpZW50LCBhbmQgYSBmaXJzdCBpbnZvaWNlLlxuICpcbiAqIEl0IHVzZWQgdG8gYmUgc3R5bGVkIHdpdGggaW5saW5lIDxzdHlsZT4gYmxvY2tzIHRoYXQgY29udHJhZGljdGVkIHRoZSBkZXNpZ25cbiAqIHN5c3RlbSB3aG9sZXNhbGUgLSBCb290c3RyYXAgYmx1ZSAoIzA2NmZkMSkgaW5zdGVhZCBvZiBUcnVzdCBHcmVlbiwgZ3JhZGllbnRzXG4gKiBvbiB0aGUgY2FudmFzIC8gc3RlcCBpY29uIC8gYmFkZ2UsIGEgM3B4IGBib3JkZXItbGVmdGAgc2lkZS1zdHJpcGUgb24gdGhlXG4gKiBiZW5lZml0cyBib3ggKGEgaGFyZCBiYW4pLCBhbmQgYSBib3VuY2UvZWxhc3RpYyBjZWxlYnJhdGlvbiB3aXRoIGFuIGluZmluaXRlXG4gKiBwdWxzZSBhbmQgbm8gcmVkdWNlZC1tb3Rpb24gZmFsbGJhY2suIFRoaXMgZmlsZSByZXBsYWNlcyBhbGwgb2YgaXQgd2l0aFxuICogYC0tc3dwLSpgIHRva2VucywgZmxhdCBzdXJmYWNlcywgYW5kIGVhc2Utb3V0IG1vdGlvbi5cbiAqXG4gKiBFdmVyeXRoaW5nIGlzIHNjb3BlZCB1bmRlciBgLm9uYm9hcmRpbmctY29udGFpbmVyYCBiZWNhdXNlIHRoZSBjbGFzcyBuYW1lc1xuICogKGBzdGVwLWljb25gLCBgc3RlcC1iZW5lZml0c2AsIGB3ZWxjb21lLWJhZGdlYCwgLi4uKSBhcmUgZ2VuZXJpYyBhbmQgdXNlZFxuICogbm93aGVyZSBlbHNlIC0gc2NvcGluZyBrZWVwcyB0aGVtIGZyb20gbGVha2luZyBpbnRvIHRoZSByZXN0IG9mIHRoZSBhcHAuXG4gKlxuICogU3RydWN0dXJlIChCb290c3RyYXAgZ3JpZCwgYGNhcmRgLCBgYnRuYCwgYGZvcm0tY29udHJvbGAsIGBwcm9ncmVzc2ApIGNvbWVzXG4gKiBmcm9tIFRhYmxlcjsgdGhpcyBmaWxlIG9ubHkgc3R5bGVzIHRoZSBjdXN0b20gd2l6YXJkIGNocm9tZS5cbiAqL1xuXG4ub25ib2FyZGluZy1jb250YWluZXIge1xuICAgIC8vIFBhcGVyLW9uLWRlc2sgY2FudmFzOiB0aGUgYXBwJ3Mgb3duIGZsYXQgYm9keSBiYWNrZ3JvdW5kLiBUaGUgcHJldmlvdXNcbiAgICAvLyBncmV5IGRpYWdvbmFsIGdyYWRpZW50IHdhcyBkZWNvcmF0aW9uIHRoZSBkZXNpZ24gc3lzdGVtIGRvZXMgbm90IHBlcm1pdC5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtYm9keS1iZyk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQUk9HUkVTUyBIRUFERVJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC5vbmJvYXJkaW5nLXByb2dyZXNzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLy8gVXBjb21pbmcgc3RlcCBhdCByZXN0OiBuZXV0cmFsIHNsYXRlLlxuXG4gICAgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICAgICAgY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC8vIFJlYWNoZWQgKHRoZSBjdXJyZW50IHN0ZXAgb3IgYW4gZWFybGllciBvbmUpOiBhIHNvZnQgZ3JlZW4gdGludC5cblxuICAgIC5zdGVwLWluZGljYXRvci5hY3RpdmUgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGN1cnJlbnQgc3RlcDogZmlsbGVkIFRydXN0IEdyZWVuIHdpdGggdGhlIHN0YW5kYXJkIGZvY3VzIGhhbG8sIHNvIHRoZVxuICAgIC8vIHVzZXIncyBwb3NpdGlvbiByZWFkcyBhdCBhIGdsYW5jZS5cblxuICAgIC5zdGVwLWluZGljYXRvci5jdXJyZW50IC5zdGVwLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCk7XG4gICAgfVxuXG4gICAgLy8gcHJpbWFyeS1kYXJrICgjMWY2YzI5KSBvbiB0aGUgd2hpdGUgaGVhZGVyIGhvbGRzIEFBIGNvbWZvcnRhYmx5OyB0aGUgcmF3XG4gICAgLy8gcHJpbWFyeSB3b3VsZCBub3QgZm9yIHRleHQgdGhpcyBzbWFsbC5cblxuICAgIC5zdGVwLWluZGljYXRvci5hY3RpdmUgLnN0ZXAtbGFiZWwsXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cblxuICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBtYXJnaW46IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAuc3RlcC1jb25uZWN0b3IuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgQ0FSRFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gUGFwZXIgb24gdGhlIGNhbnZhczogc3VyZmFjZSwgc29mdCByZXN0aW5nIHNoYWRvdywgZ2VuZXJvdXMgcmFkaXVzLiBOb3QgYVxuICAgIC8vIGhlYXZpZXIgY3VzdG9tIHNoYWRvdyAtIHRoZSBkZXNpZ24gc3lzdGVtJ3MgYHNoYWRvdy1zbWAgaXMgdGhlIGNhcmQgcmVzdC5cblxuICAgIC5vbmJvYXJkaW5nLXN0ZXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBTVEVQIElDT04gTUVEQUxMSU9OXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBGbGF0IHByaW1hcnkgdGludCB3aXRoIGEgVHJ1c3QgR3JlZW4gZ2x5cGggLSB0aGUgc2FtZSBzb2Z0LW1lZGFsbGlvblxuICAgIC8vIGxhbmd1YWdlIHRoZSBkYXNoYm9hcmQgZW1wdHkgc3RhdGVzIHVzZS4gVGhlIHByZXZpb3VzIHNhdHVyYXRlZCBibHVlXG4gICAgLy8gZ3JhZGllbnQgZGlzYyB3YXMgdGhlIEFJLXNsb3AgaGVyby1pY29uIHRlbGwuXG5cbiAgICAuc3RlcC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0cmVtO1xuICAgICAgICBoZWlnaHQ6IDRyZW07XG4gICAgICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFdFTENPTUUgU0VDVElPTiArIEJBREdFXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAud2VsY29tZS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLndlbGNvbWUtYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEJFTkVGSVRTIC8gXCJXSFkgVEhJUyBNQVRURVJTXCIgQk9YXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBBIGZ1bGwgMXB4IGJvcmRlciBwbHVzIGFuIGFtYmllbnQgZ3JlZW4gd2FzaC4gTk8gc2lkZS1zdHJpcGU6IGEgY29sb3VyZWRcbiAgICAvLyBgYm9yZGVyLWxlZnRgIHRoaWNrZXIgdGhhbiAxcHggaXMgYSBoYXJkIGJhbiwgYW5kIHRoZSBsZWFkaW5nIGljb24gaW5zaWRlXG4gICAgLy8gYWxyZWFkeSBjYXJyaWVzIHRoZSBhY2NlbnQuXG5cbiAgICAuc3RlcC1iZW5lZml0cyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICBsaSArIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENPTVBMRVRJT04gU0NSRUVOXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAuY2VsZWJyYXRpb24taWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFN1Y2Nlc3MgbWVkYWxsaW9uOiBzdWNjZXNzLWxpZ2h0IGRpc2MsIEFBLXNhZmUgc3VjY2Vzcy1kYXJrIGNoZWNrLiBFbnRlcnNcbiAgICAvLyBvbmNlIHdpdGggYSBnZW50bGUgZWFzZS1vdXQgc2NhbGUsIG5ldmVyIGJvdW5jZXMsIG5ldmVyIGxvb3BzLlxuXG4gICAgLnN1Y2Nlc3MtY2hlY2ttYXJrIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICAgICAgYW5pbWF0aW9uOiBvbmJvYXJkaW5nLWNlbGVicmF0ZSB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KSBib3RoO1xuICAgIH1cblxuICAgIC8vIEEgcXVpZXQsIG5ldXRyYWwgdGlwIG5vdGUgLSBkaXN0aW5jdCBmcm9tIHRoZSBncmVlbiBiZW5lZml0cyBib3ggYW5kIG5vXG4gICAgLy8gbG9uZ2VyIGEgcmF3IEJvb3RzdHJhcCBgYWxlcnQtaW5mb2AgYmx1ZS5cblxuICAgIC5vbmJvYXJkaW5nLXRpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNlY29uZGFyeS1kYXJrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFJFU1BPTlNJVkVcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgICAgICAub25ib2FyZGluZy1zdGVwLWNhcmQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9uYm9hcmRpbmctY2VsZWJyYXRlIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWR1Y2VkIG1vdGlvbiBpcyBub3Qgb3B0aW9uYWwuIFRoZSBwcm9ncmVzcy1pbmRpY2F0b3IgY3Jvc3MtZmFkZXMgYXJlXG4vLyBub24tdmVzdGlidWxhciwgYnV0IHRoZSBjZWxlYnJhdGlvbiBzY2FsZSBpcyBhIHRyYW5zZm9ybSwgc28gaXQgaXMgZGlzYWJsZWRcbi8vIG91dHJpZ2h0IGFuZCB0aGUgZmluYWwgc3RhdGUgc2hvd3MgaW5zdGFudGx5LlxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5vbmJvYXJkaW5nLWNvbnRhaW5lciB7XG5cbiAgICAgICAgLnN0ZXAtbnVtYmVyLFxuICAgICAgICAuc3RlcC1sYWJlbCxcbiAgICAgICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuc3VjY2Vzcy1jaGVja21hcmsge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIE1vbmV5IERpc3BsYXlcbiAqXG4gKiBUaGUgc2lnbmF0dXJlIGNvbXBvbmVudCAoREVTSUdOLm1kIHNlY3Rpb24gNSkuIEV2ZXJ5IGN1cnJlbmN5IHZhbHVlIGluIHRoZVxuICogYXBwbGljYXRpb24gcmVuZGVycyB0aHJvdWdoIGAubW9uZXlgOyBpdCBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3JcbiAqIG1vbmV5IGRpc3BsYXksIGFuZCByYXcgYHt7IGFtb3VudCB9fWAgcmVuZGVyaW5nIGlzIHByb2hpYml0ZWQuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAgIDxzcGFuIGNsYXNzPVwibW9uZXlcIj5cbiAqICAgICA8c3BhbiBjbGFzcz1cIm1vbmV5LWN1cnJlbmN5XCI+VVNEPC9zcGFuPlxuICogICAgIDxzdHJvbmcgY2xhc3M9XCJtb25leS1hbW91bnRcIj4xLDIzNC41Njwvc3Ryb25nPlxuICogICA8L3NwYW4+XG4gKlxuICogTW9kaWZpZXJzIChvbiB0aGUgYC5tb25leWAgcm9vdCwgY29tYmluYWJsZSk6XG4gKiAgIC5tb25leS0tcGFpZCAgICAgIEFtb3VudCBpbiBBQS1zYWZlIHN1Y2Nlc3MuIE9OTFkgdmFsaWQgYWxvbmdzaWRlIGFuXG4gKiAgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0IFwiUGFpZFwiIGxhYmVsICh0aGUgTW9uZXktQ29sb3IgUnVsZSkuXG4gKiAgIC5tb25leS0tb3ZlcmR1ZSAgIEFtb3VudCBpbiBBQS1zYWZlIGRhbmdlci4gU2FtZSBsYWJlbGxpbmcgcnVsZS5cbiAqICAgLm1vbmV5LS10b3RhbCAgICAgV2VpZ2h0IDYwMCwgYW1vdW50IG9uZSBzaXplIHN0ZXAgdXAuXG4gKiAgIChub25lKSAgICAgICAgICAgIE5ldXRyYWwgLSB0aGUgZGVmYXVsdCBhbmQgdGhlIGNvbW1vbiBjYXNlLlxuICpcbiAqIFRoZSBjb21wb25lbnQgbmV2ZXIgc2V0cyBpdHMgb3duIGZvbnQtc2l6ZS4gSXQgaW5oZXJpdHMgZnJvbSBjb250ZXh0LCBzbyB0aGVcbiAqIHNhbWUgbWFya3VwIGlzIGNvcnJlY3QgaW5saW5lIGluIGEgdGFibGUgY2VsbCwgaW4gYSBoZWFkaW5nLCBhbmQgYXRcbiAqIGAuc3RhdC12YWx1ZWAgc2NhbGUgaW4gdGhlIGRhc2hib2FyZCBoZXJvIHRpbGVzLiBPbmx5IGAubW9uZXktLXRvdGFsYCBzdGVwc1xuICogdGhlIGFtb3VudCwgYW5kIGl0IHN0ZXBzIHJlbGF0aXZlbHkgc28gdGhlIHJlc3VsdCBpcyByaWdodCBhdCBldmVyeSBiYXNlLlxuICovXG5cbi5tb25leSB7XG4gICAgLy8gaW5saW5lLWZsZXggcmF0aGVyIHRoYW4gcGxhaW4gaW5saW5lLCBmb3IgdHdvIHJlYXNvbnM6XG4gICAgLy8gIDEuIFRoZSBnYXAgYmV0d2VlbiBjdXJyZW5jeSBhbmQgYW1vdW50IGlzIGRldGVybWluaXN0aWMgd2hldGhlciBvciBub3RcbiAgICAvLyAgICAgdGhlIGVtaXR0ZWQgbWFya3VwIGhhcHBlbnMgdG8gY2Fycnkgd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZSBzcGFuc1xuICAgIC8vICAgICAoZmxleCBkcm9wcyB3aGl0ZXNwYWNlLW9ubHkgYW5vbnltb3VzIGJveGVzKS5cbiAgICAvLyAgMi4gYGFsaWduLWl0ZW1zOiBiYXNlbGluZWAga2VlcHMgYSBzaXplLXN0ZXBwZWQgYC5tb25leS0tdG90YWxgIGFtb3VudFxuICAgIC8vICAgICBzaGFyaW5nIGEgYmFzZWxpbmUgd2l0aCBpdHMgY3VycmVuY3ksIGluc3RlYWQgb2YgY2VudHJpbmcgYWdhaW5zdCBpdC5cbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAvLyBNb25leSBjbGFyaXR5OiBhIGN1cnJlbmN5IGNvZGUgbXVzdCBuZXZlciBiZSBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIuXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC8vIFRoZSBUYWJ1bGFyIEZpZ3VyZXMgUnVsZSAtIGFtb3VudHMgYWxpZ24gaW4gY2xlYW4gdmVydGljYWwgY29sdW1ucy5cbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBDdXJyZW5jeSBjb2RlIG9yIHN5bWJvbC4gRGltbWVkIHJlbGF0aXZlIHRvIHRoZSBhbW91bnQsIGJ1dCBpdCBpcyBtZWFuaW5nZnVsXG4vLyB0ZXh0IHJhdGhlciB0aGFuIGRlY29yYXRpb24sIHNvIGl0IGhvbGRzIEFBIG9uIGV2ZXJ5IHN1cmZhY2UgaW4gdGhlIHN5c3RlbS5cblxuLm1vbmV5LWN1cnJlbmN5IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LWN1cnJlbmN5KTtcbn1cblxuLy8gVGhlIGFtb3VudC4gV2VpZ2h0IGlzIG5vcm1hbGlzZWQgaGVyZSBzbyB0aGF0IHRoZSBVQSBkZWZhdWx0IG9mIDcwMCBvblxuLy8gYDxzdHJvbmc+YCBkb2VzIG5vdCBwcmUtZW1wdCB0aGUgYC5tb25leS0tdG90YWxgIHN0ZXAgdXAgdG8gNjAwLlxuXG4ubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LW5ldXRyYWwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNT0RJRklFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFpZC4gQ29sb3VyIGlzIGFtcGxpZmljYXRpb24gaGVyZSwgbmV2ZXIgdGhlIGNhcnJpZXIgb2YgbWVhbmluZyAtIGEgZ3JlZW5cbi8vIGFtb3VudCB3aXRob3V0IGFuIGFjY29tcGFueWluZyBcIlBhaWRcIiBsYWJlbCBpcyBhIGJ1Zywgbm90IGEgc3R5bGUgY2hvaWNlLlxuXG4ubW9uZXktLXBhaWQgLm1vbmV5LWFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1wYWlkKTtcbn1cblxuLy8gT3ZlcmR1ZS4gU2FtZSBydWxlOiBhbHdheXMgcmVuZGVyZWQgd2l0aCBhbiBleHBsaWNpdCBcIk92ZXJkdWVcIiBsYWJlbC5cblxuLm1vbmV5LS1vdmVyZHVlIC5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktb3ZlcmR1ZSk7XG59XG5cbi8vIFRvdGFsLiBIZWF2aWVyLCBhbmQgb25lIHNpemUgc3RlcCB1cCByZWxhdGl2ZSB0byB0aGUgaW5oZXJpdGVkIGNvbnRleHQuXG4vLyBUaGUgY3VycmVuY3kga2VlcHMgaXRzIGluaGVyaXRlZCB3ZWlnaHQgc28gdGhlIGRpbW1lZC1wcmVmaXggcmVsYXRpb25zaGlwXG4vLyBzdXJ2aXZlcyB0aGUgc3RlcCB1cC5cblxuLm1vbmV5LS10b3RhbCAubW9uZXktYW1vdW50IHtcbiAgICBmb250LXNpemU6IGNhbGMoMWVtICogdmFyKC0tc3dwLW1vbmV5LXRvdGFsLXNjYWxlKSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbn1cblxuLy8gQXQgZGlzcGxheSBzaXplIHRoZSBjdXJyZW5jeSBjb2RlIGlzIGRpbW1lZCBieSBzaXplIGFzIHdlbGwgYXMgYnkgY29sb3VyOiBhdCBhXG4vLyBzaGFyZWQgc2l6ZSBpdCBjb21wZXRlcyB3aXRoIHRoZSBhbW91bnQgZm9yIGF0dGVudGlvbiBpdCBoYXMgbm90IGVhcm5lZCwgYW5kXG4vLyBcIlVTRCAxMjAsODgyLjE5XCIgc2hvdWxkIHJlYWQgYXMgYSBudW1iZXIgY2FycnlpbmcgYSB1bml0IHJhdGhlciB0aGFuIGFzIHR3b1xuLy8gZXF1YWwgd29yZHMuIFNjb3BlZCB0byBgLS10b3RhbGAgZGVsaWJlcmF0ZWx5LiBBdCBib2R5IHNpemUgKGEgdGFibGUgcm93LCBhblxuLy8gYWN0aXZpdHkgZmVlZCkgdGhlIHNhbWUgcmVkdWN0aW9uIHdvdWxkIHB1dCB0aGUgY29kZSBuZWFyIDEwcHgsIHdoaWNoIGlzIHRoZVxuLy8gbGVnaWJpbGl0eSBwcm9ibGVtIHJhdGhlciB0aGFuIHRoZSBmaXgsIHNvIHRoZSBjb2RlIHN0YXlzIGZ1bGwgc2l6ZSB0aGVyZS5cblxuLm1vbmV5LS10b3RhbCAubW9uZXktY3VycmVuY3kge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLW1vbmV5LWN1cnJlbmN5LXNjYWxlKTtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBMYXlvdXQgSW5kZXhcbiAqXG4gKiBMYXlvdXQgcGF0dGVybiBzdHlsZXMgdGhhdCBleHRlbmQgVGFibGVyL0Jvb3RzdHJhcC5cbiAqIE9ubHkgYWRkIGxheW91dCBmaWxlcyBmb3IgcGF0dGVybnMgbm90IGNvdmVyZWQgYnkgdGhlIGZyYW1ld29ya3MuXG4gKlxuICogTm90ZTogTW9zdCBsYXlvdXQgc3R5bGluZyBjb21lcyBmcm9tIFRhYmxlciAocGFnZS13cmFwcGVyLCBwYWdlLWhlYWRlciwgZXRjLilcbiAqIFRoaXMgZmlsZSBpbXBvcnRzIG9ubHkgY3VzdG9tIGV4dGVuc2lvbnMgd2hlbiBuZWVkZWQuXG4gKi9cblxuLy8gVmVydGljYWwgc2lkZWJhciByZWNvbG9yIOKAlCBjb252ZXJ0cyBUYWJsZXIncyBkYXJrIHNsYXRlIHNpZGViYXIgaW50b1xuLy8gdGhlIHF1aWV0IGxpZ2h0IHBhbmVsIHByZXNjcmliZWQgYnkgREVTSUdOLm1kIChncmF5LTEwMCBiZWhpbmQgdGhlIGJvZHkpLlxuQGltcG9ydCAnbmF2YmFyLXZlcnRpY2FsJztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIOKAlCBWZXJ0aWNhbCBOYXZiYXIgKFNpZGViYXIpXG4gKlxuICogVGFibGVyIHNoaXBzIGAubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrYCBhcyBhIGhlYXZ5IHNsYXRlIHBhbmVsIChncmF5LTgwMClcbiAqIHRoYXQgUFJPRFVDVC5tZCBuYW1lcyBhcyB0aGUgQWRtaW5MVEUgYW50aS1yZWZlcmVuY2UgdGhlIHJld3JpdGUgaXMgZXNjYXBpbmcuXG4gKiBUaGlzIGZpbGUgcmVjb2xvcnMgdGhlIHNpZGViYXIgb25lIHNoYWRlIGxpZ2h0ZXIgKGdyYXktNzAwKSBzbyBpdCBzdGlsbFxuICogY2FycmllcyBwcmVzZW5jZSwgYnV0IHVzZXMgdGludGVkIG5ldXRyYWxzIGFuZCBhIGdyZWVuLXRpbnRlZCBhY3RpdmUgc3RhdGVcbiAqIHRvIGRpZmZlcmVudGlhdGUgaXQgZnJvbSBnZW5lcmljIFRhYmxlciBhZG1pbiBvdXRwdXQuXG4gKlxuICogU2VsZWN0b3Igc3BlY2lmaWNpdHkgdGFyZ2V0cyBgLm5hdmJhci12ZXJ0aWNhbGAgc28gVGFibGVyJ3MgbW9iaWxlLWNvbGxhcHNlLFxuICogZHJhd2VyLCBhbmQgZHJvcGRvd24gcnVsZXMgY29udGludWUgdG8gYXBwbHkuXG4gKi9cblxuLm5hdmJhci5uYXZiYXItdmVydGljYWwsXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNzAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1zd3AtZ3JheS04MDApO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICAvLyBCcmFuZDogbG9nbyArIHByb2R1Y3QgbmFtZSBhdCB0aGUgdG9wIG9mIHRoZSBzaWRlYmFyLlxuXG4gICAgLm5hdmJhci1icmFuZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLm5hdmJhci1icmFuZC1hdXRvZGFyayB7XG4gICAgICAgIGZpbHRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBOYXYgbGluayBkZWZhdWx0IHN0YXRlLlxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAubmF2LWxpbmstaWNvbixcbiAgICAgICAgLm5hdi1saW5rLXRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSG92ZXI6IGxpZnQgdG8gYSBzbGlnaHRseSBsaWdodGVyIHNsYXRlLCBicmlnaHRlciB0ZXh0LlxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNjAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBLZXlib2FyZCBmb2N1cyBoYWxvLCBwZXIgVGhlIEZvY3VzIEhhbG8gUnVsZS5cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFjdGl2ZSByb3V0ZTogdGludGVkIGJhY2tncm91bmQgcHVsbGVkIGZyb20gVHJ1c3QgR3JlZW4gZmFtaWx5LlxuICAgICAgICAvLyBMb29rcyBsaWtlIGEgc29mdCBcImJ1dHRvblwiIG9uIHRoZSBkYXJrIHNsYXRlIHdpdGhvdXQgYW55IHNpZGUgc3RyaXBlLlxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG5cbiAgICAgICAgICAgIC5uYXYtbGluay1pY29uLFxuICAgICAgICAgICAgLm5hdi1saW5rLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWN0aW9uIGxhYmVscyAoaWYgYW55KSBzaXQgcXVpZXRseS5cblxuICAgIC5uYXYtc3VidGl0bGUsXG4gICAgLm5hdi1oZWFkZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNDAwKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIH1cblxuICAgIC8vIERyb3Bkb3duIGNoZXZyb25zIG1hdGNoIHNlY29uZGFyeSB0ZXh0LlxuXG4gICAgLm5hdi1saW5rLXRvZ2dsZSxcbiAgICAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS00MDApO1xuICAgIH1cblxuICAgIC8vIE5lc3RlZCBkcm9wZG93biBtZW51cyBpbnNpZGUgdGhlIHNpZGViYXIgbGlmdCBvbnRvIGEgcGFwZXIgc3VyZmFjZSBzb1xuICAgIC8vIHN1Ym1lbnUgY29udGVudCByZWFkcyBsaWtlIGNvbnRlbnQsIG5vdCBuYXYgY2hyb21lLlxuXG4gICAgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcblxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb2xsYXBzZWQgZXhwYW5kIHRvZ2dsZSAoaGFtYnVyZ2VyIG9uIG1vYmlsZSkuXG5cbiAgICAubmF2YmFyLXRvZ2dsZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMjAwKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS02MDApO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1vYmlsZSBob3Jpem9udGFsIG5hdmJhciAocmVuZGVyZWQgd2hlbiB0aGUgdmVydGljYWwgZHJhd2VyIGNvbGxhcHNlcykuXG5cbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgQG1lZGlhICh3aWR0aCA8IDk5MnB4KSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgfVxufVxuXG4vLyBRdW90ZS9hdm9pZDogd2hlbiB0aGUgc3lzdGVtIGVuYWJsZXMgZGFyayBtb2RlIHByZWZlcmVuY2UsIGxlYXZlIHRoZSBkYXJrXG4vLyB0aGVtZSB0byBUYWJsZXIuIExpZ2h0IG92ZXJyaWRlcyBzY29wZSBvbmx5IHRvIGRlZmF1bHQgdGhlbWUuXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG5cbiAgICBbZGF0YS1icy10aGVtZT1cImRhcmtcIl0gLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWRhcmsge1xuICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGVtcHR5OiBkZWZlciB0byBUYWJsZXIgZGFyayBkZWZhdWx0cyB1bnRpbCBTb2xpZEludm9pY2VcbiAgICAgICAgLy8gc2hpcHMgYSBkb2N1bWVudGVkIGRhcmsgdGhlbWUuXG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIEZvcm0gU3R5bGVzXG4gKlxuICogR2VuZXJpYyBmb3JtIGNvbXBvbmVudCBzdHlsZXMgZm9yIHRoZSBlbnRpcmUgYXBwbGljYXRpb24uXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBDT05UUk9MIEJBU0UgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbnRyb2wsXG4uZm9ybS1zZWxlY3Qge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1pbnB1dC1yYWRpdXMpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLWlucHV0LXBhZGRpbmcteSkgdmFyKC0tc3dwLWlucHV0LXBhZGRpbmcteCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbnB1dC1mb2N1cy1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtaW5wdXQtZm9jdXMtcmluZyk7XG4gICAgfVxuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBMQUJFTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC8vIFJlcXVpcmVkIGluZGljYXRvclxuXG4gICAgJi5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEZJRUxEIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZmllbGQge1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBIRUxQIFRFWFRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taGVscCxcbi5mb3JtLXRleHQsXG4uZm9ybS1oZWxwLXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT0dHTEUgU1dJVENIIChDaGVja2JveCBhcyBTd2l0Y2gpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4uZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlBVVCBXSVRIIElDT04gKElucHV0IEdyb3Vwcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmlucHV0LWljb24tZ3JvdXAge1xuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAgICAgfiAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgICAgICAgICAgICsgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBpY29uIGlzIG9uIHRoZSBsZWZ0XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcblxuICAgICAgICArIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZBTElEQVRJT04gQlVUVE9OIElOIElOUFVUIEdST1VQXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnB1dC12YWxpZGF0ZS1ncm91cCB7XG5cbiAgICAuYnRuLXZhbGlkYXRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEdST1VQUyAoTmVzdGVkL0dyb3VwZWQgRmllbGRzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1ncm91cC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLmZvcm0tZ3JvdXAtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWdyb3VwLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWdyb3VwLWNvbnRlbnQge1xuXG4gICAgICAgIC5tYi0zOmxhc3QtY2hpbGQsXG4gICAgICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIFdJREdFVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkcmVzcy13aWRnZXQge1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIFZBTElEQVRJT04gU1RBVEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCxcbi5mb3JtLXNlbGVjdC5pcy1pbnZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZWY0NDQ0JyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2VmNDQ0NCcgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1kYW5nZXIpO1xuICAgIH1cbn1cblxuLmZvcm0tY29udHJvbC5pcy12YWxpZCxcbi5mb3JtLXNlbGVjdC5pcy12YWxpZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2IoMTYgMTg1IDEyOSAvIDE1JSk7XG4gICAgfVxufVxuXG4uaW52YWxpZC1mZWVkYmFjayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4udmFsaWQtZmVlZGJhY2sge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJTEUgVVBMT0FEIC8gRFJPUFpPTkUgU1RZTElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZmlsZS11cGxvYWQtYXJlYSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmLmRyYWdvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC51cGxvYWQtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudXBsb2FkLXRleHQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAudXBsb2FkLWhpbnQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gU3ltZm9ueSBVWCBEcm9wem9uZSBzdHlsaW5nXG5cbi5kcm9wem9uZSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgbWluLWhlaWdodDogYXV0bztcblxuICAgICY6aG92ZXIsXG4gICAgJi5kcm9wem9uZS1kcmFnb3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gVElUTEVTIChGb3Igb3JnYW5pemVkIGZvcm1zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIHN2ZyxcbiAgICBpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TIChDYXJkIGZvb3RlciB3aXRoIGJ1dHRvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RhbmRhcmQgRm9ybSBBY3Rpb25zIFBhdHRlcm46XG4gKlxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgW0NhbmNlbCAoZ2hvc3QpXSAgICAgICAgICAgICAgICAgICAgICBbU2F2ZSAocHJpbWFyeSArIGljb24pXeKUglxuICog4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKlxuICogLSBDYW5jZWw6IExlZnQgc2lkZSBPUiBnaG9zdCBzdHlsZVxuICogLSBTYXZlOiBSaWdodCBzaWRlLCBwcmltYXJ5IHN0eWxlLCB3aXRoIHNhdmUgaWNvblxuICovXG5cbi5mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIC8vIFdoZW4gdXNlZCBpbiBhIGNhcmQgZm9vdGVyXG5cbiAgICAuY2FyZC1mb290ZXIgJiB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgIH1cblxuICAgIC8vIFNwcmVhZCBidXR0b25zIChjYW5jZWwgbGVmdCwgc2F2ZSByaWdodClcblxuICAgICYuZm9ybS1hY3Rpb25zLXNwcmVhZCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOTElORSBGT1JNXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIT1JJWk9OVEFMIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taG9yaXpvbnRhbCB7XG5cbiAgICAuZm9ybS1ncm91cCxcbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjAwcHggMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUEFDVCBGT1JNXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbXBhY3Qge1xuXG4gICAgLm1iLTMsXG4gICAgLm1iLTQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdMT0JBTCBCVVRUT04gRU5IQU5DRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRhYmxlcidzIC5idG4gYWxyZWFkeSBzZXRzIGRpc3BsYXk6IGlubGluZS1mbGV4IGFuZCBhbGlnbi1pdGVtczogY2VudGVyLFxuLy8gYnV0IGRvZXMgbm90IHNldCBnYXAuIEFkZCBjb25zaXN0ZW50IHNwYWNpbmcgYmV0d2VlbiBpY29uIGFuZCB0ZXh0LlxuXG4uYnRuIHtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgfVxufVxuXG4uYnRuLWdob3N0LWRhbmdlciB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1kYW5nZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCIE5BVklHQVRJT04gSU4gQ0FSRCBIRUFERVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZSBmb250IHNpemUgZm9yIHRhYnMgaW4gY2FyZCBoZWFkZXJzXG5cbi5jYXJkLWhlYWRlci10YWJzIC5uYXYtbGluayB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBCb290c3RyYXAgNSBkb2VzIG5vdCBpbmNsdWRlIGEgNTAwLXdlaWdodCB1dGlsaXR5OyBhZGQgaXQgaGVyZSBhcyBhIHNoYXJlZCB1dGlsaXR5LlxuXG4uZnctbWVkaXVtIHtcbiAgICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcblxuICAgIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIENvbXBhbnkgUGFnZXMgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciBjb21wYW55IHNlbGVjdGlvbiBhbmQgY3JlYXRpb24gcGFnZXNcbiAqIEFsbCBzdHlsZXMgYXJlIHNjb3BlZCB0byAuY29tcGFueS1zZWxlY3QtcGFnZSBhbmQgLmNvbXBhbnktY3JlYXRlLXBhZ2VcbiAqIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBhZ2VzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNoYXJlZCBTdHlsZXMgKGJvdGggc2VsZWN0IGFuZCBjcmVhdGUgcGFnZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LXNlbGVjdC1wYWdlLFxuLmNvbXBhbnktY3JlYXRlLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFwcGxpY2F0aW9uIEhlYWRlclxuXG4gICAgLmNvbXBhbnktcGFnZS1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1icmFuZCB7XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBhZ2UgaW50cm8gc2VjdGlvbiAodXNlZCBieSBib3RoIHNlbGVjdCBhbmQgY3JlYXRlIHBhZ2VzKVxuXG4gICAgLmNvbXBhbnktcGFnZS1pbnRybyB7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hdmF0YXItbWQge1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5hdmF0YXItbGcge1xuICAgICAgICB3aWR0aDogMy41cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuNXJlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5hdmF0YXItMnhsIHtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIC5hdmF0YXIteGwge1xuICAgICAgICB3aWR0aDogNXJlbTtcbiAgICAgICAgaGVpZ2h0OiA1cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci1pbml0aWFscyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxuXG4gICAgLmZvcm0taGludCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgYWRqdXN0bWVudHNcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAgICAgLmF2YXRhci1sZyB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYXZhdGFyLTJ4bCB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oMiwgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbXBhbnkgU2VsZWN0aW9uIFBhZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktc2VsZWN0LXBhZ2Uge1xuICAgIC8vIE1haW4gQ2FyZCBDb250YWluZXJcblxuICAgIC5jYXJkLnNoYWRvdy1zbSB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIH1cblxuICAgIC8vIENvbXBhbnkgQ2FyZHNcblxuICAgIC5jYXJkLWNvbXBhbnkge1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1hbGwpO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgICAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktYXZhdGFyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAgICAgLmF2YXRhciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciB3aXRoIGxvZ28gaW1hZ2VcblxuICAgICAgICAuYXZhdGFyIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdmF0YXIgd2l0aCBpbml0aWFscyAtIGZvcmNlIHNvbGlkIHByaW1hcnkgYmFja2dyb3VuZFxuXG4gICAgICAgIC5hdmF0YXIuYmctcHJpbWFyeSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciBpbml0aWFscyB0ZXh0IC0gZm9yY2Ugd2hpdGUgY29sb3JcblxuICAgICAgICAuYXZhdGFyLWluaXRpYWxzLFxuICAgICAgICAuYXZhdGFyLmJnLXByaW1hcnkgc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLWR1cmF0aW9uLWJhc2UpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5taW4tdy0wIHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBDb21wYW55IENhcmRcblxuICAgIC5jYXJkLWNyZWF0ZS1jb21wYW55IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1hbGwpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDQpIDEwMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnctbWQtYXV0byB7XG4gICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgICAgIC53LW1kLWF1dG8ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFueSBDcmVhdGlvbiBQYWdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LWNyZWF0ZS1wYWdlIHtcblxuICAgIC5mb3JtLXNtb290aCB7XG5cbiAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgICAgICAgLmZvcm0tc2VsZWN0OmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4yNXJlbSByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFsZXJ0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgICYuYWxlcnQtaW5mbyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDgpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3Atd2FybmluZy1yZ2IpLCAwLjA4KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atd2FybmluZy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGVydC1zdWNjZXNzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4tcHJpbWFyeSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTZXR0aW5ncyBQYWdlIFN0eWxlc1xuICogT25seSBjdXN0b20gc3R5bGVzIHRoYXQgY2FuJ3QgYmUgYWNoaWV2ZWQgd2l0aCBCb290c3RyYXAvVGFibGVyIHV0aWxpdGllc1xuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2V0dGluZ3MgUGFnZSBDb250YWluZXIgLSBNYXgtd2lkdGggY2VudGVyaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZXR0aW5ncy1wYWdlIHtcbiAgICBtYXgtd2lkdGg6IDkwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiAycmVtO1xufVxuXG4vLyBNb2JpbGU6IGhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnNcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLnNldHRpbmdzLXBhZ2UgPiAubmF2LXVuZGVybGluZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWl0ZW0ge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNldHRpbmdzIENhcmQgLSBwYXBlci1vbi1kZXNrIHN1cmZhY2UgcGVyIGRlc2lnbiBzeXN0ZW1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLWNvbnRlbnQtY2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgID4gLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gYmxvY2tzIGluc2lkZSB0aGUgY2FyZCB1c2UgbGlnaHRlciBkaXZpZGVycyBzbyB0aGUgcGFnZSByZWFkcyBhc1xuICAgIC8vIGEgc2luZ2xlIHF1aWV0IHN1cmZhY2UsIG5vdCBmaXZlIHN0YWNrZWQgY2FyZHMuXG5cbiAgICAuY2FyZC1ib2R5ID4gLmJvcmRlci1ib3R0b20ge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gaGVhZGluZzogbWF0Y2ggdGhlIGRlc2lnbiBzeXN0ZW0gdGl0bGUgc2NhbGUgYW5kIGxldCB0aGUgaWNvblxuICAgIC8vIGJlIGEgc2xhdGUgYWNjZW50IHJhdGhlciB0aGFuIGEgZmlmdGggZ3JlZW4gZWxlbWVudCBvbiB0aGUgcGFnZS5cblxuICAgIC5jYXJkLWJvZHkgaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcblxuICAgICAgICA+IHN2ZyB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIHBhcmFncmFwaHMgc2l0IHVuZGVyIGhlYWRpbmdzOyBjYXAgdGhlaXIgcmVhZGluZyB3aWR0aC5cblxuICAgIC5jYXJkLWJvZHkgaDMgKyBwLnRleHQtbXV0ZWQge1xuICAgICAgICBtYXgtd2lkdGg6IDY1Y2g7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2dvIFVwbG9hZCAtIEN1c3RvbSBkcm9wem9uZSBzdHlsaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5sb2dvLXVwbG9hZC1jYXJkIHtcblxuICAgIC5sb2dvLXByZXZpZXctZnJhbWUge1xuICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wem9uZSB7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjY2JkNWUxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IGF1dG87XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJi5kcm9wem9uZS1kcmFnb3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERhbmdlciBab25lIC0gc2VyaW91cywgbm90IHRoZWF0cmljYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLWRhbmdlci16b25lIC5jYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgLmNhcmQtdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVsZXRlIENvbXBhbnkgTW9kYWwgLSBFbmhhbmNlZCBzdHlsaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiNkZWxldGVDb21wYW55TW9kYWwge1xuXG4gICAgLm1vZGFsLWNvbnRlbnQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuICAgIH1cblxuICAgIC5mb250LW1vbm9zcGFjZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZWYyZjI7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDdXN0b20gRmllbGRzIC0gUmVvcmRlcmFibGUgbGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY3VzdG9tLWZpZWxkLWxpc3Qge1xuXG4gICAgLmN1c3RvbS1maWVsZC1yb3cge1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDEyMG1zIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciAuY3VzdG9tLWZpZWxkLWhhbmRsZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc29ydGFibGUtZ2hvc3Qge1xuICAgICAgICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IsIDk5IDEwMiAyNDEpLCAwLjA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc29ydGFibGUtY2hvc2VuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiLCA5OSAxMDIgMjQxKSwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY3VzdG9tLWZpZWxkLWhhbmRsZSB7XG4gICAgICAgIGN1cnNvcjogZ3JhYjtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItbXV0ZWQsICM5NGEzYjgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBjdXJzb3I6IGdyYWJiaW5nO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5zZXR0aW5ncy1wYWdlIHtcblxuICAgICAgICAubmF2LXVuZGVybGluZSxcbiAgICAgICAgLnNldHRpbmdzLWRhbmdlci16b25lLFxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXNpZ24gdGVtcGxhdGUgcGlja2VyIChTZXR0aW5ncyA+IERlc2lnbilcbi8vIFNlbGYtY29udGFpbmVkOiBkb2VzIG5vdCByZWx5IG9uIFRhYmxlcidzIGZvcm0taW1hZ2VjaGVjayBjb21wb25lbnQuIFRoZVxuLy8gcmFkaW8gaXMgdmlzdWFsbHkgaGlkZGVuIGFuZCB0b2dnbGVkIHRocm91Z2ggaXRzIHdyYXBwaW5nIDxsYWJlbD47IHRoZVxuLy8gc2VsZWN0ZWQgc3RhdGUgc2hvd3MgYXMgYSBwcmltYXJ5IGJvcmRlciBvbiB0aGUgY2FyZCBwbHVzIGEgY2hlY2sgYmFkZ2UuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50ZW1wbGF0ZS1waWNrZXIge1xuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1jYXJkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuICAgICAgICAmOmhhcygudGVtcGxhdGUtcGlja2VyLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMjA2YmM0KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IsIDMyLCAxMDcsIDE5NiksIDAuMjUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiLCAzMiwgMTA3LCAxOTYpLCAwLjUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1vcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAvLyBWaXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBmb3JtLXN1Ym1pdHRhYmxlIGFuZCBmb2N1c2FibGU7IGNsaWNrcyBvblxuICAgIC8vIHRoZSBsYWJlbCAodGh1bWJuYWlsKSB0b2dnbGUgaXQgbmF0aXZlbHkuXG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWlucHV0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItdGh1bWIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLXNlY29uZGFyeSwgI2YxZjVmOSk7XG5cbiAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogNDAwJTtcbiAgICAgICAgICAgIGhlaWdodDogNDAwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG5cbiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgbXVzdCBuZXZlciBzd2FsbG93IGNsaWNrcyBtZWFudCBmb3IgdGhlIGxhYmVsLlxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBiYWRnZSBpbiB0aGUgdGh1bWJuYWlsIGNvcm5lciwgb25seSB3aGlsZSBzZWxlY3RlZC5cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItY2hlY2sge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC41cmVtO1xuICAgICAgICByaWdodDogMC41cmVtO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuNzVyZW07XG4gICAgICAgIGhlaWdodDogMS43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnksICMyMDZiYzQpO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigxNSAyMyA0MiAvIDI1JSk7XG4gICAgfVxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1vcHRpb246aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Y2hlY2tlZCkgLnRlbXBsYXRlLXBpY2tlci1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgJi50ZW1wbGF0ZS1waWNrZXItZGlzYWJsZWQge1xuXG4gICAgICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAudGVtcGxhdGUtcGlja2VyLXRodW1iIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEYXNoYm9hcmQgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciB0aGUgcmVkZXNpZ25lZCBkYXNoYm9hcmQgaW5jbHVkaW5nIGhlcm8gc3RhdHMsXG4gKiBjaGFydHMsIGF0dGVudGlvbiByZXF1aXJlZCBzZWN0aW9uLCBxdWljayBhY3Rpb25zLCBhbmQgYWN0aXZpdHkgZmVlZC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVSTyBTVEFUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm91ciB0aWxlcywgYnV0IGRlbGliZXJhdGVseSBub3QgZm91ciBlcXVhbCB0aWxlcy4gVGhlIHJvdyBpcyBsYWlkIG91dCBvbiBhXG4vLyBuaW5lLXRyYWNrIGdyaWQ6IG9yZGluYXJ5IHRpbGVzIHNwYW4gdHdvIHRyYWNrcywgdGhlIHVyZ2VudCBvbmUgc3BhbnMgdGhyZWUuXG4vLyBTcGFucyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHBvc2l0aW9uYWwgY29sdW1uIHNpemVzIHNvIHRoZSBlbXBoYXNpcyBmb2xsb3dzIHRoZVxuLy8gYC0tdXJnZW50YCBjbGFzcyByYXRoZXIgdGhhbiB0aGUgdGlsZSdzIHBvc2l0aW9uIGluIHRoZSBtYXJrdXAuXG5cbi5kYXNoYm9hcmQtaGVyby1zdGF0cyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblxuICAgIEBtZWRpYSAod2lkdGggPj0gNTc3cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpO1xuICAgIH1cbn1cblxuLnN0YXQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIE5vIGhvdmVyIHRyZWF0bWVudDogdGhlIHRpbGUgaXMgYW4gaW5lcnQgZGl2IHdpdGggbm8gbGluayBhbmQgbm8gaGFuZGxlci5cbiAgICAvLyBOb3RoaW5nIGhlcmUgdHJhbnNpdGlvbnMsIHNvIHRoZXJlIGlzIG5vdGhpbmcgZm9yIHJlZHVjZWQtbW90aW9uIHRvIHVuZG8uXG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgIH1cblxuICAgIC8vIFN0YXRlIGlzIGNhcnJpZWQgYnkgdGhlIGljb24gdGludCwgdGhlIHZhbHVlIGNvbG91ciBhbmQgdGhlIHN1cmZhY2UgdGludC5cbiAgICAvLyBOZXZlciBhIHNpZGUgc3RyaXBlLCBuZXZlciBhIGdsb3cuXG4gICAgLy8gVGhlIHRpbnQgbGl2ZXMgb24gLS1kYW5nZXIgYWxvbmUsIG5ldmVyIG9uIC0tdXJnZW50LiAtLXVyZ2VudCBpcyBhcHBsaWVkXG4gICAgLy8gdW5jb25kaXRpb25hbGx5IHRvIGhvbGQgdGhlIGdyaWQgdHJhY2ssIHNvIHRpbnRpbmcgaXQgd291bGQgcGFpbnQgYSByZWRcbiAgICAvLyBjYXJkIGZvciBhIHVzZXIgd2l0aCB6ZXJvIG92ZXJkdWUgaW52b2ljZXM6IHRoZSBzYW1lIGRlZmVjdCBhcyByZW5kZXJpbmdcbiAgICAvLyBhICQwLjAwIHRvdGFsIGluIHN1Y2Nlc3MgZ3JlZW4sIG1pcnJvcmVkLlxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBcIk92ZXJkdWVcIiBpcyB0aGUgb25seSBhY3Rpb25hYmxlIG51bWJlciBpbiB0aGUgcm93LCBzbyBpdCBtdXN0IG5vdCByZWFkIGFzXG4gICAgLy8gaW50ZXJjaGFuZ2VhYmxlIHdpdGggdGhlIHRvdGFscyBiZXNpZGUgaXQ6IGhhbGYgYWdhaW4gYXMgd2lkZSB3aGVyZSB0aGVyZVxuICAgIC8vIGlzIHJvb20gZm9yIGFuIGFzeW1tZXRyaWMgcm93LCBhbmQgYSBmdWxsIHR5cGUgc3RlcCBsYXJnZXIgYXQgZXZlcnkgd2lkdGguXG5cbiAgICAmLS11cmdlbnQge1xuICAgICAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGF0LXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtM3hsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnN0YXQtY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc3RhdC1pY29uIHtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICYtLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cbn1cblxuLnN0YXQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLnN0YXQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xufVxuXG4uc3RhdC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblxuICAgIC8vIEdyZWVuIG1lYW5zIFwiUGFpZFwiLiBBIGxpZmV0aW1lIHJldmVudWUgYWdncmVnYXRlIGlzIG5vdCBhIHBheW1lbnQgc3RhdGUsXG4gICAgLy8gc28gdGhlcmUgaXMgbm8gYC0tc3VjY2Vzc2AgaGVyZTsgcGFpZCBzZW1hbnRpY3MgbGl2ZSBpbiBgLm1vbmV5LS1wYWlkYC5cblxuICAgICYtLWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgdGlsZSBhbHJlYWR5IGNhcnJpZXMgdGhlIGVtcGhhc2lzOiBgLnN0YXQtdmFsdWVgIGlzIHRoZSBsYXJnZXN0IHRleHQgaW5cbiAgICAvLyB0aGUgY2FyZC4gYC5tb25leS0tdG90YWxgIHN0ZXBwaW5nIGl0IHVwIGFub3RoZXIgMTIuNSUgb24gdG9wIG9mIHRoYXQgaXMgd2hhdFxuICAgIC8vIHB1c2hlZCBcIlVTRCAxMjAsODgyLjE5XCIgcGFzdCB0aGUgY2FyZCBlZGdlIG9uIGEgc3Bhbi0yIHRpbGUuIFRoZSBtb2RpZmllciBpc1xuICAgIC8vIGtlcHQgZm9yIGl0cyB3ZWlnaHQsIHdoaWNoIHRoZSB0aWxlIHN0aWxsIHdhbnRzOyBvbmx5IHRoZSBzaXplIHN0ZXAgaXMgdW5kb25lLlxuICAgIC8vIGAubW9uZXlgIGlzIGB3aGl0ZS1zcGFjZTogbm93cmFwYCBieSBkZXNpZ24gKGEgY3VycmVuY3kgY29kZSBtdXN0IG5ldmVyIGJlXG4gICAgLy8gb3JwaGFuZWQgZnJvbSBpdHMgbnVtYmVyKSwgc28gYW4gYW1vdW50IHRoYXQgZG9lcyBub3QgZml0IG92ZXJmbG93cyByYXRoZXJcbiAgICAvLyB0aGFuIHdyYXBwaW5nLiBXaWR0aCBoYXMgdG8gYmUgd29uIGJhY2sgaGVyZSwgbm90IGFic29yYmVkIGF0IHJlbmRlciB0aW1lLlxuXG4gICAgLm1vbmV5LS10b3RhbCAubW9uZXktYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgfVxufVxuXG4uc3RhdC1zdWJ2YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hBUlQgQ09OVEFJTkVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhc2hib2FyZC1jaGFydC1jb250YWluZXIge1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhc2hib2FyZC1yZXZlbnVlLWNoYXJ0IHtcbiAgICBoZWlnaHQ6IDI4MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY29udGFpbmVyIHtcbiAgICBtaW4taGVpZ2h0OiAyODBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LWNoYXJ0IHtcbiAgICBoZWlnaHQ6IDI4MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY2VudGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuXG4gICAgLy8gQ2hhcnQuanMgcGFpbnRzIHRoZSBsZWdlbmQgaW5zaWRlIHRoZSBjYW52YXMgYWxvbmcgaXRzIGJvdHRvbSBlZGdlLCBzbyB0aGVcbiAgICAvLyByaW5nJ3MgY2VudHJlIHNpdHMgYSBsaXR0bGUgYWJvdmUgdGhlIGNvbnRhaW5lcidzIG1pZHBvaW50LiBUaGlzIG51ZGdlXG4gICAgLy8gY29tcGVuc2F0ZXMuIEl0IGlzIGEgZml4ZWQgZGlzdGFuY2UgcmF0aGVyIHRoYW4gYSBwZXJjZW50YWdlIG9mIHRoaXNcbiAgICAvLyBlbGVtZW50J3Mgb3duIGhlaWdodCwgc28gY2hhbmdpbmcgdGhlIHRvdGFsJ3MgdHlwZSBzaXplIG9yIHdyYXBwaW5nIGl0c1xuICAgIC8vIGxhYmVsIGNhbiBubyBsb25nZXIgZHJhZyB0aGUgbnVtYmVyIG9mZiB0aGUgcmluZydzIGNlbnRyZS5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC01MCUgLSB2YXIoLS1zd3Atc3BhY2UtMS01KSkpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LXRvdGFsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIC8vIERlbW90ZWQgZnJvbSAzMnB4OiB0aGUgbGVhc3QgYWN0aW9uYWJsZSB3aWRnZXQgb24gdGhlIHBhZ2Ugc2hvdWxkIG5vdCBvd25cbiAgICAvLyBpdHMgbGFyZ2VzdCBudW1iZXIuIFRoYXQgbm93IGJlbG9uZ3MgdG8gdGhlIG92ZXJkdWUgY291bnQuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctdGlnaHQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lbXB0eS1pY29uIHtcbiAgICAvLyBXYXMgYC0tc3dwLXRleHQtbGlnaHRgICgyLjU2OjEgb24gc3VyZmFjZSk6IHRlY2huaWNhbGx5IGRlY29yYXRpb24sIGJ1dFxuICAgIC8vIGNsb3NlIGVub3VnaCB0byBpbnZpc2libGUgdGhhdCBpdCByZWFkIGFzIGEgcmVuZGVyaW5nIGZhdWx0LiBgLS10ZXh0LW11dGVkYFxuICAgIC8vIGNsZWFycyAxLjQuMTEgZm9yIGEgbWVhbmluZ2Z1bCBncmFwaGljIGFuZCBzdGlsbCBzaXRzIGEgc3RlcCBsaWdodGVyIHRoYW5cbiAgICAvLyB0aGUgdGV4dCBiZWxvdyBpdCwgc28gdGhlIGljb24gc3VwcG9ydHMgdGhlIG1lc3NhZ2UgaW5zdGVhZCBvZiBsZWFkaW5nIGl0LlxuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gQSBmYWlsZWQgcXVlcnkgaXMgbm90IGFuIGVtcHR5IGFjY291bnQsIGFuZCBtdXN0IG5ldmVyIGltcGVyc29uYXRlIG9uZS4gVGhlXG4vLyBlbXB0eSBzdGF0ZSBhYm92ZSBpcyBjYWxtIGFuZCBlbmNvdXJhZ2luZzsgdGhpcyBvbmUgbmFtZXMgYSBwcm9ibGVtIGFuZCBvZmZlcnNcbi8vIGEgd2F5IG91dCBvZiBpdC4gQ29sb3VyIGFtcGxpZmllcyB0aGUgZGlzdGluY3Rpb24sIGl0IG5ldmVyIGNhcnJpZXMgaXQgYWxvbmU6XG4vLyB0aGUgdGV4dCBsYWJlbCBkb2VzIHRoYXQuXG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItaWNvbiB7XG4gICAgLy8gQ29udGFpbmVkIGluIGEgdGludGVkIG1lZGFsbGlvbiwgdW5saWtlIHRoZSBlbXB0eSBzdGF0ZSdzIGJhcmUgaWNvbi4gVGhpc1xuICAgIC8vIGlzIHRoZSBzYW1lIFwic3RhdGUgbWVkYWxsaW9uXCIgc2hhcGUgYC5hdHRlbnRpb24tZW1wdHktaWNvbmAgYWxyZWFkeSB1c2VzLFxuICAgIC8vIHNvIHRoZSB0d28gc3RhdGVzIGFyZSB0b2xkIGFwYXJ0IGJ5IGZvcm0gYmVmb3JlIGNvbG91ciBpcyByZWFkIGF0IGFsbC5cbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgfVxufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yLXRpdGxlIHtcbiAgICAvLyBIZWF2aWVyIGFuZCBkYXJrZXIgdGhhbiBgLmRhc2hib2FyZC1jaGFydC1lbXB0eS10ZXh0YDogYSBzdGF0ZW1lbnQgb2Ygd2hhdFxuICAgIC8vIHdlbnQgd3JvbmcsIG5vdCBhIHNocnVnLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yLXRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC13aWR0aDogNDJjaDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFUVEVOVElPTiBSRVFVSVJFRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmF0dGVudGlvbi1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS1pY29uIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5hdHRlbnRpb24tZW1wdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYXR0ZW50aW9uLXNlY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbiB7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4uYXR0ZW50aW9uLXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICYtLWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tYmFkZ2Uge1xuICAgIC8vIFdhcyAxMXB4LCBvZmYtcmFtcC4gQmFkZ2UgdGV4dCBpcyB0aGUgZG9jdW1lbnRlZCBMYWJlbCBzdGVwICgxMnB4KS5cbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcblxuICAgICYtLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uYXR0ZW50aW9uLWl0ZW1zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5hdHRlbnRpb24taXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hdHRlbnRpb24taXRlbS1tYWluIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGZsZXg6IDE7XG59XG5cbi5hdHRlbnRpb24taXRlbS1pZCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tY2xpZW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5hdHRlbnRpb24taXRlbS1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdHRlbnRpb24taXRlbS1hbW91bnQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5hdHRlbnRpb24taXRlbS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUlDSyBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucXVpY2stYWN0aW9ucy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5xdWljay1hY3Rpb24tYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zZWNvbmRhcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1ob3Zlcik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1ob3Zlcik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgICAgICYsXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnF1aWNrLWFjdGlvbi1pY29uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ucXVpY2stYWN0aW9uLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWSVRZIFRJTUVMSU5FXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi5hY3Rpdml0eS10aW1lbGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uYWN0aXZpdHktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWljb24ge1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG5cbiAgICAmLS1wYXltZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICYtLWludm9pY2UsXG4gICAgJi0taW52b2ljZV9zZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2FjY2VwdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2RlY2xpbmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS1yZWN1cnJpbmdfZ2VuZXJhdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFjdGl2aXR5LWRlc2NyaXB0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cblxuLmFjdGl2aXR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgLy8gV2FzIDE0cHgsIG9mZi1yYW1wLiBCb2R5IGlzIDE1cHgsIGFuZCBpdCBwYWlycyB3aXRoIHRoZSAxM3B4IG1vbm8gZG9jLWxpbmtcbiAgICAvLyBuZXN0ZWQgaW5zaWRlIGl0IGV4YWN0bHkgYXMgdGhlIHJhbXAgaW50ZW5kcy4gSXQgYWxzbyBrZWVwcyB0aGlzIHJvdyBhIHN0ZXBcbiAgICAvLyBhYm92ZSBgLmFjdGl2aXR5LWRldGFpbHNgIGJlbG93LCB3aGljaCB0aGUgMTNweCBzdGVwIHdvdWxkIGhhdmUgZmxhdHRlbmVkLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG59XG5cbi5hY3Rpdml0eS1kb2MtbGluayB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uYWN0aXZpdHktY2xpZW50LWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LXNlcGFyYXRvciB7XG4gICAgLy8gVGhpcyBpcyB0ZXh0LCBub3QgYSBydWxlIG9yIGEgZ3JhcGhpYy4gYC0tc3dwLXRleHQtbGlnaHRgIGlzIDIuNTY6MSBvbiB0aGVcbiAgICAvLyBjYXJkIHN1cmZhY2UgYW5kIGZhaWxzIEFBIG91dHJpZ2h0LlxuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi5hY3Rpdml0eS1hbW91bnQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5hY3Rpdml0eS10aW1lIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4iLCIvKipcbiAqIENsaWVudCBQYWdlIFN0eWxlc1xuICpcbiAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBDbGllbnQgdmlldyBwYWdlLlxuICogRm9sbG93cyB0aGUgZGVzaWduIHN5c3RlbSB0b2tlbnMgYW5kIG1vZGVybiBTYWFTIGFlc3RoZXRpYy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgSEVSTyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtaGVybyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5jbGllbnQtaGVyby10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLmNsaWVudC1oZXJvLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2xpZW50LWhlcm8tbWV0YS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RBVCBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXN0YXQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1zdGF0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xufVxuXG4vLyBJbmNvbWUgcmVjZWl2ZWQgaXMgYSBwb3NpdGl2ZSBzdGF0ZTsgc3VjY2VzcyBncmVlbiBlYXJucyBpdHMgcGxhY2UuXG5cbi5jbGllbnQtc3RhdC12YWx1ZS0tc3VjY2VzcyB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLy8gXCJPdXRzdGFuZGluZ1wiIG1lYW5zIG93ZWQsIG5vdCBvdmVyZHVlLiBBbWJlciwgbm90IGRhbmdlciByZWQuXG4vLyBLZXB0IC0tZGFuZ2VyIGFsaWFzIHNvIGFueSBsZWdhY3kgY2FsbGVycyBzdGlsbCByZW5kZXIgbWVhbmluZ2Z1bGx5LlxuXG4uY2xpZW50LXN0YXQtdmFsdWUtLXdhcm5pbmcsXG4uY2xpZW50LXN0YXQtdmFsdWUtLWRhbmdlciB7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLmNsaWVudC1zdGF0LWJhZGdlcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgQ1JFRElUIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1jcmVkaXQtY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG59XG5cbi5jbGllbnQtY3JlZGl0LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbn1cblxuLmNsaWVudC1jcmVkaXQtYW1vdW50IHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2xpZW50LWNyZWRpdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUJTIE5BVklHQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC10YWJzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLyogLm5hdi10YWJzIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBtYXJnaW46IDAgY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS02KSk7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH0gKi9cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLCBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYig0NiAxNTAgNTggLyAzMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWRnZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgcGFkZGluZzogMC4yZW0gMC41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFiLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBIRUFERVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uY2xpZW50LXNlY3Rpb24tdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEFDVCAmIEFERFJFU1MgQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1jb250YWN0LWNhcmQsXG4uY2xpZW50LWFkZHJlc3MtY2FyZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCk7XG4gICAgfVxuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0LWF2YXRhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5jbGllbnQtY29udGFjdC1uYW1lIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNsaWVudC1jb250YWN0LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0LWRldGFpbC1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcbn1cblxuLmNsaWVudC1jb250YWN0LWRldGFpbC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElDT04gQlVUVE9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLWljb24tc20ge1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5idG4tZ2hvc3Qtc2Vjb25kYXJ5IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gQUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWZvcm0tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREUkVTUyBESVNQTEFZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtYWRkcmVzcy10ZXh0IHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LWFkZHJlc3MtbWFwLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERJVElPTkFMIENPTlRBQ1QgREVUQUlMU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jbGllbnQtY29udGFjdC1leHRyYS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLWxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1pbi13aWR0aDogODBweDtcbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENVU1RPTSBGSUVMRFMgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY3VzdG9tLWZpZWxkcy1jYXJkIHtcblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uY3VzdG9tLWZpZWxkcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5jdXN0b20tZmllbGRzLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTQwcHgsIDMwJSkgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLmN1c3RvbS1maWVsZHMtbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xufVxuXG4uY3VzdG9tLWZpZWxkcy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG5cbiAgICAuY3VzdG9tLWZpZWxkcy1pdGVtIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5jbGllbnQtaGVyby10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5jbGllbnQtc3RhdC12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5jbGllbnQtaGVyby1tZXRhIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNsaWVudC10YWJzLWNhcmQgLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luOiAwIGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNCkpO1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNsaWVudC10YWJzLWNhcmQgLm5hdi1pdGVtIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmNsaWVudC1zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmNsaWVudC1oZXJvIC5kcm9wZG93bixcbiAgICAuY2xpZW50LWhlcm8gLmJ0bixcbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIC5idG4sXG4gICAgLmJ0bi1naG9zdC1zZWNvbmRhcnksXG4gICAgLmJ0bi1naG9zdC1kYW5nZXIsXG4gICAgLmNsaWVudC1mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERERERDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEludm9pY2UgVmlldyBQYWdlXG4gKlxuICogQWxsIHNoYXJlZCBkb2N1bWVudCB2aWV3IHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzLlxuICogSW52b2ljZS1zcGVjaWZpYyByZWN1cnJpbmcgaW52b2ljZSBzdHlsZXMgYXJlIGFsc28gaW4gdGhhdCBzaGFyZWQgY29tcG9uZW50LlxuICovXG5cbi8vIFJlY3VycmluZyBpbnZvaWNlIHNpZGViYXI6IHNjaGVkdWxlICYgZ2VuZXJhdGVkIGludm9pY2VzXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc2NoZWR1bGUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2NoZWR1bGUtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgIC8vIERhdGVzIGFuZCBjb3VudHMgbGluZSB1cCBjbGVhbmx5IGRvd24gdGhlIHNjaGVkdWxlIHNpZGViYXJcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4ub2NjdXJyZW5jZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ub2NjdXJyZW5jZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi5vY2N1cnJlbmNlLWRhdGUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWlkIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBJbnZvaWNlIFZpZXdcbiAqXG4gKiBJbnZvaWNlLXNwZWNpZmljIHN0eWxlcyBmb3IgdGhlIHB1YmxpYy1mYWNpbmcgaW52b2ljZSBwYWdlLlxuICogQWxsIHNoYXJlZCBleHRlcm5hbCBkb2N1bWVudCBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MuXG4gKi9cblxuLy8gSW52b2ljZS1zcGVjaWZpYyBhY3Rpb24gYnV0dG9uXG5cbi5idG4taW52b2ljZS1hY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyBTY3JlZW4gcmVhZGVyIG9ubHkgdGV4dFxuXG4uc3Itb25seSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBib3JkZXItd2lkdGg6IDA7XG59XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuYnRuLWludm9pY2UtYWN0aW9uOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEV4dGVybmFsIFF1b3RlIFZpZXdcbiAqXG4gKiBBbGwgc2hhcmVkIGV4dGVybmFsIGRvY3VtZW50IHN0eWxlcyAoaW5jbHVkaW5nIHF1b3RlIHN0eWxlcykgYXJlIGluXG4gKiBjb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzLlxuICpcbiAqIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gcXVvdGUtc3BlY2lmaWMgc3R5bGVzIGJleW9uZCB3aGF0IGlzIHNoYXJlZC5cbiAqL1xuIiwiLyoqXG4gKiBRdW90ZSBWaWV3IFBhZ2UgLSBRdW90ZS1TcGVjaWZpYyBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgZG9jdW1lbnQgbGF5b3V0IGlzIGluIGNvbXBvbmVudHMvX2RvY3VtZW50LXZpZXcuc2Nzcy5cbiAqIFRoaXMgZmlsZSBpcyBpbnRlbnRpb25hbGx5IG1pbmltYWwgLSBhbGwgc2hhcmVkIGRvYyB2aWV3IHN0eWxlcyBhcmUgaW4gdGhlIGNvbXBvbmVudC5cbiAqL1xuXG4vLyBObyBxdW90ZS1zcGVjaWZpYyBvdmVycmlkZXMgbmVlZGVkIGJleW9uZCB3aGF0IF9kb2N1bWVudC12aWV3LnNjc3MgcHJvdmlkZXMuXG4iLCIvKipcbiAqIFBheW1lbnQgTWFya2V0cGxhY2UgU3R5bGVzXG4gKiBPbmx5IHBheW1lbnQtc3BlY2lmaWMgc3R5bGVzLiBTaGFyZWQgbWFya2V0cGxhY2Ugc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF5bWVudCBNYXJrZXRwbGFjZSBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2Uge1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBUYWJzIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Utc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSBDYXJkcyBHcmlkXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nYXRld2F5LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5nYXRld2F5LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeSkgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY29uZmlndXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjMpO1xuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpIDAlLCB2YXIoLS1zd3Atc3VjY2VzcykgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA4KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA0KSAxMDAlKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jdXN0b20tZ2F0ZXdheSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wMSkgMTAwJSk7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIC8vIEFkZCBob3Jpem9udGFsIGRpdmlkZXIgYWZ0ZXIgY3VzdG9tIGdhdGV3YXlcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS02KSAvIDIpO1xuICAgICAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDAlLFxuICAgICAgICAgICAgICAgIHZhcigtLXN3cC1ib3JkZXIpIDE1JSxcbiAgICAgICAgICAgICAgICB2YXIoLS1zd3AtYm9yZGVyKSA4NSUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBpbnNldDogLTJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5KSwgdmFyKC0tc3dwLXByaW1hcnktZGFyaykpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMDg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5KSAwJSwgdmFyKC0tc3dwLXByaW1hcnktZGFyaykgMTAwJSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTJweDtcbiAgICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAudGV4dC1tdXRlZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZS1zbSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBY3RpdmUgTWV0aG9kcyBQYW5lbCAtIFJpZ2h0IFNpZGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFjdGl2ZS1tZXRob2RzLXBhbmVsIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgPiAuZC1mbGV4ID4gLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxufVxuXG4uYWN0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IDEuMDYyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gNCUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgICYuYmctc3VjY2VzcyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2VzcykgMCUsIHZhcigtLXN3cC1zdWNjZXNzLWhvdmVyKSAxMDAlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5iZy1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktNDAwKSAwJSwgdmFyKC0tc3dwLWdyYXktNTAwKSAxMDAlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDEuNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24gRm9ybSBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2Uge1xuICAgIC8vIEZpeCBjbG9zZSBidXR0b24gYWxpZ25tZW50IGluIGNhcmQgaGVhZGVyXG5cbiAgICAuY2FyZC1oZWFkZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLWljb24ge1xuICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHNwYWNpbmcgYmV0d2VlbiBmb3JtIHN3aXRjaCBmaWVsZHMgKHRoZSBjb250YWluZXJzIHdpdGggYmFja2dyb3VuZHMpXG5cbiAgICBmb3JtIHtcblxuICAgICAgICAuZm9ybS1zd2l0Y2gtZmllbGQgKyAuZm9ybS1zd2l0Y2gtZmllbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHNwYWNpbmcgYmV0d2VlbiByZWd1bGFyIGZvcm0gZmllbGRzXG5cbiAgICAgICAgLm1iLTMgKyAubWItMyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBheW1lbnQgQ29uZmlndXJhdGlvbiBNb2RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tb2RhbC1iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYigwIDAgMCAvIDUwJSk7XG4gICAgei1pbmRleDogMTA0MDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xufVxuXG4ucGF5bWVudC1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5wYXltZW50LW1vZGFsLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSxcbiAgICAgICAgICAgICAgICAwIDEwcHggMTBweCAtNXB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDkyMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtOCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5wYXltZW50LW1vZGFsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucGF5bWVudC1tb2RhbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ucGF5bWVudC1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnBheW1lbnQtbW9kYWwtYm9keSB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFJlbW92ZSBjYXJkIHN0eWxpbmcgZnJvbSBQYXltZW50U2V0dGluZ3Mgd2hlbiBpbnNpZGUgbW9kYWxcblxuICAgID4gZGl2ID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIHRoZSBjYXJkIGhlYWRlciBzaW5jZSBtb2RhbCBoYXMgaXRzIG93blxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBNb2JpbGUgYWRhcHRhdGlvbnNcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLnBheW1lbnQtbW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtbW9kYWwtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiA5MHZoO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zbGlkZS11cC1tb2JpbGUgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNsaWRlLXVwLW1vYmlsZSB7XG5cbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByZXZlbnQgYm9keSBzY3JvbGwgd2hlbiBtb2RhbCBpcyBvcGVuXG5cbmJvZHk6aGFzKC5wYXltZW50LW1vZGFsKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFJlc3BvbnNpdmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAubWFya2V0cGxhY2UtcGFuZWwge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5hY3RpdmUtbWV0aG9kLWNhcmQge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAgICAgLmJ0bi1ncm91cCxcbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFicyBvbiBtb2JpbGVcblxuICAgIC5wYXltZW50LW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAucGF5bWVudC1tYXJrZXRwbGFjZSB7XG5cbiAgICAgICAgLm5hdi10YWJzLFxuICAgICAgICAubWFya2V0cGxhY2UtcGFuZWwsXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG4gICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHYXRld2F5IEdyb3VwcyAoY2F0ZWdvcmlzZWQgbWFya2V0cGxhY2Ugc2VjdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nYXRld2F5LWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuZ2F0ZXdheS1ncm91cC1oZWFkZXIge1xuXG4gICAgICAgIGg2IHtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDdXN0b20gXCJjcmVhdGUgeW91ciBvd25cIiBjYXJkIHNpdHMgaW5zaWRlIHRoZSBvZmZsaW5lIGdyb3VwIG5vdywgc28gdGhlXG4gICAgLy8gbGVnYWN5IGZ1bGwtd2lkdGggZGl2aWRlciBpdCB1c2VkIHRvIGRyYXcgaXMgbm8gbG9uZ2VyIG5lZWRlZC5cblxuICAgIC5pcy1jdXN0b20tZ2F0ZXdheSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBMZWdhY3kgLyBhZHZhbmNlZCBwcm9jZXNzb3JzIGFyZSBjb2xsYXBzZWQgYXdheSBieSBkZWZhdWx0LlxuXG4uZ2F0ZXdheS1ncm91cC0tbW9yZSB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICA+IHN1bW1hcnkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciBoNiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBcIkFib3V0IHRoaXMgZ2F0ZXdheVwiIGd1aWRhbmNlIHBhbmVsIChpbiB0aGUgY29uZmlnIG1vZGFsKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1nYXRld2F5LWFib3V0IHtcblxuICAgIC5hbGVydC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1nYXRld2F5LWNvbXBhcmUge1xuXG4gICAgICAgIHN1bW1hcnkge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogTm90aWZpY2F0aW9uIE1hcmtldHBsYWNlIFN0eWxlc1xuICogTm90aWZpY2F0aW9uLXNwZWNpZmljIHN0eWxlcy4gU2hhcmVkIG1hcmtldHBsYWNlIHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5vdGlmaWNhdGlvbiBNYXJrZXRwbGFjZSBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSB7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWNvbG9ycyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlLXNtIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1hcmtldHBsYWNlIFRhYnMgKFNNUy9DaGF0KSAtIEluc2lkZSBQYW5lbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubWFya2V0cGxhY2UtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICAubmF2LWxpbmstaWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1ob3Zlcik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBTZWN0aW9uIEhlYWRlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBDYXJkcyBHcmlkXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1ncmlkIHtcbiAgICAvLyBDb250YWluZXIgZm9yIHRoZSBmdWxsIGludGVncmF0aW9uIGFyZWEgKG5vIGdyaWQgaGVyZSlcbn1cblxuLmludGVncmF0aW9uLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uaW50ZWdyYXRpb24tY2FyZHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICB9XG59XG5cbi8vIEludGVncmF0aW9uIENhcmQgLSBWZXJ0aWNhbCBMYXlvdXRcblxuLmludGVncmF0aW9uLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjI1KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY29uZmlndXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMyksIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yNSk7XG5cbiAgICAgICAgLmludGVncmF0aW9uLWNhcmQtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCksIHZhcigtLXN3cC1zdWNjZXNzKSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtaWNvbiB7XG4gICAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgICBoZWlnaHQ6IDY0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCksIHZhcigtLXN3cC1ncmF5LTIwMCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYigwIDAgMCAvIDYlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWFjdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmVkIEludGVncmF0aW9ucyBQYW5lbCAtIFJpZ2h0IFNpZGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb25zLXBhbmVsIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgPiAuZC1mbGV4ID4gLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxufVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbnMtbGlzdCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjA2MjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLW1ldGhvZC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMS41cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiBNb2RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNTAlKTtcbiAgICB6LWluZGV4OiAxMDQwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiAxMDUwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSxcbiAgICAgICAgICAgICAgICAwIDEwcHggMTBweCAtNXB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtOCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1ib2R5IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gUmVtb3ZlIGNhcmQgc3R5bGluZyBmcm9tIE5vdGlmaWNhdGlvblRyYW5zcG9ydENvbmZpZ3VyYXRpb24gd2hlbiBpbnNpZGUgbW9kYWxcblxuICAgID4gZGl2ID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIHRoZSBjYXJkIGhlYWRlciBzaW5jZSBtb2RhbCBoYXMgaXRzIG93blxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgUmVzcG9uc2l2ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgICAgIC5idG4tZ3JvdXAsXG4gICAgICAgICAgICAuZC1mbGV4LmdhcC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnMgb24gbW9iaWxlXG5cbiAgICAubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tbW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tb2RhbC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBhbmltYXRpb246IG5vdGlmaWNhdGlvbi1zbGlkZS11cC1tb2JpbGUgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG5vdGlmaWNhdGlvbi1zbGlkZS11cC1tb2JpbGUge1xuXG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG8ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBQcmV2ZW50IGJvZHkgc2Nyb2xsIHdoZW4gbW9kYWwgaXMgb3BlblxuXG5ib2R5Omhhcygubm90aWZpY2F0aW9uLW1vZGFsKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlIHtcblxuICAgICAgICAubmF2LXRhYnMsXG4gICAgICAgIC5tYXJrZXRwbGFjZS1wYW5lbCxcbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/