/*!
 * Theme Name: Auteursbond Theme
 * Theme URI: https://www.van-ons.nl/
 * Description: Auteursbond Theme theme created by Van Ons.
 * Author: Van Ons
 * Author URI: https://www.van-ons.nl/
 * Version: 2.2.0
 * Text Domain: auteursbond
 */
@charset "UTF-8";
/* Settings */
/**
 * Settings
 * ----------------------------------------------------------------------------
 */
/* Global */
/* Breakpoints */
/* Typography */
/* XY Grid */
/**
 * Color scheme
 * ----------------------------------------------------------------------------
 */
/* Design document colors */
/* Gray tints */
/* Base colors */
/* Attention colors */
/**
 * Custom variables
 * ----------------------------------------------------------------------------
 */
/* Transitions */
/* z-index */
/* FontAwesome */
/* Spacing */
/* Header height */
/**
 * Custom mixins
 * ----------------------------------------------------------------------------
 */
/**
 * Used to compile CSS to display retina images.
 *
 * Example:
 * @include background-image-retina(logo, png, 210px, 70px);
 *
 */
/**
 * Custom placeholders
 * ----------------------------------------------------------------------------
 */
ul.gform_fields, ul.gfield_checkbox,
ul.gfield_radio,
.ginput_container_consent, .page-navigation__inner nav ul, .price-hero__content ul, .price-video__navigation {
  margin-bottom: 0;
  margin-left: 0;
  padding-left: 0;
  list-style: none; }

/**
 * Add styling to root (optional)
 * ----------------------------------------------------------------------------
 */
/**
 * Form placeholder styling
 * ----------------------------------------------------------------------------
 */
/**
 * Dots bg mixin
 * $dot-color, $bg-color, $transition
 * ----------------------------------------------------------------------------
 */
/**
 * Circle bg mixin
 * $circle-color, $bg-color, $transition
 * ----------------------------------------------------------------------------
 */
/**
 * vo-theme
 */
/**
 * vo-has-color
 */
/**
 * vo-has-background-color
 */
/**
 * Headings
 */
/* Normalize */
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers.
 */
body {
  margin: 0; }

/**
 * Render the `main` element consistently in IE.
 */
main {
  display: block; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */ }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline; }

/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */
details {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none; }

/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none; }

/* Global */
/**
 * Reset.
 * ----------------------------------------------------------------------------
 */
/**
 * A very simple reset that sits on top of Normalize.css.
 */
body,
h1,
h2,
h3,
h4,
h5,
h6,
blockquote,
p,
pre,
dl,
dd,
ol,
ul,
figure,
hr,
fieldset,
legend {
  margin: 0;
  padding: 0; }

/**
 * Remove trailing margins from nested lists.
 */
li > ol,
li > ul {
  margin-bottom: 0; }

/**
 * Remove default table spacing.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

/**
 * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`
 *    on fieldsets.
 */
fieldset {
  min-width: 0;
  /* [1] */
  border: 0; }

/**
 * More sensible default box-sizing.
 * @see css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
 */
html {
  box-sizing: border-box; }

*, *:before, *:after {
  box-sizing: inherit; }

/**
 * Reset button styles
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  border: 0;
  margin: 0;
  padding: 0;
  font: inherit; }

/**
 * Print.
 * ----------------------------------------------------------------------------
 */
/**
 * Very crude, reset-like styles taken from the HTML5 Boilerplate:
 * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles
 * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282
 */
@media print {
  /**
     * 1. Black prints faster: http://www.sanbeiji.com/archives/953
     **/
  *, *:before, *:after {
    background: transparent !important;
    color: #000 !important;
    /* [1] */
    box-shadow: none !important;
    text-shadow: none !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  /**
   * Don’t show links that are fragment identifiers, or use the `javascript:`
   * pseudo protocol.
   */
  a[href^='#']:after,
  a[href^='javascript:']:after {
    content: ''; }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  /**
   * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables
   */
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

/**
 * Screen Reader Text
 * ----------------------------------------------------------------------------
 */
.screen-reader-text {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important; }

/**
 * Animations.
 * ----------------------------------------------------------------------------
 */
@keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

@keyframes slide-down {
  0% {
    opacity: 0;
    transform: translateY(-15px); }
  100% {
    opacity: 1;
    transform: none; } }

@keyframes slide-up {
  0% {
    opacity: 0;
    transform: translateY(15px); }
  100% {
    opacity: 1;
    transform: translateY(0px); } }

[data-animation] {
  opacity: 0; }
  [data-animation][data-animation-appearing] {
    animation-name: fade-in;
    animation-duration: 0.5s;
    animation-timing-function: ease-in-out;
    animation-fill-mode: forwards; }
    [data-animation][data-animation-appearing][data-animation='slide-down'] {
      animation-name: slide-down; }
    [data-animation][data-animation-appearing][data-animation='slide-up'] {
      animation-name: slide-up; }
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    [data-animation] {
      opacity: 1 !important; } }
  @supports not (display: grid) {
    [data-animation] {
      opacity: 1 !important; } }

@media print, screen and (min-width: 64em) {
  [data-animation][data-animation-delay='100'][data-animation-delay='100'] {
    animation-delay: 0.1s; }
  [data-animation][data-animation-delay='200'][data-animation-delay='200'] {
    animation-delay: 0.2s; }
  [data-animation][data-animation-delay='300'][data-animation-delay='300'] {
    animation-delay: 0.3s; }
  [data-animation][data-animation-delay='400'][data-animation-delay='400'] {
    animation-delay: 0.4s; }
  [data-animation][data-animation-delay='500'][data-animation-delay='500'] {
    animation-delay: 0.5s; }
  [data-animation][data-animation-delay='600'][data-animation-delay='600'] {
    animation-delay: 0.6s; }
  [data-animation][data-animation-delay='700'][data-animation-delay='700'] {
    animation-delay: 0.7s; }
  [data-animation][data-animation-delay='800'][data-animation-delay='800'] {
    animation-delay: 0.8s; }
  [data-animation][data-animation-delay='900'][data-animation-delay='900'] {
    animation-delay: 0.9s; }
  [data-animation][data-animation-delay='1000'][data-animation-delay='1000'] {
    animation-delay: 1s; }
  [data-animation][data-animation-delay='1100'][data-animation-delay='1100'] {
    animation-delay: 1.1s; }
  [data-animation][data-animation-delay='1200'][data-animation-delay='1200'] {
    animation-delay: 1.2s; }
  [data-animation][data-animation-delay='1300'][data-animation-delay='1300'] {
    animation-delay: 1.3s; }
  [data-animation][data-animation-delay='1400'][data-animation-delay='1400'] {
    animation-delay: 1.4s; }
  [data-animation][data-animation-delay='1500'][data-animation-delay='1500'] {
    animation-delay: 1.5s; }
  [data-animation][data-animation-delay='1600'][data-animation-delay='1600'] {
    animation-delay: 1.6s; }
  [data-animation][data-animation-delay='1700'][data-animation-delay='1700'] {
    animation-delay: 1.7s; }
  [data-animation][data-animation-delay='1800'][data-animation-delay='1800'] {
    animation-delay: 1.8s; }
  [data-animation][data-animation-delay='1900'][data-animation-delay='1900'] {
    animation-delay: 1.9s; }
  [data-animation][data-animation-delay='2000'][data-animation-delay='2000'] {
    animation-delay: 2s; }
  [data-animation][data-animation-delay='2100'][data-animation-delay='2100'] {
    animation-delay: 2.1s; }
  [data-animation][data-animation-delay='2200'][data-animation-delay='2200'] {
    animation-delay: 2.2s; }
  [data-animation][data-animation-delay='2300'][data-animation-delay='2300'] {
    animation-delay: 2.3s; }
  [data-animation][data-animation-delay='2400'][data-animation-delay='2400'] {
    animation-delay: 2.4s; }
  [data-animation][data-animation-delay='2500'][data-animation-delay='2500'] {
    animation-delay: 2.5s; }
  [data-animation][data-animation-delay='2600'][data-animation-delay='2600'] {
    animation-delay: 2.6s; }
  [data-animation][data-animation-delay='2700'][data-animation-delay='2700'] {
    animation-delay: 2.7s; }
  [data-animation][data-animation-delay='2800'][data-animation-delay='2800'] {
    animation-delay: 2.8s; }
  [data-animation][data-animation-delay='2900'][data-animation-delay='2900'] {
    animation-delay: 2.9s; }
  [data-animation][data-animation-delay='3000'][data-animation-delay='3000'] {
    animation-delay: 3s; }
  [data-animation][data-animation-delay='3100'][data-animation-delay='3100'] {
    animation-delay: 3.1s; }
  [data-animation][data-animation-delay='3200'][data-animation-delay='3200'] {
    animation-delay: 3.2s; }
  [data-animation][data-animation-delay='3300'][data-animation-delay='3300'] {
    animation-delay: 3.3s; }
  [data-animation][data-animation-delay='3400'][data-animation-delay='3400'] {
    animation-delay: 3.4s; }
  [data-animation][data-animation-delay='3500'][data-animation-delay='3500'] {
    animation-delay: 3.5s; }
  [data-animation][data-animation-delay='3600'][data-animation-delay='3600'] {
    animation-delay: 3.6s; }
  [data-animation][data-animation-delay='3700'][data-animation-delay='3700'] {
    animation-delay: 3.7s; }
  [data-animation][data-animation-delay='3800'][data-animation-delay='3800'] {
    animation-delay: 3.8s; }
  [data-animation][data-animation-delay='3900'][data-animation-delay='3900'] {
    animation-delay: 3.9s; }
  [data-animation][data-animation-delay='4000'][data-animation-delay='4000'] {
    animation-delay: 4s; } }

@media (prefers-reduced-motion: reduce) {
  [data-animation] {
    animation-duration: 0.001s !important;
    animation-delay: 0.001s !important; } }

/**
 * Custom fonts
 * ----------------------------------------------------------------------------
 */
/**
 * WordPress-specific styles.
 * ----------------------------------------------------------------------------
 */
.alignnone {
  margin: 5px 20px 20px 0; }

.aligncenter,
div.aligncenter {
  display: block;
  margin: 5px auto 5px auto; }

.alignright {
  float: right;
  margin: 5px 0 20px 20px; }

.alignleft {
  float: left;
  margin: 5px 20px 20px 0; }

a img.alignright {
  float: right;
  margin: 5px 0 20px 20px; }

a img.alignnone {
  margin: 5px 20px 20px 0; }

a img.alignleft {
  float: left;
  margin: 5px 20px 20px 0; }

a img.aligncenter {
  display: block;
  margin-left: auto;
  margin-right: auto; }

.wp-caption {
  background: #fff;
  border: 1px solid #f0f0f0;
  max-width: 96%;
  /* Image does not overflow the content area */
  padding: 5px 3px 10px;
  text-align: center; }

.wp-caption.alignnone {
  margin: 5px 20px 20px 0; }

.wp-caption.alignleft {
  margin: 5px 20px 20px 0; }

.wp-caption.alignright {
  margin: 5px 0 20px 20px; }

.wp-caption img {
  border: 0 none;
  height: auto;
  margin: 0;
  max-width: 98.5%;
  padding: 0;
  width: auto; }

.wp-caption p.wp-caption-text {
  font-size: 11px;
  line-height: 17px;
  margin: 0;
  padding: 0 4px 5px; }

.gallery {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
  margin-bottom: calc(1.5 * 1rem); }

.gallery-item {
  display: inline-block;
  margin-right: 16px;
  margin-bottom: 16px;
  text-align: center;
  vertical-align: top;
  width: 100%; }

.gallery-columns-2 .gallery-item {
  max-width: calc((100% - 16px * 1) / 2); }

.gallery-columns-2 .gallery-item:nth-of-type(2n + 2) {
  margin-right: 0; }

.gallery-columns-3 .gallery-item {
  max-width: calc((100% - 16px * 2) / 3); }

.gallery-columns-3 .gallery-item:nth-of-type(3n + 3) {
  margin-right: 0; }

.gallery-columns-4 .gallery-item {
  max-width: calc((100% - 16px * 3) / 4); }

.gallery-columns-4 .gallery-item:nth-of-type(4n + 4) {
  margin-right: 0; }

.gallery-columns-5 .gallery-item {
  max-width: calc((100% - 16px * 4) / 5); }

.gallery-columns-5 .gallery-item:nth-of-type(5n + 5) {
  margin-right: 0; }

.gallery-columns-6 .gallery-item {
  max-width: calc((100% - 16px * 5) / 6); }

.gallery-columns-6 .gallery-item:nth-of-type(6n + 6) {
  margin-right: 0; }

.gallery-columns-7 .gallery-item {
  max-width: calc((100% - 16px * 6) / 7); }

.gallery-columns-7 .gallery-item:nth-of-type(7n + 7) {
  margin-right: 0; }

.gallery-columns-8 .gallery-item {
  max-width: calc((100% - 16px * 7) / 8); }

.gallery-columns-8 .gallery-item:nth-of-type(8n + 8) {
  margin-right: 0; }

.gallery-columns-9 .gallery-item {
  max-width: calc((100% - 16px * 8) / 9); }

.gallery-columns-9 .gallery-item:nth-of-type(9n + 9) {
  margin-right: 0; }

.gallery-item:last-of-type {
  padding-right: 0; }

.gallery-caption {
  display: block;
  padding: 0.5rem; }

.gallery-item > div > a {
  display: block; }

@media screen and (max-width: 600px) {
  #wpadminbar {
    position: fixed; } }

/**
 * Global styles and elements used throughout the site.
 * ----------------------------------------------------------------------------
 */
::-moz-selection {
  background: #000000;
  color: #FFFFFF; }

::selection {
  background: #000000;
  color: #FFFFFF; }

html {
  overflow-y: scroll;
  min-height: 100%; }

body.nav-is-open {
  overflow: hidden;
  max-height: 100vh; }
  @media print, screen and (min-width: 40em) {
    body.nav-is-open {
      overflow: auto;
      max-height: 100%; } }

a {
  transition: all 0.5s ease-in-out;
  text-decoration: none;
  font-weight: 700; }
  a:hover {
    text-decoration: underline; }

p:last-child {
  margin-bottom: 0; }

form {
  margin-bottom: 0; }

.video-container {
  position: relative;
  padding-top: 25px;
  padding-bottom: 56.25%;
  height: 0;
  opacity: 0;
  transition: opacity 0.5s ease-in-out; }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; }
  .video-container.active {
    opacity: 1; }

img {
  max-width: 100%;
  height: auto;
  display: inline-block; }
  img.image--circulair {
    border-radius: 50%; }

picture {
  display: inline-block; }

.link--full {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 99; }

@media print, screen and (max-width: 39.99875em) {
  .small-margin {
    margin: 10px auto; } }

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

.flex {
  display: flex; }

.edit-link {
  display: none; }

@media print, screen and (min-width: 40em) {
  .cell__content--left {
    order: 1; }
  .cell__content--right {
    order: 2; } }

.full-width-block {
  min-width: 99.125vw;
  margin-left: -49.59vw;
  left: 50%;
  position: relative;
  max-width: 100%; }
  body.no-scroll-bar .full-width-block {
    min-width: 100vw;
    margin-left: -50vw; }

.wrap__words {
  overflow-wrap: break-word;
  word-wrap: break-word;
  -ms-word-break: break-all;
  word-break: break-word; }

.grid-distance {
  margin-top: 25px;
  margin-bottom: 25px; }

.small-margin {
  margin-bottom: 25px; }

.hidden {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden; }

/**
 * Typography
 * ----------------------------------------------------------------------------
 */
body {
  font-family: "Quicksand", "Helvetica", sans-serif;
  font-size: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-weight: 500;
  line-height: 1.45; }

h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: "Quicksand", "Helvetica", sans-serif;
  margin: 2.75rem 0 1rem;
  font-weight: 700;
  line-height: 1.05; }

/*
 * Sizes based on type-scale: Major Third
 * With some small changes
 * https://type-scale.com/
 */
h1,
.h1 {
  font-size: 2.25rem; }
  @media print, screen and (min-width: 40em) {
    h1,
    .h1 {
      font-size: 3rem; } }

h2,
.h2 {
  font-size: 1.875rem; }
  @media print, screen and (min-width: 40em) {
    h2,
    .h2 {
      font-size: 2.4375rem; } }

h3,
.h3 {
  font-size: 1.5rem; }
  @media print, screen and (min-width: 40em) {
    h3,
    .h3 {
      font-size: 1.875rem; } }

h4,
.h4 {
  font-size: 1.25rem; }
  @media print, screen and (min-width: 40em) {
    h4,
    .h4 {
      font-size: 1.5rem; } }

h5,
.h5 {
  font-size: 1.125rem; }
  @media print, screen and (min-width: 40em) {
    h5,
    .h5 {
      font-size: 1.25rem; } }

h6,
.h6 {
  font-size: 1rem; }
  @media print, screen and (min-width: 40em) {
    h6,
    .h6 {
      font-size: 1rem; } }

p {
  line-height: 1.45;
  margin-bottom: 1rem;
  font-weight: 500;
  max-width: 49.375rem; }
  .entry__content p,
  .wp-block p {
    margin: 0 auto 1rem; }
  p:last-child {
    margin-bottom: 0; }

.wp-block-image {
  margin: 0 auto;
  max-width: 49.375rem; }

ul,
ol {
  margin: 0 0 1rem 1rem; }
  .entry__content ul,
  .wp-block ul, .entry__content
  ol,
  .wp-block
  ol {
    margin: 0 auto 1rem;
    max-width: 49.375rem; }
    .entry__content ul li,
    .wp-block ul li, .entry__content
    ol li,
    .wp-block
    ol li {
      margin-left: 20px; }

blockquote p:before {
  content: '“'; }

blockquote p:after {
  content: '”'; }

blockquote cite {
  color: #646464; }

small,
.text_small {
  font-size: 0.8rem; }

.lowercase {
  text-transform: lowercase; }

/* Foundation; The XY Grid is included by default; Documentation at <http://foundation.zurb.com/sites/docs/> */
/**
 * Foundation for Sites
 * Version 6.7.5
 * https://get.foundation
 * Licensed under MIT Open Source
 */
.grid-container {
  padding-right: 0.9375rem;
  padding-left: 0.9375rem;
  max-width: 76.875rem;
  margin-left: auto;
  margin-right: auto; }
  .grid-container.fluid {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto; }
  .grid-container.full {
    padding-right: 0;
    padding-left: 0;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto; }

.grid-x {
  display: flex;
  flex-flow: row wrap; }

.cell {
  flex: 0 0 auto;
  min-height: 0;
  min-width: 0;
  width: 100%; }
  .cell.auto {
    flex: 1 1 0; }
  .cell.shrink {
    flex: 0 0 auto; }

.grid-x > .auto {
  width: auto; }

.grid-x > .shrink {
  width: auto; }

.grid-x > .small-shrink, .grid-x > .small-full, .grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 {
  flex-basis: auto; }

@media print, screen and (min-width: 40em) {
  .grid-x > .medium-shrink, .grid-x > .medium-full, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 {
    flex-basis: auto; } }

@media print, screen and (min-width: 64em) {
  .grid-x > .large-shrink, .grid-x > .large-full, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 {
    flex-basis: auto; } }

@media screen and (min-width: 75em) {
  .grid-x > .xlarge-shrink, .grid-x > .xlarge-full, .grid-x > .xlarge-1, .grid-x > .xlarge-2, .grid-x > .xlarge-3, .grid-x > .xlarge-4, .grid-x > .xlarge-5, .grid-x > .xlarge-6, .grid-x > .xlarge-7, .grid-x > .xlarge-8, .grid-x > .xlarge-9, .grid-x > .xlarge-10, .grid-x > .xlarge-11, .grid-x > .xlarge-12 {
    flex-basis: auto; } }

.grid-x > .small-1, .grid-x > .small-2, .grid-x > .small-3, .grid-x > .small-4, .grid-x > .small-5, .grid-x > .small-6, .grid-x > .small-7, .grid-x > .small-8, .grid-x > .small-9, .grid-x > .small-10, .grid-x > .small-11, .grid-x > .small-12 {
  flex: 0 0 auto; }

.grid-x > .small-1 {
  width: 8.33333%; }

.grid-x > .small-2 {
  width: 16.66667%; }

.grid-x > .small-3 {
  width: 25%; }

.grid-x > .small-4 {
  width: 33.33333%; }

.grid-x > .small-5 {
  width: 41.66667%; }

.grid-x > .small-6 {
  width: 50%; }

.grid-x > .small-7 {
  width: 58.33333%; }

.grid-x > .small-8 {
  width: 66.66667%; }

.grid-x > .small-9 {
  width: 75%; }

.grid-x > .small-10 {
  width: 83.33333%; }

.grid-x > .small-11 {
  width: 91.66667%; }

.grid-x > .small-12 {
  width: 100%; }

@media print, screen and (min-width: 40em) {
  .grid-x > .medium-auto {
    flex: 1 1 0;
    width: auto; }
  .grid-x > .medium-shrink, .grid-x > .medium-1, .grid-x > .medium-2, .grid-x > .medium-3, .grid-x > .medium-4, .grid-x > .medium-5, .grid-x > .medium-6, .grid-x > .medium-7, .grid-x > .medium-8, .grid-x > .medium-9, .grid-x > .medium-10, .grid-x > .medium-11, .grid-x > .medium-12 {
    flex: 0 0 auto; }
  .grid-x > .medium-shrink {
    width: auto; }
  .grid-x > .medium-1 {
    width: 8.33333%; }
  .grid-x > .medium-2 {
    width: 16.66667%; }
  .grid-x > .medium-3 {
    width: 25%; }
  .grid-x > .medium-4 {
    width: 33.33333%; }
  .grid-x > .medium-5 {
    width: 41.66667%; }
  .grid-x > .medium-6 {
    width: 50%; }
  .grid-x > .medium-7 {
    width: 58.33333%; }
  .grid-x > .medium-8 {
    width: 66.66667%; }
  .grid-x > .medium-9 {
    width: 75%; }
  .grid-x > .medium-10 {
    width: 83.33333%; }
  .grid-x > .medium-11 {
    width: 91.66667%; }
  .grid-x > .medium-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .grid-x > .large-auto {
    flex: 1 1 0;
    width: auto; }
  .grid-x > .large-shrink, .grid-x > .large-1, .grid-x > .large-2, .grid-x > .large-3, .grid-x > .large-4, .grid-x > .large-5, .grid-x > .large-6, .grid-x > .large-7, .grid-x > .large-8, .grid-x > .large-9, .grid-x > .large-10, .grid-x > .large-11, .grid-x > .large-12 {
    flex: 0 0 auto; }
  .grid-x > .large-shrink {
    width: auto; }
  .grid-x > .large-1 {
    width: 8.33333%; }
  .grid-x > .large-2 {
    width: 16.66667%; }
  .grid-x > .large-3 {
    width: 25%; }
  .grid-x > .large-4 {
    width: 33.33333%; }
  .grid-x > .large-5 {
    width: 41.66667%; }
  .grid-x > .large-6 {
    width: 50%; }
  .grid-x > .large-7 {
    width: 58.33333%; }
  .grid-x > .large-8 {
    width: 66.66667%; }
  .grid-x > .large-9 {
    width: 75%; }
  .grid-x > .large-10 {
    width: 83.33333%; }
  .grid-x > .large-11 {
    width: 91.66667%; }
  .grid-x > .large-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .grid-x > .xlarge-auto {
    flex: 1 1 0;
    width: auto; }
  .grid-x > .xlarge-shrink, .grid-x > .xlarge-1, .grid-x > .xlarge-2, .grid-x > .xlarge-3, .grid-x > .xlarge-4, .grid-x > .xlarge-5, .grid-x > .xlarge-6, .grid-x > .xlarge-7, .grid-x > .xlarge-8, .grid-x > .xlarge-9, .grid-x > .xlarge-10, .grid-x > .xlarge-11, .grid-x > .xlarge-12 {
    flex: 0 0 auto; }
  .grid-x > .xlarge-shrink {
    width: auto; }
  .grid-x > .xlarge-1 {
    width: 8.33333%; }
  .grid-x > .xlarge-2 {
    width: 16.66667%; }
  .grid-x > .xlarge-3 {
    width: 25%; }
  .grid-x > .xlarge-4 {
    width: 33.33333%; }
  .grid-x > .xlarge-5 {
    width: 41.66667%; }
  .grid-x > .xlarge-6 {
    width: 50%; }
  .grid-x > .xlarge-7 {
    width: 58.33333%; }
  .grid-x > .xlarge-8 {
    width: 66.66667%; }
  .grid-x > .xlarge-9 {
    width: 75%; }
  .grid-x > .xlarge-10 {
    width: 83.33333%; }
  .grid-x > .xlarge-11 {
    width: 91.66667%; }
  .grid-x > .xlarge-12 {
    width: 100%; } }

.grid-margin-x:not(.grid-x) > .cell {
  width: auto; }

.grid-margin-y:not(.grid-y) > .cell {
  height: auto; }

.grid-margin-x {
  margin-left: -0.9375rem;
  margin-right: -0.9375rem; }
  .grid-margin-x > .cell {
    width: calc(100% - 1.875rem);
    margin-left: 0.9375rem;
    margin-right: 0.9375rem; }
  .grid-margin-x > .auto {
    width: auto; }
  .grid-margin-x > .shrink {
    width: auto; }
  .grid-margin-x > .small-1 {
    width: calc(8.33333% - 1.875rem); }
  .grid-margin-x > .small-2 {
    width: calc(16.66667% - 1.875rem); }
  .grid-margin-x > .small-3 {
    width: calc(25% - 1.875rem); }
  .grid-margin-x > .small-4 {
    width: calc(33.33333% - 1.875rem); }
  .grid-margin-x > .small-5 {
    width: calc(41.66667% - 1.875rem); }
  .grid-margin-x > .small-6 {
    width: calc(50% - 1.875rem); }
  .grid-margin-x > .small-7 {
    width: calc(58.33333% - 1.875rem); }
  .grid-margin-x > .small-8 {
    width: calc(66.66667% - 1.875rem); }
  .grid-margin-x > .small-9 {
    width: calc(75% - 1.875rem); }
  .grid-margin-x > .small-10 {
    width: calc(83.33333% - 1.875rem); }
  .grid-margin-x > .small-11 {
    width: calc(91.66667% - 1.875rem); }
  .grid-margin-x > .small-12 {
    width: calc(100% - 1.875rem); }
  @media print, screen and (min-width: 40em) {
    .grid-margin-x > .medium-auto {
      width: auto; }
    .grid-margin-x > .medium-shrink {
      width: auto; }
    .grid-margin-x > .medium-1 {
      width: calc(8.33333% - 1.875rem); }
    .grid-margin-x > .medium-2 {
      width: calc(16.66667% - 1.875rem); }
    .grid-margin-x > .medium-3 {
      width: calc(25% - 1.875rem); }
    .grid-margin-x > .medium-4 {
      width: calc(33.33333% - 1.875rem); }
    .grid-margin-x > .medium-5 {
      width: calc(41.66667% - 1.875rem); }
    .grid-margin-x > .medium-6 {
      width: calc(50% - 1.875rem); }
    .grid-margin-x > .medium-7 {
      width: calc(58.33333% - 1.875rem); }
    .grid-margin-x > .medium-8 {
      width: calc(66.66667% - 1.875rem); }
    .grid-margin-x > .medium-9 {
      width: calc(75% - 1.875rem); }
    .grid-margin-x > .medium-10 {
      width: calc(83.33333% - 1.875rem); }
    .grid-margin-x > .medium-11 {
      width: calc(91.66667% - 1.875rem); }
    .grid-margin-x > .medium-12 {
      width: calc(100% - 1.875rem); } }
  @media print, screen and (min-width: 64em) {
    .grid-margin-x > .large-auto {
      width: auto; }
    .grid-margin-x > .large-shrink {
      width: auto; }
    .grid-margin-x > .large-1 {
      width: calc(8.33333% - 1.875rem); }
    .grid-margin-x > .large-2 {
      width: calc(16.66667% - 1.875rem); }
    .grid-margin-x > .large-3 {
      width: calc(25% - 1.875rem); }
    .grid-margin-x > .large-4 {
      width: calc(33.33333% - 1.875rem); }
    .grid-margin-x > .large-5 {
      width: calc(41.66667% - 1.875rem); }
    .grid-margin-x > .large-6 {
      width: calc(50% - 1.875rem); }
    .grid-margin-x > .large-7 {
      width: calc(58.33333% - 1.875rem); }
    .grid-margin-x > .large-8 {
      width: calc(66.66667% - 1.875rem); }
    .grid-margin-x > .large-9 {
      width: calc(75% - 1.875rem); }
    .grid-margin-x > .large-10 {
      width: calc(83.33333% - 1.875rem); }
    .grid-margin-x > .large-11 {
      width: calc(91.66667% - 1.875rem); }
    .grid-margin-x > .large-12 {
      width: calc(100% - 1.875rem); } }
  @media screen and (min-width: 75em) {
    .grid-margin-x > .xlarge-auto {
      width: auto; }
    .grid-margin-x > .xlarge-shrink {
      width: auto; }
    .grid-margin-x > .xlarge-1 {
      width: calc(8.33333% - 1.875rem); }
    .grid-margin-x > .xlarge-2 {
      width: calc(16.66667% - 1.875rem); }
    .grid-margin-x > .xlarge-3 {
      width: calc(25% - 1.875rem); }
    .grid-margin-x > .xlarge-4 {
      width: calc(33.33333% - 1.875rem); }
    .grid-margin-x > .xlarge-5 {
      width: calc(41.66667% - 1.875rem); }
    .grid-margin-x > .xlarge-6 {
      width: calc(50% - 1.875rem); }
    .grid-margin-x > .xlarge-7 {
      width: calc(58.33333% - 1.875rem); }
    .grid-margin-x > .xlarge-8 {
      width: calc(66.66667% - 1.875rem); }
    .grid-margin-x > .xlarge-9 {
      width: calc(75% - 1.875rem); }
    .grid-margin-x > .xlarge-10 {
      width: calc(83.33333% - 1.875rem); }
    .grid-margin-x > .xlarge-11 {
      width: calc(91.66667% - 1.875rem); }
    .grid-margin-x > .xlarge-12 {
      width: calc(100% - 1.875rem); } }

.grid-padding-x .grid-padding-x {
  margin-right: -0.9375rem;
  margin-left: -0.9375rem; }

.grid-container:not(.full) > .grid-padding-x {
  margin-right: -0.9375rem;
  margin-left: -0.9375rem; }

.grid-padding-x > .cell {
  padding-right: 0.9375rem;
  padding-left: 0.9375rem; }

.small-up-1 > .cell {
  width: 100%; }

.small-up-2 > .cell {
  width: 50%; }

.small-up-3 > .cell {
  width: 33.33333%; }

.small-up-4 > .cell {
  width: 25%; }

.small-up-5 > .cell {
  width: 20%; }

.small-up-6 > .cell {
  width: 16.66667%; }

.small-up-7 > .cell {
  width: 14.28571%; }

.small-up-8 > .cell {
  width: 12.5%; }

@media print, screen and (min-width: 40em) {
  .medium-up-1 > .cell {
    width: 100%; }
  .medium-up-2 > .cell {
    width: 50%; }
  .medium-up-3 > .cell {
    width: 33.33333%; }
  .medium-up-4 > .cell {
    width: 25%; }
  .medium-up-5 > .cell {
    width: 20%; }
  .medium-up-6 > .cell {
    width: 16.66667%; }
  .medium-up-7 > .cell {
    width: 14.28571%; }
  .medium-up-8 > .cell {
    width: 12.5%; } }

@media print, screen and (min-width: 64em) {
  .large-up-1 > .cell {
    width: 100%; }
  .large-up-2 > .cell {
    width: 50%; }
  .large-up-3 > .cell {
    width: 33.33333%; }
  .large-up-4 > .cell {
    width: 25%; }
  .large-up-5 > .cell {
    width: 20%; }
  .large-up-6 > .cell {
    width: 16.66667%; }
  .large-up-7 > .cell {
    width: 14.28571%; }
  .large-up-8 > .cell {
    width: 12.5%; } }

@media screen and (min-width: 75em) {
  .xlarge-up-1 > .cell {
    width: 100%; }
  .xlarge-up-2 > .cell {
    width: 50%; }
  .xlarge-up-3 > .cell {
    width: 33.33333%; }
  .xlarge-up-4 > .cell {
    width: 25%; }
  .xlarge-up-5 > .cell {
    width: 20%; }
  .xlarge-up-6 > .cell {
    width: 16.66667%; }
  .xlarge-up-7 > .cell {
    width: 14.28571%; }
  .xlarge-up-8 > .cell {
    width: 12.5%; } }

.grid-margin-x.small-up-1 > .cell {
  width: calc(100% - 1.875rem); }

.grid-margin-x.small-up-2 > .cell {
  width: calc(50% - 1.875rem); }

.grid-margin-x.small-up-3 > .cell {
  width: calc(33.33333% - 1.875rem); }

.grid-margin-x.small-up-4 > .cell {
  width: calc(25% - 1.875rem); }

.grid-margin-x.small-up-5 > .cell {
  width: calc(20% - 1.875rem); }

.grid-margin-x.small-up-6 > .cell {
  width: calc(16.66667% - 1.875rem); }

.grid-margin-x.small-up-7 > .cell {
  width: calc(14.28571% - 1.875rem); }

.grid-margin-x.small-up-8 > .cell {
  width: calc(12.5% - 1.875rem); }

@media print, screen and (min-width: 40em) {
  .grid-margin-x.medium-up-1 > .cell {
    width: calc(100% - 1.875rem); }
  .grid-margin-x.medium-up-2 > .cell {
    width: calc(50% - 1.875rem); }
  .grid-margin-x.medium-up-3 > .cell {
    width: calc(33.33333% - 1.875rem); }
  .grid-margin-x.medium-up-4 > .cell {
    width: calc(25% - 1.875rem); }
  .grid-margin-x.medium-up-5 > .cell {
    width: calc(20% - 1.875rem); }
  .grid-margin-x.medium-up-6 > .cell {
    width: calc(16.66667% - 1.875rem); }
  .grid-margin-x.medium-up-7 > .cell {
    width: calc(14.28571% - 1.875rem); }
  .grid-margin-x.medium-up-8 > .cell {
    width: calc(12.5% - 1.875rem); } }

@media print, screen and (min-width: 64em) {
  .grid-margin-x.large-up-1 > .cell {
    width: calc(100% - 1.875rem); }
  .grid-margin-x.large-up-2 > .cell {
    width: calc(50% - 1.875rem); }
  .grid-margin-x.large-up-3 > .cell {
    width: calc(33.33333% - 1.875rem); }
  .grid-margin-x.large-up-4 > .cell {
    width: calc(25% - 1.875rem); }
  .grid-margin-x.large-up-5 > .cell {
    width: calc(20% - 1.875rem); }
  .grid-margin-x.large-up-6 > .cell {
    width: calc(16.66667% - 1.875rem); }
  .grid-margin-x.large-up-7 > .cell {
    width: calc(14.28571% - 1.875rem); }
  .grid-margin-x.large-up-8 > .cell {
    width: calc(12.5% - 1.875rem); } }

@media screen and (min-width: 75em) {
  .grid-margin-x.xlarge-up-1 > .cell {
    width: calc(100% - 1.875rem); }
  .grid-margin-x.xlarge-up-2 > .cell {
    width: calc(50% - 1.875rem); }
  .grid-margin-x.xlarge-up-3 > .cell {
    width: calc(33.33333% - 1.875rem); }
  .grid-margin-x.xlarge-up-4 > .cell {
    width: calc(25% - 1.875rem); }
  .grid-margin-x.xlarge-up-5 > .cell {
    width: calc(20% - 1.875rem); }
  .grid-margin-x.xlarge-up-6 > .cell {
    width: calc(16.66667% - 1.875rem); }
  .grid-margin-x.xlarge-up-7 > .cell {
    width: calc(14.28571% - 1.875rem); }
  .grid-margin-x.xlarge-up-8 > .cell {
    width: calc(12.5% - 1.875rem); } }

.small-margin-collapse {
  margin-right: 0;
  margin-left: 0; }
  .small-margin-collapse > .cell {
    margin-right: 0;
    margin-left: 0; }
  .small-margin-collapse > .small-1 {
    width: 8.33333%; }
  .small-margin-collapse > .small-2 {
    width: 16.66667%; }
  .small-margin-collapse > .small-3 {
    width: 25%; }
  .small-margin-collapse > .small-4 {
    width: 33.33333%; }
  .small-margin-collapse > .small-5 {
    width: 41.66667%; }
  .small-margin-collapse > .small-6 {
    width: 50%; }
  .small-margin-collapse > .small-7 {
    width: 58.33333%; }
  .small-margin-collapse > .small-8 {
    width: 66.66667%; }
  .small-margin-collapse > .small-9 {
    width: 75%; }
  .small-margin-collapse > .small-10 {
    width: 83.33333%; }
  .small-margin-collapse > .small-11 {
    width: 91.66667%; }
  .small-margin-collapse > .small-12 {
    width: 100%; }
  @media print, screen and (min-width: 40em) {
    .small-margin-collapse > .medium-1 {
      width: 8.33333%; }
    .small-margin-collapse > .medium-2 {
      width: 16.66667%; }
    .small-margin-collapse > .medium-3 {
      width: 25%; }
    .small-margin-collapse > .medium-4 {
      width: 33.33333%; }
    .small-margin-collapse > .medium-5 {
      width: 41.66667%; }
    .small-margin-collapse > .medium-6 {
      width: 50%; }
    .small-margin-collapse > .medium-7 {
      width: 58.33333%; }
    .small-margin-collapse > .medium-8 {
      width: 66.66667%; }
    .small-margin-collapse > .medium-9 {
      width: 75%; }
    .small-margin-collapse > .medium-10 {
      width: 83.33333%; }
    .small-margin-collapse > .medium-11 {
      width: 91.66667%; }
    .small-margin-collapse > .medium-12 {
      width: 100%; } }
  @media print, screen and (min-width: 64em) {
    .small-margin-collapse > .large-1 {
      width: 8.33333%; }
    .small-margin-collapse > .large-2 {
      width: 16.66667%; }
    .small-margin-collapse > .large-3 {
      width: 25%; }
    .small-margin-collapse > .large-4 {
      width: 33.33333%; }
    .small-margin-collapse > .large-5 {
      width: 41.66667%; }
    .small-margin-collapse > .large-6 {
      width: 50%; }
    .small-margin-collapse > .large-7 {
      width: 58.33333%; }
    .small-margin-collapse > .large-8 {
      width: 66.66667%; }
    .small-margin-collapse > .large-9 {
      width: 75%; }
    .small-margin-collapse > .large-10 {
      width: 83.33333%; }
    .small-margin-collapse > .large-11 {
      width: 91.66667%; }
    .small-margin-collapse > .large-12 {
      width: 100%; } }
  @media screen and (min-width: 75em) {
    .small-margin-collapse > .xlarge-1 {
      width: 8.33333%; }
    .small-margin-collapse > .xlarge-2 {
      width: 16.66667%; }
    .small-margin-collapse > .xlarge-3 {
      width: 25%; }
    .small-margin-collapse > .xlarge-4 {
      width: 33.33333%; }
    .small-margin-collapse > .xlarge-5 {
      width: 41.66667%; }
    .small-margin-collapse > .xlarge-6 {
      width: 50%; }
    .small-margin-collapse > .xlarge-7 {
      width: 58.33333%; }
    .small-margin-collapse > .xlarge-8 {
      width: 66.66667%; }
    .small-margin-collapse > .xlarge-9 {
      width: 75%; }
    .small-margin-collapse > .xlarge-10 {
      width: 83.33333%; }
    .small-margin-collapse > .xlarge-11 {
      width: 91.66667%; }
    .small-margin-collapse > .xlarge-12 {
      width: 100%; } }

.small-padding-collapse {
  margin-right: 0;
  margin-left: 0; }
  .small-padding-collapse > .cell {
    padding-right: 0;
    padding-left: 0; }

@media print, screen and (min-width: 40em) {
  .medium-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .medium-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; } }

@media print, screen and (min-width: 40em) {
  .medium-margin-collapse > .small-1 {
    width: 8.33333%; }
  .medium-margin-collapse > .small-2 {
    width: 16.66667%; }
  .medium-margin-collapse > .small-3 {
    width: 25%; }
  .medium-margin-collapse > .small-4 {
    width: 33.33333%; }
  .medium-margin-collapse > .small-5 {
    width: 41.66667%; }
  .medium-margin-collapse > .small-6 {
    width: 50%; }
  .medium-margin-collapse > .small-7 {
    width: 58.33333%; }
  .medium-margin-collapse > .small-8 {
    width: 66.66667%; }
  .medium-margin-collapse > .small-9 {
    width: 75%; }
  .medium-margin-collapse > .small-10 {
    width: 83.33333%; }
  .medium-margin-collapse > .small-11 {
    width: 91.66667%; }
  .medium-margin-collapse > .small-12 {
    width: 100%; } }

@media print, screen and (min-width: 40em) {
  .medium-margin-collapse > .medium-1 {
    width: 8.33333%; }
  .medium-margin-collapse > .medium-2 {
    width: 16.66667%; }
  .medium-margin-collapse > .medium-3 {
    width: 25%; }
  .medium-margin-collapse > .medium-4 {
    width: 33.33333%; }
  .medium-margin-collapse > .medium-5 {
    width: 41.66667%; }
  .medium-margin-collapse > .medium-6 {
    width: 50%; }
  .medium-margin-collapse > .medium-7 {
    width: 58.33333%; }
  .medium-margin-collapse > .medium-8 {
    width: 66.66667%; }
  .medium-margin-collapse > .medium-9 {
    width: 75%; }
  .medium-margin-collapse > .medium-10 {
    width: 83.33333%; }
  .medium-margin-collapse > .medium-11 {
    width: 91.66667%; }
  .medium-margin-collapse > .medium-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .medium-margin-collapse > .large-1 {
    width: 8.33333%; }
  .medium-margin-collapse > .large-2 {
    width: 16.66667%; }
  .medium-margin-collapse > .large-3 {
    width: 25%; }
  .medium-margin-collapse > .large-4 {
    width: 33.33333%; }
  .medium-margin-collapse > .large-5 {
    width: 41.66667%; }
  .medium-margin-collapse > .large-6 {
    width: 50%; }
  .medium-margin-collapse > .large-7 {
    width: 58.33333%; }
  .medium-margin-collapse > .large-8 {
    width: 66.66667%; }
  .medium-margin-collapse > .large-9 {
    width: 75%; }
  .medium-margin-collapse > .large-10 {
    width: 83.33333%; }
  .medium-margin-collapse > .large-11 {
    width: 91.66667%; }
  .medium-margin-collapse > .large-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .medium-margin-collapse > .xlarge-1 {
    width: 8.33333%; }
  .medium-margin-collapse > .xlarge-2 {
    width: 16.66667%; }
  .medium-margin-collapse > .xlarge-3 {
    width: 25%; }
  .medium-margin-collapse > .xlarge-4 {
    width: 33.33333%; }
  .medium-margin-collapse > .xlarge-5 {
    width: 41.66667%; }
  .medium-margin-collapse > .xlarge-6 {
    width: 50%; }
  .medium-margin-collapse > .xlarge-7 {
    width: 58.33333%; }
  .medium-margin-collapse > .xlarge-8 {
    width: 66.66667%; }
  .medium-margin-collapse > .xlarge-9 {
    width: 75%; }
  .medium-margin-collapse > .xlarge-10 {
    width: 83.33333%; }
  .medium-margin-collapse > .xlarge-11 {
    width: 91.66667%; }
  .medium-margin-collapse > .xlarge-12 {
    width: 100%; } }

@media print, screen and (min-width: 40em) {
  .medium-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .medium-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

@media print, screen and (min-width: 64em) {
  .large-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .large-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; } }

@media print, screen and (min-width: 64em) {
  .large-margin-collapse > .small-1 {
    width: 8.33333%; }
  .large-margin-collapse > .small-2 {
    width: 16.66667%; }
  .large-margin-collapse > .small-3 {
    width: 25%; }
  .large-margin-collapse > .small-4 {
    width: 33.33333%; }
  .large-margin-collapse > .small-5 {
    width: 41.66667%; }
  .large-margin-collapse > .small-6 {
    width: 50%; }
  .large-margin-collapse > .small-7 {
    width: 58.33333%; }
  .large-margin-collapse > .small-8 {
    width: 66.66667%; }
  .large-margin-collapse > .small-9 {
    width: 75%; }
  .large-margin-collapse > .small-10 {
    width: 83.33333%; }
  .large-margin-collapse > .small-11 {
    width: 91.66667%; }
  .large-margin-collapse > .small-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .large-margin-collapse > .medium-1 {
    width: 8.33333%; }
  .large-margin-collapse > .medium-2 {
    width: 16.66667%; }
  .large-margin-collapse > .medium-3 {
    width: 25%; }
  .large-margin-collapse > .medium-4 {
    width: 33.33333%; }
  .large-margin-collapse > .medium-5 {
    width: 41.66667%; }
  .large-margin-collapse > .medium-6 {
    width: 50%; }
  .large-margin-collapse > .medium-7 {
    width: 58.33333%; }
  .large-margin-collapse > .medium-8 {
    width: 66.66667%; }
  .large-margin-collapse > .medium-9 {
    width: 75%; }
  .large-margin-collapse > .medium-10 {
    width: 83.33333%; }
  .large-margin-collapse > .medium-11 {
    width: 91.66667%; }
  .large-margin-collapse > .medium-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .large-margin-collapse > .large-1 {
    width: 8.33333%; }
  .large-margin-collapse > .large-2 {
    width: 16.66667%; }
  .large-margin-collapse > .large-3 {
    width: 25%; }
  .large-margin-collapse > .large-4 {
    width: 33.33333%; }
  .large-margin-collapse > .large-5 {
    width: 41.66667%; }
  .large-margin-collapse > .large-6 {
    width: 50%; }
  .large-margin-collapse > .large-7 {
    width: 58.33333%; }
  .large-margin-collapse > .large-8 {
    width: 66.66667%; }
  .large-margin-collapse > .large-9 {
    width: 75%; }
  .large-margin-collapse > .large-10 {
    width: 83.33333%; }
  .large-margin-collapse > .large-11 {
    width: 91.66667%; }
  .large-margin-collapse > .large-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .large-margin-collapse > .xlarge-1 {
    width: 8.33333%; }
  .large-margin-collapse > .xlarge-2 {
    width: 16.66667%; }
  .large-margin-collapse > .xlarge-3 {
    width: 25%; }
  .large-margin-collapse > .xlarge-4 {
    width: 33.33333%; }
  .large-margin-collapse > .xlarge-5 {
    width: 41.66667%; }
  .large-margin-collapse > .xlarge-6 {
    width: 50%; }
  .large-margin-collapse > .xlarge-7 {
    width: 58.33333%; }
  .large-margin-collapse > .xlarge-8 {
    width: 66.66667%; }
  .large-margin-collapse > .xlarge-9 {
    width: 75%; }
  .large-margin-collapse > .xlarge-10 {
    width: 83.33333%; }
  .large-margin-collapse > .xlarge-11 {
    width: 91.66667%; }
  .large-margin-collapse > .xlarge-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .large-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .large-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xlarge-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse > .small-1 {
    width: 8.33333%; }
  .xlarge-margin-collapse > .small-2 {
    width: 16.66667%; }
  .xlarge-margin-collapse > .small-3 {
    width: 25%; }
  .xlarge-margin-collapse > .small-4 {
    width: 33.33333%; }
  .xlarge-margin-collapse > .small-5 {
    width: 41.66667%; }
  .xlarge-margin-collapse > .small-6 {
    width: 50%; }
  .xlarge-margin-collapse > .small-7 {
    width: 58.33333%; }
  .xlarge-margin-collapse > .small-8 {
    width: 66.66667%; }
  .xlarge-margin-collapse > .small-9 {
    width: 75%; }
  .xlarge-margin-collapse > .small-10 {
    width: 83.33333%; }
  .xlarge-margin-collapse > .small-11 {
    width: 91.66667%; }
  .xlarge-margin-collapse > .small-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse > .medium-1 {
    width: 8.33333%; }
  .xlarge-margin-collapse > .medium-2 {
    width: 16.66667%; }
  .xlarge-margin-collapse > .medium-3 {
    width: 25%; }
  .xlarge-margin-collapse > .medium-4 {
    width: 33.33333%; }
  .xlarge-margin-collapse > .medium-5 {
    width: 41.66667%; }
  .xlarge-margin-collapse > .medium-6 {
    width: 50%; }
  .xlarge-margin-collapse > .medium-7 {
    width: 58.33333%; }
  .xlarge-margin-collapse > .medium-8 {
    width: 66.66667%; }
  .xlarge-margin-collapse > .medium-9 {
    width: 75%; }
  .xlarge-margin-collapse > .medium-10 {
    width: 83.33333%; }
  .xlarge-margin-collapse > .medium-11 {
    width: 91.66667%; }
  .xlarge-margin-collapse > .medium-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse > .large-1 {
    width: 8.33333%; }
  .xlarge-margin-collapse > .large-2 {
    width: 16.66667%; }
  .xlarge-margin-collapse > .large-3 {
    width: 25%; }
  .xlarge-margin-collapse > .large-4 {
    width: 33.33333%; }
  .xlarge-margin-collapse > .large-5 {
    width: 41.66667%; }
  .xlarge-margin-collapse > .large-6 {
    width: 50%; }
  .xlarge-margin-collapse > .large-7 {
    width: 58.33333%; }
  .xlarge-margin-collapse > .large-8 {
    width: 66.66667%; }
  .xlarge-margin-collapse > .large-9 {
    width: 75%; }
  .xlarge-margin-collapse > .large-10 {
    width: 83.33333%; }
  .xlarge-margin-collapse > .large-11 {
    width: 91.66667%; }
  .xlarge-margin-collapse > .large-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse > .xlarge-1 {
    width: 8.33333%; }
  .xlarge-margin-collapse > .xlarge-2 {
    width: 16.66667%; }
  .xlarge-margin-collapse > .xlarge-3 {
    width: 25%; }
  .xlarge-margin-collapse > .xlarge-4 {
    width: 33.33333%; }
  .xlarge-margin-collapse > .xlarge-5 {
    width: 41.66667%; }
  .xlarge-margin-collapse > .xlarge-6 {
    width: 50%; }
  .xlarge-margin-collapse > .xlarge-7 {
    width: 58.33333%; }
  .xlarge-margin-collapse > .xlarge-8 {
    width: 66.66667%; }
  .xlarge-margin-collapse > .xlarge-9 {
    width: 75%; }
  .xlarge-margin-collapse > .xlarge-10 {
    width: 83.33333%; }
  .xlarge-margin-collapse > .xlarge-11 {
    width: 91.66667%; }
  .xlarge-margin-collapse > .xlarge-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .xlarge-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xlarge-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

.small-offset-0 {
  margin-left: 0%; }

.grid-margin-x > .small-offset-0 {
  margin-left: calc(0% + 1.875rem / 2); }

.small-offset-1 {
  margin-left: 8.33333%; }

.grid-margin-x > .small-offset-1 {
  margin-left: calc(8.33333% + 1.875rem / 2); }

.small-offset-2 {
  margin-left: 16.66667%; }

.grid-margin-x > .small-offset-2 {
  margin-left: calc(16.66667% + 1.875rem / 2); }

.small-offset-3 {
  margin-left: 25%; }

.grid-margin-x > .small-offset-3 {
  margin-left: calc(25% + 1.875rem / 2); }

.small-offset-4 {
  margin-left: 33.33333%; }

.grid-margin-x > .small-offset-4 {
  margin-left: calc(33.33333% + 1.875rem / 2); }

.small-offset-5 {
  margin-left: 41.66667%; }

.grid-margin-x > .small-offset-5 {
  margin-left: calc(41.66667% + 1.875rem / 2); }

.small-offset-6 {
  margin-left: 50%; }

.grid-margin-x > .small-offset-6 {
  margin-left: calc(50% + 1.875rem / 2); }

.small-offset-7 {
  margin-left: 58.33333%; }

.grid-margin-x > .small-offset-7 {
  margin-left: calc(58.33333% + 1.875rem / 2); }

.small-offset-8 {
  margin-left: 66.66667%; }

.grid-margin-x > .small-offset-8 {
  margin-left: calc(66.66667% + 1.875rem / 2); }

.small-offset-9 {
  margin-left: 75%; }

.grid-margin-x > .small-offset-9 {
  margin-left: calc(75% + 1.875rem / 2); }

.small-offset-10 {
  margin-left: 83.33333%; }

.grid-margin-x > .small-offset-10 {
  margin-left: calc(83.33333% + 1.875rem / 2); }

.small-offset-11 {
  margin-left: 91.66667%; }

.grid-margin-x > .small-offset-11 {
  margin-left: calc(91.66667% + 1.875rem / 2); }

@media print, screen and (min-width: 40em) {
  .medium-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .medium-offset-0 {
    margin-left: calc(0% + 1.875rem / 2); }
  .medium-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .medium-offset-1 {
    margin-left: calc(8.33333% + 1.875rem / 2); }
  .medium-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .medium-offset-2 {
    margin-left: calc(16.66667% + 1.875rem / 2); }
  .medium-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .medium-offset-3 {
    margin-left: calc(25% + 1.875rem / 2); }
  .medium-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .medium-offset-4 {
    margin-left: calc(33.33333% + 1.875rem / 2); }
  .medium-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .medium-offset-5 {
    margin-left: calc(41.66667% + 1.875rem / 2); }
  .medium-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .medium-offset-6 {
    margin-left: calc(50% + 1.875rem / 2); }
  .medium-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .medium-offset-7 {
    margin-left: calc(58.33333% + 1.875rem / 2); }
  .medium-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .medium-offset-8 {
    margin-left: calc(66.66667% + 1.875rem / 2); }
  .medium-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .medium-offset-9 {
    margin-left: calc(75% + 1.875rem / 2); }
  .medium-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .medium-offset-10 {
    margin-left: calc(83.33333% + 1.875rem / 2); }
  .medium-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .medium-offset-11 {
    margin-left: calc(91.66667% + 1.875rem / 2); } }

@media print, screen and (min-width: 64em) {
  .large-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .large-offset-0 {
    margin-left: calc(0% + 1.875rem / 2); }
  .large-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .large-offset-1 {
    margin-left: calc(8.33333% + 1.875rem / 2); }
  .large-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .large-offset-2 {
    margin-left: calc(16.66667% + 1.875rem / 2); }
  .large-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .large-offset-3 {
    margin-left: calc(25% + 1.875rem / 2); }
  .large-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .large-offset-4 {
    margin-left: calc(33.33333% + 1.875rem / 2); }
  .large-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .large-offset-5 {
    margin-left: calc(41.66667% + 1.875rem / 2); }
  .large-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .large-offset-6 {
    margin-left: calc(50% + 1.875rem / 2); }
  .large-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .large-offset-7 {
    margin-left: calc(58.33333% + 1.875rem / 2); }
  .large-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .large-offset-8 {
    margin-left: calc(66.66667% + 1.875rem / 2); }
  .large-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .large-offset-9 {
    margin-left: calc(75% + 1.875rem / 2); }
  .large-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .large-offset-10 {
    margin-left: calc(83.33333% + 1.875rem / 2); }
  .large-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .large-offset-11 {
    margin-left: calc(91.66667% + 1.875rem / 2); } }

@media screen and (min-width: 75em) {
  .xlarge-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .xlarge-offset-0 {
    margin-left: calc(0% + 1.875rem / 2); }
  .xlarge-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .xlarge-offset-1 {
    margin-left: calc(8.33333% + 1.875rem / 2); }
  .xlarge-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .xlarge-offset-2 {
    margin-left: calc(16.66667% + 1.875rem / 2); }
  .xlarge-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .xlarge-offset-3 {
    margin-left: calc(25% + 1.875rem / 2); }
  .xlarge-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .xlarge-offset-4 {
    margin-left: calc(33.33333% + 1.875rem / 2); }
  .xlarge-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .xlarge-offset-5 {
    margin-left: calc(41.66667% + 1.875rem / 2); }
  .xlarge-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .xlarge-offset-6 {
    margin-left: calc(50% + 1.875rem / 2); }
  .xlarge-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .xlarge-offset-7 {
    margin-left: calc(58.33333% + 1.875rem / 2); }
  .xlarge-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .xlarge-offset-8 {
    margin-left: calc(66.66667% + 1.875rem / 2); }
  .xlarge-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .xlarge-offset-9 {
    margin-left: calc(75% + 1.875rem / 2); }
  .xlarge-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .xlarge-offset-10 {
    margin-left: calc(83.33333% + 1.875rem / 2); }
  .xlarge-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .xlarge-offset-11 {
    margin-left: calc(91.66667% + 1.875rem / 2); } }

.grid-y {
  display: flex;
  flex-flow: column nowrap; }
  .grid-y > .cell {
    height: auto;
    max-height: none; }
  .grid-y > .auto {
    height: auto; }
  .grid-y > .shrink {
    height: auto; }
  .grid-y > .small-shrink, .grid-y > .small-full, .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 {
    flex-basis: auto; }
  @media print, screen and (min-width: 40em) {
    .grid-y > .medium-shrink, .grid-y > .medium-full, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 {
      flex-basis: auto; } }
  @media print, screen and (min-width: 64em) {
    .grid-y > .large-shrink, .grid-y > .large-full, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 {
      flex-basis: auto; } }
  @media screen and (min-width: 75em) {
    .grid-y > .xlarge-shrink, .grid-y > .xlarge-full, .grid-y > .xlarge-1, .grid-y > .xlarge-2, .grid-y > .xlarge-3, .grid-y > .xlarge-4, .grid-y > .xlarge-5, .grid-y > .xlarge-6, .grid-y > .xlarge-7, .grid-y > .xlarge-8, .grid-y > .xlarge-9, .grid-y > .xlarge-10, .grid-y > .xlarge-11, .grid-y > .xlarge-12 {
      flex-basis: auto; } }
  .grid-y > .small-1, .grid-y > .small-2, .grid-y > .small-3, .grid-y > .small-4, .grid-y > .small-5, .grid-y > .small-6, .grid-y > .small-7, .grid-y > .small-8, .grid-y > .small-9, .grid-y > .small-10, .grid-y > .small-11, .grid-y > .small-12 {
    flex: 0 0 auto; }
  .grid-y > .small-1 {
    height: 8.33333%; }
  .grid-y > .small-2 {
    height: 16.66667%; }
  .grid-y > .small-3 {
    height: 25%; }
  .grid-y > .small-4 {
    height: 33.33333%; }
  .grid-y > .small-5 {
    height: 41.66667%; }
  .grid-y > .small-6 {
    height: 50%; }
  .grid-y > .small-7 {
    height: 58.33333%; }
  .grid-y > .small-8 {
    height: 66.66667%; }
  .grid-y > .small-9 {
    height: 75%; }
  .grid-y > .small-10 {
    height: 83.33333%; }
  .grid-y > .small-11 {
    height: 91.66667%; }
  .grid-y > .small-12 {
    height: 100%; }
  @media print, screen and (min-width: 40em) {
    .grid-y > .medium-auto {
      flex: 1 1 0;
      height: auto; }
    .grid-y > .medium-shrink, .grid-y > .medium-1, .grid-y > .medium-2, .grid-y > .medium-3, .grid-y > .medium-4, .grid-y > .medium-5, .grid-y > .medium-6, .grid-y > .medium-7, .grid-y > .medium-8, .grid-y > .medium-9, .grid-y > .medium-10, .grid-y > .medium-11, .grid-y > .medium-12 {
      flex: 0 0 auto; }
    .grid-y > .medium-shrink {
      height: auto; }
    .grid-y > .medium-1 {
      height: 8.33333%; }
    .grid-y > .medium-2 {
      height: 16.66667%; }
    .grid-y > .medium-3 {
      height: 25%; }
    .grid-y > .medium-4 {
      height: 33.33333%; }
    .grid-y > .medium-5 {
      height: 41.66667%; }
    .grid-y > .medium-6 {
      height: 50%; }
    .grid-y > .medium-7 {
      height: 58.33333%; }
    .grid-y > .medium-8 {
      height: 66.66667%; }
    .grid-y > .medium-9 {
      height: 75%; }
    .grid-y > .medium-10 {
      height: 83.33333%; }
    .grid-y > .medium-11 {
      height: 91.66667%; }
    .grid-y > .medium-12 {
      height: 100%; } }
  @media print, screen and (min-width: 64em) {
    .grid-y > .large-auto {
      flex: 1 1 0;
      height: auto; }
    .grid-y > .large-shrink, .grid-y > .large-1, .grid-y > .large-2, .grid-y > .large-3, .grid-y > .large-4, .grid-y > .large-5, .grid-y > .large-6, .grid-y > .large-7, .grid-y > .large-8, .grid-y > .large-9, .grid-y > .large-10, .grid-y > .large-11, .grid-y > .large-12 {
      flex: 0 0 auto; }
    .grid-y > .large-shrink {
      height: auto; }
    .grid-y > .large-1 {
      height: 8.33333%; }
    .grid-y > .large-2 {
      height: 16.66667%; }
    .grid-y > .large-3 {
      height: 25%; }
    .grid-y > .large-4 {
      height: 33.33333%; }
    .grid-y > .large-5 {
      height: 41.66667%; }
    .grid-y > .large-6 {
      height: 50%; }
    .grid-y > .large-7 {
      height: 58.33333%; }
    .grid-y > .large-8 {
      height: 66.66667%; }
    .grid-y > .large-9 {
      height: 75%; }
    .grid-y > .large-10 {
      height: 83.33333%; }
    .grid-y > .large-11 {
      height: 91.66667%; }
    .grid-y > .large-12 {
      height: 100%; } }
  @media screen and (min-width: 75em) {
    .grid-y > .xlarge-auto {
      flex: 1 1 0;
      height: auto; }
    .grid-y > .xlarge-shrink, .grid-y > .xlarge-1, .grid-y > .xlarge-2, .grid-y > .xlarge-3, .grid-y > .xlarge-4, .grid-y > .xlarge-5, .grid-y > .xlarge-6, .grid-y > .xlarge-7, .grid-y > .xlarge-8, .grid-y > .xlarge-9, .grid-y > .xlarge-10, .grid-y > .xlarge-11, .grid-y > .xlarge-12 {
      flex: 0 0 auto; }
    .grid-y > .xlarge-shrink {
      height: auto; }
    .grid-y > .xlarge-1 {
      height: 8.33333%; }
    .grid-y > .xlarge-2 {
      height: 16.66667%; }
    .grid-y > .xlarge-3 {
      height: 25%; }
    .grid-y > .xlarge-4 {
      height: 33.33333%; }
    .grid-y > .xlarge-5 {
      height: 41.66667%; }
    .grid-y > .xlarge-6 {
      height: 50%; }
    .grid-y > .xlarge-7 {
      height: 58.33333%; }
    .grid-y > .xlarge-8 {
      height: 66.66667%; }
    .grid-y > .xlarge-9 {
      height: 75%; }
    .grid-y > .xlarge-10 {
      height: 83.33333%; }
    .grid-y > .xlarge-11 {
      height: 91.66667%; }
    .grid-y > .xlarge-12 {
      height: 100%; } }

.grid-padding-y .grid-padding-y {
  margin-top: -0.9375rem;
  margin-bottom: -0.9375rem; }

.grid-padding-y > .cell {
  padding-top: 0.9375rem;
  padding-bottom: 0.9375rem; }

.grid-margin-y {
  margin-top: -0.9375rem;
  margin-bottom: -0.9375rem; }
  .grid-margin-y > .cell {
    height: calc(100% - 1.875rem);
    margin-top: 0.9375rem;
    margin-bottom: 0.9375rem; }
  .grid-margin-y > .auto {
    height: auto; }
  .grid-margin-y > .shrink {
    height: auto; }
  .grid-margin-y > .small-1 {
    height: calc(8.33333% - 1.875rem); }
  .grid-margin-y > .small-2 {
    height: calc(16.66667% - 1.875rem); }
  .grid-margin-y > .small-3 {
    height: calc(25% - 1.875rem); }
  .grid-margin-y > .small-4 {
    height: calc(33.33333% - 1.875rem); }
  .grid-margin-y > .small-5 {
    height: calc(41.66667% - 1.875rem); }
  .grid-margin-y > .small-6 {
    height: calc(50% - 1.875rem); }
  .grid-margin-y > .small-7 {
    height: calc(58.33333% - 1.875rem); }
  .grid-margin-y > .small-8 {
    height: calc(66.66667% - 1.875rem); }
  .grid-margin-y > .small-9 {
    height: calc(75% - 1.875rem); }
  .grid-margin-y > .small-10 {
    height: calc(83.33333% - 1.875rem); }
  .grid-margin-y > .small-11 {
    height: calc(91.66667% - 1.875rem); }
  .grid-margin-y > .small-12 {
    height: calc(100% - 1.875rem); }
  @media print, screen and (min-width: 40em) {
    .grid-margin-y > .medium-auto {
      height: auto; }
    .grid-margin-y > .medium-shrink {
      height: auto; }
    .grid-margin-y > .medium-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .medium-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .medium-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .medium-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .medium-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .medium-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .medium-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .medium-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .medium-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .medium-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .medium-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .medium-12 {
      height: calc(100% - 1.875rem); } }
  @media print, screen and (min-width: 64em) {
    .grid-margin-y > .large-auto {
      height: auto; }
    .grid-margin-y > .large-shrink {
      height: auto; }
    .grid-margin-y > .large-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .large-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .large-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .large-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .large-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .large-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .large-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .large-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .large-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .large-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .large-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .large-12 {
      height: calc(100% - 1.875rem); } }
  @media screen and (min-width: 75em) {
    .grid-margin-y > .xlarge-auto {
      height: auto; }
    .grid-margin-y > .xlarge-shrink {
      height: auto; }
    .grid-margin-y > .xlarge-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .xlarge-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .xlarge-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .xlarge-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-12 {
      height: calc(100% - 1.875rem); } }

.grid-frame {
  overflow: hidden;
  position: relative;
  flex-wrap: nowrap;
  align-items: stretch;
  width: 100vw; }

.cell .grid-frame {
  width: 100%; }

.cell-block {
  overflow-x: auto;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: -ms-autohiding-scrollbar; }

.cell-block-y {
  overflow-y: auto;
  max-height: 100%;
  min-height: 100%;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: -ms-autohiding-scrollbar; }

.cell-block-container {
  display: flex;
  flex-direction: column;
  max-height: 100%; }
  .cell-block-container > .grid-x {
    max-height: 100%;
    flex-wrap: nowrap; }

@media print, screen and (min-width: 40em) {
  .medium-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100vw; }
  .cell .medium-grid-frame {
    width: 100%; }
  .medium-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; }
  .medium-cell-block-container {
    display: flex;
    flex-direction: column;
    max-height: 100%; }
    .medium-cell-block-container > .grid-x {
      max-height: 100%;
      flex-wrap: nowrap; }
  .medium-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    min-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; } }

@media print, screen and (min-width: 64em) {
  .large-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100vw; }
  .cell .large-grid-frame {
    width: 100%; }
  .large-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; }
  .large-cell-block-container {
    display: flex;
    flex-direction: column;
    max-height: 100%; }
    .large-cell-block-container > .grid-x {
      max-height: 100%;
      flex-wrap: nowrap; }
  .large-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    min-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; } }

@media screen and (min-width: 75em) {
  .xlarge-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100vw; }
  .cell .xlarge-grid-frame {
    width: 100%; }
  .xlarge-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; }
  .xlarge-cell-block-container {
    display: flex;
    flex-direction: column;
    max-height: 100%; }
    .xlarge-cell-block-container > .grid-x {
      max-height: 100%;
      flex-wrap: nowrap; }
  .xlarge-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    min-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar; } }

.grid-y.grid-frame {
  overflow: hidden;
  position: relative;
  flex-wrap: nowrap;
  align-items: stretch;
  height: 100vh;
  width: auto; }

@media print, screen and (min-width: 40em) {
  .grid-y.medium-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    height: 100vh;
    width: auto; } }

@media print, screen and (min-width: 64em) {
  .grid-y.large-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    height: 100vh;
    width: auto; } }

@media screen and (min-width: 75em) {
  .grid-y.xlarge-grid-frame {
    overflow: hidden;
    position: relative;
    flex-wrap: nowrap;
    align-items: stretch;
    height: 100vh;
    width: auto; } }

.cell .grid-y.grid-frame {
  height: 100%; }

@media print, screen and (min-width: 40em) {
  .cell .grid-y.medium-grid-frame {
    height: 100%; } }

@media print, screen and (min-width: 64em) {
  .cell .grid-y.large-grid-frame {
    height: 100%; } }

@media screen and (min-width: 75em) {
  .cell .grid-y.xlarge-grid-frame {
    height: 100%; } }

.grid-margin-y {
  margin-top: -0.9375rem;
  margin-bottom: -0.9375rem; }
  .grid-margin-y > .cell {
    height: calc(100% - 1.875rem);
    margin-top: 0.9375rem;
    margin-bottom: 0.9375rem; }
  .grid-margin-y > .auto {
    height: auto; }
  .grid-margin-y > .shrink {
    height: auto; }
  .grid-margin-y > .small-1 {
    height: calc(8.33333% - 1.875rem); }
  .grid-margin-y > .small-2 {
    height: calc(16.66667% - 1.875rem); }
  .grid-margin-y > .small-3 {
    height: calc(25% - 1.875rem); }
  .grid-margin-y > .small-4 {
    height: calc(33.33333% - 1.875rem); }
  .grid-margin-y > .small-5 {
    height: calc(41.66667% - 1.875rem); }
  .grid-margin-y > .small-6 {
    height: calc(50% - 1.875rem); }
  .grid-margin-y > .small-7 {
    height: calc(58.33333% - 1.875rem); }
  .grid-margin-y > .small-8 {
    height: calc(66.66667% - 1.875rem); }
  .grid-margin-y > .small-9 {
    height: calc(75% - 1.875rem); }
  .grid-margin-y > .small-10 {
    height: calc(83.33333% - 1.875rem); }
  .grid-margin-y > .small-11 {
    height: calc(91.66667% - 1.875rem); }
  .grid-margin-y > .small-12 {
    height: calc(100% - 1.875rem); }
  @media print, screen and (min-width: 40em) {
    .grid-margin-y > .medium-auto {
      height: auto; }
    .grid-margin-y > .medium-shrink {
      height: auto; }
    .grid-margin-y > .medium-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .medium-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .medium-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .medium-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .medium-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .medium-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .medium-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .medium-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .medium-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .medium-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .medium-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .medium-12 {
      height: calc(100% - 1.875rem); } }
  @media print, screen and (min-width: 64em) {
    .grid-margin-y > .large-auto {
      height: auto; }
    .grid-margin-y > .large-shrink {
      height: auto; }
    .grid-margin-y > .large-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .large-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .large-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .large-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .large-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .large-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .large-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .large-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .large-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .large-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .large-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .large-12 {
      height: calc(100% - 1.875rem); } }
  @media screen and (min-width: 75em) {
    .grid-margin-y > .xlarge-auto {
      height: auto; }
    .grid-margin-y > .xlarge-shrink {
      height: auto; }
    .grid-margin-y > .xlarge-1 {
      height: calc(8.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-2 {
      height: calc(16.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-3 {
      height: calc(25% - 1.875rem); }
    .grid-margin-y > .xlarge-4 {
      height: calc(33.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-5 {
      height: calc(41.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-6 {
      height: calc(50% - 1.875rem); }
    .grid-margin-y > .xlarge-7 {
      height: calc(58.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-8 {
      height: calc(66.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-9 {
      height: calc(75% - 1.875rem); }
    .grid-margin-y > .xlarge-10 {
      height: calc(83.33333% - 1.875rem); }
    .grid-margin-y > .xlarge-11 {
      height: calc(91.66667% - 1.875rem); }
    .grid-margin-y > .xlarge-12 {
      height: calc(100% - 1.875rem); } }

.grid-frame.grid-margin-y {
  height: calc(100vh + 1.875rem); }

@media print, screen and (min-width: 40em) {
  .grid-margin-y.medium-grid-frame {
    height: calc(100vh + 1.875rem); } }

@media print, screen and (min-width: 64em) {
  .grid-margin-y.large-grid-frame {
    height: calc(100vh + 1.875rem); } }

@media screen and (min-width: 75em) {
  .grid-margin-y.xlarge-grid-frame {
    height: calc(100vh + 1.875rem); } }

.align-left {
  justify-content: flex-start; }

.align-right {
  justify-content: flex-end; }

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

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

.align-spaced {
  justify-content: space-around; }

.align-left.vertical.menu > li > a {
  justify-content: flex-start; }

.align-right.vertical.menu > li > a {
  justify-content: flex-end; }

.align-center.vertical.menu > li > a {
  justify-content: center; }

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

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

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

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

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

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

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

.align-self-stretch {
  align-self: stretch; }

.align-center-middle {
  justify-content: center;
  align-items: center;
  align-content: center; }

.small-order-1 {
  order: 1; }

.small-order-2 {
  order: 2; }

.small-order-3 {
  order: 3; }

.small-order-4 {
  order: 4; }

.small-order-5 {
  order: 5; }

.small-order-6 {
  order: 6; }

@media print, screen and (min-width: 40em) {
  .medium-order-1 {
    order: 1; }
  .medium-order-2 {
    order: 2; }
  .medium-order-3 {
    order: 3; }
  .medium-order-4 {
    order: 4; }
  .medium-order-5 {
    order: 5; }
  .medium-order-6 {
    order: 6; } }

@media print, screen and (min-width: 64em) {
  .large-order-1 {
    order: 1; }
  .large-order-2 {
    order: 2; }
  .large-order-3 {
    order: 3; }
  .large-order-4 {
    order: 4; }
  .large-order-5 {
    order: 5; }
  .large-order-6 {
    order: 6; } }

@media screen and (min-width: 75em) {
  .xlarge-order-1 {
    order: 1; }
  .xlarge-order-2 {
    order: 2; }
  .xlarge-order-3 {
    order: 3; }
  .xlarge-order-4 {
    order: 4; }
  .xlarge-order-5 {
    order: 5; }
  .xlarge-order-6 {
    order: 6; } }

.flex-container {
  display: flex; }

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

.flex-child-grow {
  flex: 1 0 auto; }

.flex-child-shrink {
  flex: 0 1 auto; }

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

.flex-dir-row-reverse {
  flex-direction: row-reverse; }

.flex-dir-column {
  flex-direction: column; }

.flex-dir-column-reverse {
  flex-direction: column-reverse; }

@media print, screen and (min-width: 40em) {
  .medium-flex-container {
    display: flex; }
  .medium-flex-child-auto {
    flex: 1 1 auto; }
  .medium-flex-child-grow {
    flex: 1 0 auto; }
  .medium-flex-child-shrink {
    flex: 0 1 auto; }
  .medium-flex-dir-row {
    flex-direction: row; }
  .medium-flex-dir-row-reverse {
    flex-direction: row-reverse; }
  .medium-flex-dir-column {
    flex-direction: column; }
  .medium-flex-dir-column-reverse {
    flex-direction: column-reverse; } }

@media print, screen and (min-width: 64em) {
  .large-flex-container {
    display: flex; }
  .large-flex-child-auto {
    flex: 1 1 auto; }
  .large-flex-child-grow {
    flex: 1 0 auto; }
  .large-flex-child-shrink {
    flex: 0 1 auto; }
  .large-flex-dir-row {
    flex-direction: row; }
  .large-flex-dir-row-reverse {
    flex-direction: row-reverse; }
  .large-flex-dir-column {
    flex-direction: column; }
  .large-flex-dir-column-reverse {
    flex-direction: column-reverse; } }

@media screen and (min-width: 75em) {
  .xlarge-flex-container {
    display: flex; }
  .xlarge-flex-child-auto {
    flex: 1 1 auto; }
  .xlarge-flex-child-grow {
    flex: 1 0 auto; }
  .xlarge-flex-child-shrink {
    flex: 0 1 auto; }
  .xlarge-flex-dir-row {
    flex-direction: row; }
  .xlarge-flex-dir-row-reverse {
    flex-direction: row-reverse; }
  .xlarge-flex-dir-column {
    flex-direction: column; }
  .xlarge-flex-dir-column-reverse {
    flex-direction: column-reverse; } }

.hide {
  display: none !important; }

.invisible {
  visibility: hidden; }

.visible {
  visibility: visible; }

@media print, screen and (max-width: 39.99875em) {
  .hide-for-small-only {
    display: none !important; } }

@media screen and (max-width: 0em), screen and (min-width: 40em) {
  .show-for-small-only {
    display: none !important; } }

@media print, screen and (min-width: 40em) {
  .hide-for-medium {
    display: none !important; } }

@media screen and (max-width: 39.99875em) {
  .show-for-medium {
    display: none !important; } }

@media print, screen and (min-width: 40em) and (max-width: 63.99875em) {
  .hide-for-medium-only {
    display: none !important; } }

@media screen and (max-width: 39.99875em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important; } }

@media print, screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important; } }

@media screen and (max-width: 63.99875em) {
  .show-for-large {
    display: none !important; } }

@media print, screen and (min-width: 64em) and (max-width: 74.99875em) {
  .hide-for-large-only {
    display: none !important; } }

@media screen and (max-width: 63.99875em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important; } }

@media screen and (min-width: 75em) {
  .hide-for-xlarge {
    display: none !important; } }

@media screen and (max-width: 74.99875em) {
  .show-for-xlarge {
    display: none !important; } }

@media screen and (min-width: 75em) and (max-width: 89.99875em) {
  .hide-for-xlarge-only {
    display: none !important; } }

@media screen and (max-width: 74.99875em), screen and (min-width: 90em) {
  .show-for-xlarge-only {
    display: none !important; } }

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important; }

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  width: auto !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
  white-space: normal !important; }

.show-for-landscape,
.hide-for-portrait {
  display: block !important; }
  @media screen and (orientation: landscape) {
    .show-for-landscape,
    .hide-for-portrait {
      display: block !important; } }
  @media screen and (orientation: portrait) {
    .show-for-landscape,
    .hide-for-portrait {
      display: none !important; } }

.hide-for-landscape,
.show-for-portrait {
  display: none !important; }
  @media screen and (orientation: landscape) {
    .hide-for-landscape,
    .show-for-portrait {
      display: none !important; } }
  @media screen and (orientation: portrait) {
    .hide-for-landscape,
    .show-for-portrait {
      display: block !important; } }

.show-for-dark-mode {
  display: none; }

.hide-for-dark-mode {
  display: block; }

@media screen and (prefers-color-scheme: dark) {
  .show-for-dark-mode {
    display: block !important; }
  .hide-for-dark-mode {
    display: none !important; } }

.show-for-ie {
  display: none; }

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .show-for-ie {
    display: block !important; }
  .hide-for-ie {
    display: none !important; } }

.show-for-sticky {
  display: none; }

.is-stuck .show-for-sticky {
  display: block; }

.is-stuck .hide-for-sticky {
  display: none; }

/* Font Awesome 5 Pro; Uncomment if you want to use it */
/* Components */
/**
 * Header.
 * ----------------------------------------------------------------------------
 */
.header {
  padding: 0.46875rem 0;
  position: relative;
  min-height: 4.75rem; }
  .header .main-navigation__menu-toggle {
    border: 0;
    background-color: #ff825c;
    border-radius: 50%;
    border: 0.125rem solid #000000;
    width: 40px;
    height: 40px;
    position: absolute;
    top: 1.125rem;
    right: 0.9375rem;
    display: block;
    z-index: 100; }
    .header .main-navigation__menu-toggle .bar-inner {
      position: absolute;
      width: 16px;
      height: 2px;
      border-radius: 1px;
      background-color: #000000;
      transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
      transition-duration: 75ms;
      top: 50%;
      display: block;
      margin-top: -1px;
      left: 10px; }
      .header .main-navigation__menu-toggle .bar-inner::before, .header .main-navigation__menu-toggle .bar-inner::after {
        content: '';
        display: block;
        position: absolute;
        width: 16px;
        height: 2px;
        transition-timing-function: ease;
        transition-duration: .15s;
        transition-property: transform;
        border-radius: 1px;
        background-color: #000000; }
      .header .main-navigation__menu-toggle .bar-inner::before {
        transition: top 75ms ease .12s, opacity 75ms ease;
        top: -5px; }
      .header .main-navigation__menu-toggle .bar-inner::after {
        bottom: -5px;
        transition: bottom 75ms ease 0.12s, transform 75ms cubic-bezier(0.55, 0.055, 0.675, 0.19); }
      .nav-is-open .header .main-navigation__menu-toggle .bar-inner {
        transition-delay: .12s;
        transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
        transform: rotate(45deg); }
        .nav-is-open .header .main-navigation__menu-toggle .bar-inner::before {
          top: 0;
          transition: top 75ms ease, opacity 75ms ease .12s;
          opacity: 0; }
        .nav-is-open .header .main-navigation__menu-toggle .bar-inner::after {
          bottom: 0;
          transition: bottom 75ms ease, transform 75ms cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s;
          transform: rotate(-90deg); }
    .nav-is-open .header .main-navigation__menu-toggle {
      position: fixed; }
    .nav-is-open.admin-bar .header .main-navigation__menu-toggle {
      position: fixed;
      top: 3.5rem; }
  .header__logo {
    position: absolute;
    z-index: 100;
    display: inline-block;
    left: 0.9375rem;
    top: 0.75rem; }
    @media print, screen and (min-width: 64em) {
      .header__logo {
        left: auto;
        top: 0; } }
    @media print, screen and (max-width: 39.99875em) {
      .header__logo {
        transition: none; } }
    .header__logo img {
      max-height: 50px;
      max-width: 50px; }
    .nav-is-open .header__logo {
      position: fixed; }
      @media print, screen and (min-width: 64em) {
        .nav-is-open .header__logo {
          position: relative; } }
    .nav-is-open.admin-bar .header__logo {
      position: fixed;
      top: 3.5rem; }
      @media print, screen and (min-width: 64em) {
        .nav-is-open.admin-bar .header__logo {
          position: static; } }
  .header__login {
    color: #000000;
    margin: 0 0.46875rem;
    font-size: 0.875rem;
    display: flex;
    align-items: center;
    justify-content: start;
    gap: 0.625rem; }
    .header__login svg {
      height: 1.25rem;
      width: 1.25rem; }
    @media print, screen and (min-width: 64em) {
      .header__login {
        margin: 0 0.9375rem;
        font-size: 1.125rem; }
        .header__login svg {
          height: 1rem;
          width: 1rem; } }
  .header__signup {
    display: inline-block;
    width: 55px;
    height: 55px;
    border: 2px solid #000000;
    border-radius: 55px;
    margin: 0 0.46875rem;
    color: #000000;
    font-weight: 700;
    padding: 9px 10px;
    background-color: transparent;
    transition: all 0.3s ease-in-out;
    font-size: 0.75rem; }
    .header__signup:hover {
      background-color: #F1F1F1;
      text-decoration: none; }
    @media print, screen and (min-width: 64em) {
      .header__signup {
        width: 80px;
        height: 80px;
        border-radius: 80px;
        padding: 15px 17px;
        margin: 0 0.9375rem;
        font-size: 1rem; } }
  .header__signup--square {
    width: 100px;
    hyphens: auto;
    border-radius: 0;
    text-align: center;
    height: auto;
    font-size: 0.875rem;
    margin-right: 0; }
    @media print, screen and (min-width: 64em) {
      .header__signup--square {
        font-size: 1rem;
        padding: 0.625rem;
        width: 110px; } }
  @media print, screen and (min-width: 64em) {
    .header {
      padding: 0.9375rem 0; }
      .header__logo {
        position: relative;
        padding-right: 0.9375rem; }
        .header__logo img {
          max-height: 80px;
          max-width: 80px; } }

/**
 * Footer.
 * ----------------------------------------------------------------------------
 */
.site-footer {
  margin-top: 1.875rem; }
  @media print, screen and (min-width: 40em) {
    .site-footer .cell--left {
      padding-right: 1.25rem; } }
  @media print, screen and (min-width: 40em) {
    .site-footer .cell--right {
      padding-left: 1.25rem; } }
  .site-footer__top {
    position: relative;
    padding: 0.9375rem 0 0;
    border-top: 10px solid #B7C0C5;
    background-color: rgba(183, 192, 197, 0.5); }
    @media print, screen and (min-width: 40em) {
      .site-footer__top {
        padding: 1.5625rem 0 0;
        background-color: transparent;
        border-top: none; } }
    @media print, screen and (min-width: 64em) {
      .site-footer__top {
        padding: 2.03125rem 0 0; } }
    @media print, screen and (min-width: 40em) {
      .site-footer__top::before, .site-footer__top::after {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: auto;
        right: auto;
        width: 50%;
        height: 100%;
        z-index: -1; }
      .site-footer__top::before {
        left: 0;
        border-top: 10px solid #B7C0C5;
        background-color: rgba(183, 192, 197, 0.5); }
      .site-footer__top::after {
        right: 0;
        border-top: 10px solid #000000;
        background-color: #B7C0C5; } }
  .site-footer__bottom {
    background-color: #000000;
    padding: 1.875rem 0; }
  .site-footer__contact-info {
    padding: 0.9375rem 0 0; }
    @media print, screen and (min-width: 40em) {
      .site-footer__contact-info {
        background-color: transparent;
        padding: 0.9375rem 0; } }
  .site-footer__newsletter {
    padding: 0.9375rem 0 0; }
    @media print, screen and (min-width: 40em) {
      .site-footer__newsletter {
        background-color: transparent;
        padding: 0.9375rem 0; } }
  .site-footer__meta {
    margin: 0.9375rem 0 1.40625rem;
    line-height: 1.6;
    color: #646464; }
    .site-footer__meta--phone {
      margin-bottom: 0; }
    .site-footer__meta--email {
      display: inline-block;
      margin-top: 0;
      font-weight: 500; }

.footer-navigation ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
  text-align: center; }
  .footer-navigation ul li {
    display: block;
    margin: 0.46875rem 0; }
    .footer-navigation ul li a {
      display: block;
      color: #646464;
      text-decoration: none; }
      .footer-navigation ul li a:hover {
        text-decoration: underline; }

@media print, screen and (min-width: 40em) {
  .footer-navigation ul li {
    display: inline-block;
    margin: 0.46875rem; }
    .footer-navigation ul li a {
      display: inline-block; } }

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  margin: 0.9375rem 0;
  border: 0;
  box-shadow: none;
  padding: 10px 0 0;
  min-width: 100%; }
  .section__finder .card {
    margin: 0; }
  .card--max-width {
    max-width: 25rem;
    margin-left: auto;
    margin-right: auto; }
  .card--hover {
    transition: all 0.3s ease-in-out; }
    .card--hover:hover {
      transform: translate(0, -3px); }
      .card--hover:hover .card__image::before {
        content: '';
        background-color: rgba(0, 0, 0, 0.2); }
      .card--hover:hover .card__button {
        transform: translate(-4px, -2px); }

.card__image {
  font-size: 0;
  position: relative;
  min-height: 150px; }
  .card__image::before {
    content: '';
    position: absolute;
    z-index: 10;
    background-color: rgba(0, 0, 0, 0);
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 0;
    padding-bottom: 56.25%;
    transition: all 0.3s ease-in-out; }
  .card__image img {
    object-fit: cover;
    position: relative;
    z-index: 9; }

.card__title {
  margin-top: 0.3125rem;
  margin-bottom: 0;
  display: block; }
  .card__title--vo-white {
    color: #FFFFFF; }

.card__text {
  margin-bottom: 0.9375rem; }
  .card__text--vo-white {
    color: #FFFFFF; }

.card__button {
  display: block;
  text-align: center;
  color: #000000;
  background-color: #B7C0C5;
  position: absolute;
  z-index: 11;
  bottom: -0.9375rem;
  right: -0.9375rem;
  font-size: 1.625rem;
  height: 55px;
  width: 55px;
  line-height: 51px;
  transition: all 0.3s ease-in-out; }
  @media print, screen and (min-width: 40em) {
    .card__button {
      font-size: 2.25rem;
      height: 65px;
      width: 65px;
      line-height: 58px; } }
  @media print, screen and (min-width: 64em) {
    .card__button {
      font-size: 2.625rem;
      height: 80px;
      width: 80px;
      line-height: 74px; } }

.card__date {
  margin-bottom: 0.25rem;
  font-size: 1rem;
  font-weight: bold; }

.card__location {
  margin-top: 0.46875rem; }
  .card__location svg {
    margin-right: 10px; }

.card__inner {
  height: 100%;
  background-color: transparent;
  padding: 0 1.875rem 1.875rem; }
  .card__inner .card__title {
    min-width: 100%;
    margin-bottom: 0.9375rem; }
    .card__inner .card__title.h2 {
      font-size: 1.5rem; }
    .card__inner .card__title span {
      max-width: 32.5rem;
      display: block; }
  .card__inner a button {
    outline: 0; }
  .card__inner .card__link {
    align-self: flex-end;
    min-width: 100%;
    flex-basis: 100%;
    margin-top: auto;
    text-align: left; }
  .card__inner--vo-purple {
    background-color: #4266ff; }
    .card__inner--vo-purple .card__link a {
      color: #FFFFFF; }
  .card__inner--vo-blue {
    background-color: #ff825c; }
    .card__inner--vo-blue .card__link a {
      color: #FFFFFF; }
  .card__inner--vo-yellow {
    background-color: #82ff4f; }
    .card__inner--vo-yellow .card__link a {
      color: #000000; }
  .card__inner--vo-black {
    background-color: #000000; }
    .card__inner--vo-black .card__link a {
      color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .card__inner--min-height {
      min-height: 280px; } }

.card--knowledge .card__inner {
  padding: 1.875rem; }

.card--knowledge .card__text {
  margin-bottom: 0.3125rem; }

.card--knowledge .card__top-wrap {
  padding-top: 0;
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 4px solid #000000; }

.card--knowledge .card__title {
  padding-top: 0; }
  .card--knowledge .card__title h3 {
    font-size: 1.5rem; }

.card--knowledge .knowledge-filter--terms h2 {
  font-size: 1.375rem; }

.card--knowledge .knowledge-filter--terms__label {
  color: #FFFFFF; }

.card--knowledge .inline-select-filter__button {
  color: #FFFFFF; }

.card--knowledge .card__cta-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem; }

.card--knowledge .card__form {
  width: 100%; }

.card--knowledge .card__submit-form {
  padding: 0.875rem 1.875rem;
  background-color: #000000;
  color: #ff825c; }

.card--knowledge .card__link {
  flex-basis: unset;
  min-width: unset;
  align-self: center;
  margin-top: 0; }

.card__excerpt {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  /* autoprefixer: off */
  -webkit-box-orient: vertical;
  /* autoprefixer: on */
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 1rem;
  margin-top: 0.5rem;
  line-height: 1.3; }

.card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 1.25rem; }
  .card__tags span {
    font-size: 0.875rem;
    font-weight: bold;
    padding: 0.375rem 0.875rem;
    line-height: 1.2;
    border-radius: 999px;
    border: 2px solid #000000; }

@media print, screen and (min-width: 64em) {
  .card--large {
    flex-direction: row;
    border-bottom: 6px solid #000000;
    padding-bottom: 1.875rem; }
    .card--large .card__image {
      width: calc(100% / 3); }
    .card--large .card__info {
      width: calc((100% / 3) * 2);
      padding-left: 1.875rem; }
    .card--large .card__title h3 {
      font-size: 2.875rem; }
    .card--large .card__excerpt {
      -webkit-line-clamp: 3;
      font-size: 1.25rem;
      margin-top: 0.875rem; }
    .card--large .card__date {
      margin-bottom: 0.25rem;
      font-size: 1.25rem; }
    .card--large .card__tags {
      margin-top: 2.25rem; } }

.main-navigation {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: -100%;
  height: 100%;
  width: 100%;
  background-color: white;
  width: 100%;
  z-index: 99;
  transition: all 0.3s cubic-bezier(0.694, 0.0482, 0.335, 1);
  display: block;
  padding-top: 4.75rem; }
  .nav-is-open .main-navigation {
    top: 0; }
  .nav-is-open.admin-bar .main-navigation {
    top: 2.875rem;
    height: calc(100% - 46px); }
  .main-navigation ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    height: 100%;
    overflow-y: auto; }
    .main-navigation ul .main-navigation__second {
      position: sticky;
      display: block;
      bottom: 0;
      margin-top: auto;
      z-index: 1000;
      background-color: #69C9FB;
      border-top: #000000 solid 0.375rem;
      padding-top: 1.25rem;
      padding-bottom: 1.25rem; }
      .main-navigation ul .main-navigation__second h3 {
        margin-top: 0;
        margin-bottom: 0.625rem;
        padding: 0 1.25rem;
        font-size: 1.375rem; }
      .main-navigation ul .main-navigation__second p {
        padding: 0 1.25rem;
        font-weight: 700;
        margin-bottom: 1.25rem;
        font-size: 0.875rem; }
      .main-navigation ul .main-navigation__second .button {
        background-color: #000000;
        color: #FFFFFF;
        padding: 1rem 2rem;
        border-radius: 999px;
        font-size: 1rem;
        font-weight: 700;
        line-height: normal; }
    .main-navigation ul li {
      display: block;
      margin: 0;
      position: relative; }
      .main-navigation ul li .submenu-indicator {
        display: block;
        text-align: center;
        position: absolute;
        right: 0;
        width: 30px;
        height: 30px;
        top: 0;
        cursor: pointer;
        line-height: 30px;
        font-size: 1.25rem;
        background-color: rgba(183, 192, 197, 0);
        border-radius: 50%;
        transition: transform 0.3s ease-in-out, background-color 0.3s ease-in-out;
        z-index: 5;
        margin-right: 0.625rem; }
        .main-navigation ul li .submenu-indicator i, .main-navigation ul li .submenu-indicator svg {
          position: relative;
          z-index: 4;
          pointer-events: none; }
      .main-navigation ul li a {
        display: inline-block;
        text-decoration: none;
        color: #000000;
        padding: 0 0.625rem;
        margin: 0 0.625rem;
        font-weight: 700;
        position: relative;
        width: auto;
        font-size: 1.25rem; }
        .main-navigation ul li a::before {
          content: '';
          position: absolute;
          width: 0;
          height: 100%;
          background-color: #000000;
          left: 0; }
      .main-navigation ul li a:hover,
      .main-navigation ul li a:focus,
      .main-navigation ul li.current-menu-item > a {
        color: #4266ff; }
      .main-navigation ul li.show-sub-nav.menu-item-has-children .submenu-indicator {
        transform: translate(0, 0) rotate(180deg); }
        .main-navigation ul li.show-sub-nav.menu-item-has-children .submenu-indicator svg {
          fill: #4266ff; }
      .main-navigation ul li.show-sub-nav .sub-menu {
        margin-top: 1.25rem; }
      .main-navigation ul li ul.sub-menu {
        height: 0;
        overflow: hidden;
        transition: all 0.3s ease-in-out;
        background-color: #f7f7f7;
        margin: 0 1.25rem; }
        .main-navigation ul li ul.sub-menu li {
          display: block; }
          .main-navigation ul li ul.sub-menu li:first-child {
            padding-top: 1.25rem; }
          .main-navigation ul li ul.sub-menu li:last-child {
            padding-bottom: 1.25rem; }
          .main-navigation ul li ul.sub-menu li a {
            font-size: 1.125rem; }
    .main-navigation ul .mobile__search form {
      margin: 0 1.25rem;
      max-width: none; }
  @media print, screen and (min-width: 64em) {
    .main-navigation {
      position: relative;
      padding: 0;
      background-color: transparent;
      top: auto !important;
      bottom: auto;
      min-height: auto;
      max-height: 100%;
      height: auto;
      overflow-y: visible;
      display: inline-block;
      width: auto;
      margin-left: 0.9375rem;
      transform: translateY(0); }
      .main-navigation .menu {
        padding: 0; }
      .main-navigation ul {
        flex-direction: row;
        flex-wrap: wrap;
        overflow-y: unset !important; }
        .main-navigation ul li {
          display: inline-block;
          margin: 0;
          text-align: left; }
          .main-navigation ul li .submenu-indicator {
            margin-right: 0; }
          .main-navigation ul li a {
            display: inline-block;
            margin: 0 !important;
            padding: 0.70313rem 0;
            font-size: 1.125rem; }
            .main-navigation ul li a::after {
              content: '';
              position: absolute;
              bottom: 0;
              left: 0;
              right: 0;
              height: 3px;
              background-color: #4266ff;
              width: 0;
              display: block;
              border-radius: 5px;
              transition: all 0.3s ease-in-out; }
            .main-navigation ul li a::before {
              display: none; }
          .main-navigation ul li a:hover,
          .main-navigation ul li a:focus,
          .main-navigation ul li.current-menu-item > a {
            color: #4266ff; }
            .main-navigation ul li a:hover::after,
            .main-navigation ul li a:focus::after,
            .main-navigation ul li.current-menu-item > a::after {
              width: 100%;
              margin: 0; }
          .main-navigation ul li.menu-item-has-children {
            padding-right: 26px; }
            .main-navigation ul li.menu-item-has-children > a {
              margin-right: 0.23438rem; }
            .main-navigation ul li.menu-item-has-children .submenu-indicator {
              display: block;
              text-align: center;
              position: absolute;
              right: 0;
              width: 30px;
              height: 30px;
              top: 50%;
              transform: translate(0, -50%) rotate(0deg); }
          .main-navigation ul li ul.sub-menu {
            visibility: hidden;
            opacity: 0;
            position: absolute;
            top: 100%;
            top: calc(100% - 5px);
            left: 0;
            background-color: #FFFFFF;
            padding: 1.25rem;
            border: 2px solid #000000;
            transition: all 0.3s ease-in-out;
            transform: translate(0, -5px);
            z-index: 110;
            height: auto !important;
            display: flex;
            flex-direction: column;
            gap: 1.25rem;
            min-width: 9.375rem;
            margin: 0; }
            .main-navigation ul li ul.sub-menu li:first-child {
              padding-top: 0; }
            .main-navigation ul li ul.sub-menu li:last-child {
              padding-bottom: 0; }
            .main-navigation ul li ul.sub-menu li a {
              white-space: nowrap;
              font-size: 1.125rem;
              padding: 0;
              margin: 0; }
              .main-navigation ul li ul.sub-menu li a::after {
                height: 2px; }
          .main-navigation ul li.show-sub-nav.menu-item-has-children .submenu-indicator, .main-navigation ul li:hover.menu-item-has-children .submenu-indicator {
            transform: translate(0, -50%) rotate(180deg); }
          .main-navigation ul li.show-sub-nav ul.sub-menu, .main-navigation ul li:hover ul.sub-menu {
            visibility: visible;
            opacity: 1;
            transform: translate(0, 0); }
        .main-navigation ul .mobile__login {
          display: none; }
        .main-navigation ul .mobile__search {
          display: none; } }
  @media print, screen and (min-width: 64em) {
    .main-navigation ul li a {
      margin: 0 0.70313rem; } }

.pagination__container {
  text-align: center; }
  .pagination__container .page-numbers {
    font-weight: 700;
    color: #e6e6e6;
    margin: 0 5px; }
    .pagination__container .page-numbers.current, .pagination__container .page-numbers:hover {
      color: #8a8a8a; }

.loader {
  display: block;
  position: relative;
  width: 80px;
  height: 80px;
  margin: 0 auto; }

.loader div {
  position: absolute;
  top: 33px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: #000000;
  animation-timing-function: cubic-bezier(0, 1, 1, 0); }

.loader div:nth-child(1) {
  left: 8px;
  animation: loader1 0.6s infinite; }

.loader div:nth-child(2) {
  left: 8px;
  animation: loader2 0.6s infinite; }

.loader div:nth-child(3) {
  left: 32px;
  animation: loader2 0.6s infinite; }

.loader div:nth-child(4) {
  left: 56px;
  animation: loader3 0.6s infinite; }

@keyframes loader1 {
  0% {
    transform: scale(0); }
  100% {
    transform: scale(1); } }

@keyframes loader3 {
  0% {
    transform: scale(1); }
  100% {
    transform: scale(0); } }

@keyframes loader2 {
  0% {
    transform: translate(0, 0); }
  100% {
    transform: translate(24px, 0); } }

.price-cta {
  margin-bottom: 1.875rem; }

.price-cta__inner {
  color: #FFFFFF;
  background-color: #000000;
  display: flex; }

.price-cta__images {
  display: flex;
  flex-grow: 1;
  width: 100%; }

.price-cta__image {
  display: none; }
  .price-cta__image:nth-of-type(1) {
    display: block; }
  .price-cta__image img {
    width: 100%;
    height: 100%;
    object-fit: cover; }

.price-cta__content {
  padding: 0.9375rem;
  max-width: 25rem;
  min-width: 14.375rem; }

.price-cta__title {
  margin-top: 0;
  line-height: 1.2; }

@media print, screen and (min-width: 40em) {
  .price-cta__images {
    width: auto; }
  .price-cta__image:nth-of-type(2) {
    display: block; }
  .price-cta__content {
    padding: 1.25rem; } }

@media print, screen and (min-width: 64em) {
  .price-cta__image:nth-of-type(3) {
    display: block; } }

/* Blocks */
/* Modules */
/**
 * Gravity Forms
 *
 * (!) Disable the Gravity Forms style before using this file.
 * This gives the Gravity Forms form the basic styling it needs.
 * The inputs are not styled in this file.
 * ----------------------------------------------------------------------------
 */
/**
 * Settings
 */
/**
 * Header, body, footer
 */
.gform_heading,
.gform_body,
.gform_footer {
  clear: both; }

/**
 * Containers
 */
/**
 * Fields
 */
li.gfield {
  clear: both;
  padding: 15px 0 0 0; }
  li.gfield.hidden_label label.gfield_label {
    display: none; }

.ginput_container li {
  list-style: none; }
  .ginput_container li:before {
    display: none !important; }

.ginput_container span {
  margin-bottom: 10px; }

.ginput_container input.large,
.ginput_container select.large,
.ginput_container textarea.large {
  width: 100%; }

.ginput_container input.medium,
.ginput_container select.medium,
.ginput_container textarea.medium {
  width: calc(50% - 20px); }

.ginput_container input.small,
.ginput_container select.small,
.ginput_container textarea.small {
  width: 25%; }

.ginput_container input,
.ginput_container textarea {
  margin: 2px; }

label.gfield_label {
  display: inline-block;
  padding-bottom: 0.9375rem;
  font-weight: 700; }
  .left_label label.gfield_label {
    float: left;
    width: 25%; }
  .right_label label.gfield_label {
    float: right;
    width: 25%; }

.gfield_required {
  padding-left: 5px;
  color: #cc4b37; }

.gfield_description {
  color: #8a8a8a;
  margin: 0 0 1.875rem 0; }

.gform_hidden {
  display: none; }

.ginput_preview {
  background: #fefefe;
  padding: 0.9375rem 0.9375rem;
  border-radius: 3px;
  display: inline-block; }
  .ginput_preview img {
    margin: 0 10px 0 0; }

/**
 * Checkboxes and radio buttons
 */
ul.gfield_checkbox,
ul.gfield_radio,
.ginput_container_consent {
  position: relative; }
  ul.gfield_checkbox li,
  ul.gfield_radio li,
  .ginput_container_consent li {
    position: relative;
    margin: 0 15px 0 0; }

/**
 * Section break
 */
/**
 * Progress Bar
 */
.gf_progressbar_wrapper {
  padding-bottom: 0.9375rem; }

.gf_progressbar {
  background: gray; }

.gf_progressbar_percentage {
  background: red;
  padding: 5px 10px;
  text-align: right; }

/**
 * Steps
 */
.gf_page_steps {
  display: flex;
  margin: 0 0 1.875rem 0; }
  .gf_page_steps .gf_step {
    flex-grow: 1;
    text-align: center;
    padding: 0.9375rem 0;
    border-bottom: 1px solid rgba(10, 10, 10, 0.1);
    color: #8a8a8a; }
  .gf_page_steps .gf_step_active {
    font-weight: 700;
    color: #1779ba;
    border-color: #1779ba; }
  .gf_page_steps .gf_step_number:after {
    content: '.'; }
  @media print, screen and (max-width: 39.99875em) {
    .gf_page_steps {
      display: block; }
      .gf_page_steps .gf_step {
        text-align: left; } }

/**
 * Time Field
 */
.gfield_time_hour,
.gfield_time_minute,
.gfield_time_ampm {
  display: inline-block; }

.gfield_time_hour label,
.gfield_time_minute label {
  display: block; }

.gfield_time_ampm {
  vertical-align: top; }

/**
 * Validation
 */
.validation_error {
  background: #cc4b37;
  color: #fefefe;
  font-weight: 700;
  padding: 0.9375rem 0.9375rem; }

li.gfield .validation_message {
  margin-top: 0.9375rem;
  font-weight: 700;
  color: #fefefe;
  background: #cc4b37;
  display: inline-block;
  padding: 5px 15px; }
  li.gfield .validation_message:empty {
    display: none; }

.gform_validation_container {
  display: none; }

/**
 * Alignment Classes
 */
.ginput_full,
.ginput_left,
.ginput_right {
  display: block; }
  .ginput_full input,
  .ginput_full select,
  .ginput_full textarea,
  .ginput_left input,
  .ginput_left select,
  .ginput_left textarea,
  .ginput_right input,
  .ginput_right select,
  .ginput_right textarea {
    margin-bottom: 5px;
    width: 100%; }
  .ginput_full label,
  .ginput_left label,
  .ginput_right label {
    display: block; }

.ginput_left {
  float: left;
  padding-right: 0.9375rem;
  width: calc(50% - 0.9375rem); }

.ginput_right {
  float: right;
  width: 50%; }

/**
 * Layout Blocks
 */
li.gf_left_half,
li.gf_right_half,
li.gf_left_third,
li.gf_middle_third,
li.gf_right_third,
li.gf_first_quarter,
li.gf_second_quarter,
li.gf_third_quarter,
li.gf_fourth_quarter {
  clear: none;
  padding-bottom: 0.9375rem; }

li.gf_left_half {
  float: left;
  padding-right: 0.9375rem;
  width: calc(50% - 0.9375rem); }

li.gf_right_half {
  float: right;
  width: 50%; }

li.gf_left_third {
  float: left;
  padding-right: 0.9375rem;
  width: calc(33% - 0.9375rem); }

li.gf_middle_third {
  float: left;
  padding-right: 0.9375rem;
  width: calc(34% - 0.9375rem); }

li.gf_right_third {
  float: right;
  width: 33%; }

li.gf_first_quarter {
  float: left;
  padding-right: 0.9375rem;
  width: calc(25% - 0.9375rem); }

li.gf_second_quarter {
  float: left;
  padding-right: 0.9375rem;
  width: calc(25% - 0.9375rem); }

li.gf_third_quarter {
  float: left;
  width: 25%; }

li.gf_fourth_quarter {
  float: right;
  width: 25%; }

li.gf_left_half input,
li.gf_left_half input.medium,
li.gf_left_half input.large,
li.gf_left_half input.small, li.gf_right_half input,
li.gf_right_half input.medium,
li.gf_right_half input.large,
li.gf_right_half input.small, li.gf_left_third input,
li.gf_left_third input.medium,
li.gf_left_third input.large,
li.gf_left_third input.small, li.gf_middle_third input,
li.gf_middle_third input.medium,
li.gf_middle_third input.large,
li.gf_middle_third input.small, li.gf_right_third input,
li.gf_right_third input.medium,
li.gf_right_third input.large,
li.gf_right_third input.small, li.gf_first_quarter input,
li.gf_first_quarter input.medium,
li.gf_first_quarter input.large,
li.gf_first_quarter input.small, li.gf_second_quarter input,
li.gf_second_quarter input.medium,
li.gf_second_quarter input.large,
li.gf_second_quarter input.small, li.gf_third_quarter input,
li.gf_third_quarter input.medium,
li.gf_third_quarter input.large,
li.gf_third_quarter input.small, li.gf_fourth_quarter input,
li.gf_fourth_quarter input.medium,
li.gf_fourth_quarter input.large,
li.gf_fourth_quarter input.small {
  width: 100%; }

.gf_list_2col ul.gfield_checkbox li,
.gf_list_2col ul.gfield_radio li {
  float: left;
  padding-bottom: 0.9375rem;
  width: 50%; }

.gf_list_3col ul.gfield_checkbox li,
.gf_list_3col ul.gfield_radio li {
  float: left;
  padding-bottom: 0.9375rem;
  width: 33%; }

.gf_list_4col ul.gfield_checkbox li,
.gf_list_4col ul.gfield_radio li {
  float: left;
  padding-bottom: 0.9375rem;
  width: 25%; }

.gf_list_5col ul.gfield_checkbox li,
.gf_list_5col ul.gfield_radio li {
  float: left;
  padding-bottom: 0.9375rem;
  width: 20%; }

.gf_list_inline ul.gfield_checkbox li,
.gf_list_inline ul.gfield_radio li {
  display: inline-block;
  padding-bottom: 0.9375rem; }

@media print, screen and (max-width: 39.99875em) {
  li.gf_left_half,
  li.gf_right_half,
  li.gf_left_third,
  li.gf_middle_third,
  li.gf_right_third,
  li.gf_first_quarter,
  li.gf_second_quarter,
  li.gf_third_quarter,
  li.gf_fourth_quarter {
    width: calc(100% - 1.875rem);
    padding-right: 1.875rem; } }

@media print, screen and (max-width: 39.99875em) {
  .gf_list_2col ul.gfield_checkbox li,
  .gf_list_2col ul.gfield_radio li,
  .gf_list_3col ul.gfield_checkbox li,
  .gf_list_3col ul.gfield_radio li,
  .gf_list_4col ul.gfield_checkbox li,
  .gf_list_4col ul.gfield_radio li,
  .gf_list_5col ul.gfield_checkbox li,
  .gf_list_5col ul.gfield_radio li {
    width: 100%; }
  .ginput_right,
  .ginput_left {
    width: 100%;
    padding: 0; } }

/**
 * Date Picker
 */
.ui-datepicker {
  padding: 0;
  box-shadow: 0 2px 6px rgba(10, 10, 10, 0.1);
  background: #fefefe; }
  .ui-datepicker * {
    padding: 0;
    border-radius: 0; }
  .ui-datepicker table {
    font-size: 1rem;
    margin: 0;
    border: 0;
    border-collapse: collapse; }
  .ui-datepicker .ui-datepicker-header {
    border: none;
    background-color: #1779ba; }
    .ui-datepicker .ui-datepicker-header .ui-datepicker-prev,
    .ui-datepicker .ui-datepicker-header .ui-datepicker-next {
      display: none; }
  .ui-datepicker thead {
    background-color: #1779ba; }
  .ui-datepicker .ui-datepicker-title {
    padding: 15px 15px 0 15px; }
    .ui-datepicker .ui-datepicker-title select {
      margin-bottom: 15px; }
  .ui-datepicker th {
    padding: 0.75em 0;
    color: #fefefe;
    font-weight: 400;
    border: none;
    border-top: 1px solid #8a8a8a; }
  .ui-datepicker td {
    background: #fefefe;
    border: none;
    padding: 0; }
    .ui-datepicker td .ui-state-default {
      background: transparent;
      border: none;
      text-align: center;
      padding: 7px 10px;
      margin: 0;
      font-weight: 400;
      color: #8a8a8a;
      display: block;
      border-radius: 3px; }
    .ui-datepicker td .ui-state-active,
    .ui-datepicker td .ui-state-hover {
      background-color: #1779ba; }
  .ui-datepicker td.ui-state-disabled,
  .ui-datepicker td.ui-state-disabled .ui-state-default {
    opacity: 1;
    color: #cacaca; }

.gform_wrapper form#gform_1 {
  margin: 0 auto;
  display: block;
  width: 100%;
  max-width: 500px; }
  .gform_wrapper form#gform_1 input, .gform_wrapper form#gform_1 select {
    width: 100%; }

.find-a__select, .find-a__text {
  margin-bottom: 0.9375rem;
  display: inline-block;
  width: 48%; }
  .find-a__select--section, .find-a__text--section {
    float: left; }
  .find-a__select--name, .find-a__text--name {
    float: right; }
  .find-a__select--languages-from, .find-a__text--languages-from {
    float: left; }
  .find-a__select--languages-to, .find-a__text--languages-to {
    float: right; }
  @media print, screen and (max-width: 39.99875em) {
    .find-a__select, .find-a__text {
      float: none;
      width: 100%;
      display: block; } }
  .find-a__select input, .find-a__select select, .find-a__text input, .find-a__text select {
    display: block;
    width: 100%; }

.find-a__response {
  background-color: #F1F1F1;
  margin-top: 1.875rem;
  margin-bottom: -1.875rem; }
  .find-a__response-title {
    margin: 1.875rem 0; }
    .find-a__response-title a {
      color: #000000; }

.find-a-item {
  max-width: 50rem;
  margin: 0 auto;
  animation-name: slide-up;
  animation-duration: 0.5s;
  animation-timing-function: ease-in-out;
  animation-fill-mode: forwards; }
  .find-a-item__details {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    height: 100%; }
  .find-a-item__get-details {
    margin: 0 auto; }
  .find-a-item__meta-container {
    margin-bottom: 0.46875rem; }
  .find-a-item__label {
    font-weight: bold;
    margin: 0; }
  .find-a-item .card {
    margin-bottom: 1.875rem;
    margin-top: 0; }
    .find-a-item .card__inner {
      padding-top: 0.9375rem;
      background-color: #fefefe; }

/* Shared (styles used in both website and editor) */
/* Gutenberg */
.wp-block-media-text {
  display: block; }
  @media print, screen and (min-width: 40em) {
    .wp-block-media-text {
      display: grid; } }
  .wp-block-media-text .wp-block-media-text__media {
    margin-bottom: 0.9375rem; }
    @media print, screen and (min-width: 40em) {
      .wp-block-media-text .wp-block-media-text__media {
        padding-right: 0.9375rem;
        margin-bottom: 0; } }
  .wp-block-media-text .wp-block-media-text__content {
    padding: 0; }
    @media print, screen and (min-width: 40em) {
      .wp-block-media-text .wp-block-media-text__content {
        padding-left: 0.9375rem; } }

.wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
  padding: 0; }
  @media print, screen and (min-width: 40em) {
    .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media {
      padding-left: 0.9375rem; } }

.wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
  padding: 0; }
  @media print, screen and (min-width: 40em) {
    .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
      padding-right: 0.9375rem; } }

.wp-block-media-text__content .has-large-font-size {
  font-size: inherit; }

.wp-block-embed {
  max-width: 49.375rem;
  margin-left: auto;
  margin-right: auto; }

.wp-block-button__link {
  transition: all 0.25s ease-in-out; }
  .wp-block-button__link.has-vo-yellow-color {
    color: #82ff4f; }
  .wp-block-button__link.has-vo-purple-color {
    color: #4266ff; }
  .wp-block-button__link.has-vo-blue-color {
    color: #ff825c; }
  .wp-block-button__link.has-vo-green-color {
    color: #46B394; }
  .wp-block-button__link.has-vo-gray-color {
    color: #B7C0C5; }
  .wp-block-button__link.has-vo-black-color {
    color: #000000; }
  .wp-block-button__link.has-vo-white-color {
    color: #FFFFFF; }
  .wp-block-button__link.has-vo-yellow-background-color {
    background-color: #82ff4f; }
    .wp-block-button__link.has-vo-yellow-background-color:hover, .wp-block-button__link.has-vo-yellow-background-color:focus {
      background-color: #5eff1c; }
  .wp-block-button__link.has-vo-purple-background-color {
    background-color: #4266ff; }
    .wp-block-button__link.has-vo-purple-background-color:hover, .wp-block-button__link.has-vo-purple-background-color:focus {
      background-color: #0f3dff; }
  .wp-block-button__link.has-vo-blue-background-color {
    background-color: #ff825c; }
    .wp-block-button__link.has-vo-blue-background-color:hover, .wp-block-button__link.has-vo-blue-background-color:focus {
      background-color: #ff5b29; }
  .wp-block-button__link.has-vo-green-background-color {
    background-color: #46B394; }
    .wp-block-button__link.has-vo-green-background-color:hover, .wp-block-button__link.has-vo-green-background-color:focus {
      background-color: #388e76; }
  .wp-block-button__link.has-vo-gray-background-color {
    background-color: #B7C0C5; }
    .wp-block-button__link.has-vo-gray-background-color:hover, .wp-block-button__link.has-vo-gray-background-color:focus {
      background-color: #9ba7ae; }
  .wp-block-button__link.has-vo-black-background-color {
    background-color: #000000; }
    .wp-block-button__link.has-vo-black-background-color:hover, .wp-block-button__link.has-vo-black-background-color:focus {
      background-color: black; }
  .wp-block-button__link.has-vo-white-background-color {
    background-color: #FFFFFF; }
    .wp-block-button__link.has-vo-white-background-color:hover, .wp-block-button__link.has-vo-white-background-color:focus {
      background-color: #e6e6e6; }
  .wp-block-button__link:hover, .wp-block-button__link:focus {
    text-decoration: none; }

/* Components */
/**
 * Button.
 * ----------------------------------------------------------------------------
 */
.button,
.wp-core-ui.button {
  display: inline-block;
  color: #000000;
  font-weight: 700;
  font-size: 1.125rem;
  background-color: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  cursor: pointer; }
  @media print, screen and (min-width: 40em) {
    .button,
    .wp-core-ui.button {
      font-size: 1.25rem; } }
  @media print, screen and (min-width: 64em) {
    .button,
    .wp-core-ui.button {
      font-size: 1.5rem; } }
  .button::before,
  .wp-core-ui.button::before {
    content: '>';
    display: inline-block;
    margin-right: 0.46875rem;
    transition: transform 0.3s ease-in-out; }
  .button:hover,
  .wp-core-ui.button:hover {
    background-color: transparent; }
    .button:hover::before,
    .wp-core-ui.button:hover::before {
      transform: translate(-3px, 0); }
  .button--vo-purple,
  .wp-core-ui.button--vo-purple {
    color: #4266ff; }
  .button--vo-yellow,
  .wp-core-ui.button--vo-yellow {
    color: #82ff4f; }
  .button--vo-blue,
  .wp-core-ui.button--vo-blue {
    color: #ff825c; }
  .button--vo-green,
  .wp-core-ui.button--vo-green {
    color: #46B394; }
  .button--vo-gray,
  .wp-core-ui.button--vo-gray {
    color: #B7C0C5; }
  .button--vo-black,
  .wp-core-ui.button--vo-black {
    color: #000000; }
  .button--vo-white,
  .wp-core-ui.button--vo-white {
    color: #FFFFFF; }
  .button--large,
  .wp-core-ui.button--large {
    font-size: 1.5rem; }
    @media print, screen and (min-width: 40em) {
      .button--large,
      .wp-core-ui.button--large {
        font-size: 1.875rem; } }
    @media print, screen and (min-width: 64em) {
      .button--large,
      .wp-core-ui.button--large {
        font-size: 2.875rem; } }
  .button--rounded,
  .wp-core-ui.button--rounded {
    border-radius: 50%; }
  .button--clean::before,
  .wp-core-ui.button--clean::before {
    display: none; }
  .button--background,
  .wp-core-ui.button--background {
    background-color: #B7C0C5;
    transition: all 0.3s ease-in-out;
    color: #000000; }
    .button--background:hover,
    .wp-core-ui.button--background:hover {
      background-color: #d3d9dc; }
    .button--background.button--vo-purple,
    .wp-core-ui.button--background.button--vo-purple {
      background-color: #4266ff !important; }
      .button--background.button--vo-purple:hover,
      .wp-core-ui.button--background.button--vo-purple:hover {
        background-color: #758fff; }
    .button--background.button--vo-yellow,
    .wp-core-ui.button--background.button--vo-yellow {
      background-color: #82ff4f !important; }
      .button--background.button--vo-yellow:hover,
      .wp-core-ui.button--background.button--vo-yellow:hover {
        background-color: #a6ff82; }
    .button--background.button--vo-blue,
    .wp-core-ui.button--background.button--vo-blue {
      background-color: #ff825c !important; }
      .button--background.button--vo-blue:hover,
      .wp-core-ui.button--background.button--vo-blue:hover {
        background-color: #ffa98f; }
    .button--background.button--vo-green,
    .wp-core-ui.button--background.button--vo-green {
      background-color: #46B394 !important; }
      .button--background.button--vo-green:hover,
      .wp-core-ui.button--background.button--vo-green:hover {
        background-color: #68c4aa; }

/**
 * Forms
 * ----------------------------------------------------------------------------
 */
/**
 * Basic styling
 */
input:not([type]),
input[type='text'],
input[type='password'],
input[type='email'],
input[type='url'],
input[type='date'],
input[type='month'],
input[type='time'],
input[type='datetime'],
input[type='datetime-local'],
input[type='week'],
input[type='number'],
input[type='search'],
input[type='tel'],
textarea {
  background: #FFFFFF;
  border: 1px solid #F1F1F1;
  padding: 10px 15px;
  box-shadow: none;
  border-radius: 0;
  box-sizing: border-box;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none; }
  input:not([type]):focus, input:not([type]):focus-within,
  input[type='text']:focus,
  input[type='text']:focus-within,
  input[type='password']:focus,
  input[type='password']:focus-within,
  input[type='email']:focus,
  input[type='email']:focus-within,
  input[type='url']:focus,
  input[type='url']:focus-within,
  input[type='date']:focus,
  input[type='date']:focus-within,
  input[type='month']:focus,
  input[type='month']:focus-within,
  input[type='time']:focus,
  input[type='time']:focus-within,
  input[type='datetime']:focus,
  input[type='datetime']:focus-within,
  input[type='datetime-local']:focus,
  input[type='datetime-local']:focus-within,
  input[type='week']:focus,
  input[type='week']:focus-within,
  input[type='number']:focus,
  input[type='number']:focus-within,
  input[type='search']:focus,
  input[type='search']:focus-within,
  input[type='tel']:focus,
  input[type='tel']:focus-within,
  textarea:focus,
  textarea:focus-within {
    border: 1px solid #B7C0C5; }
  input:not([type])::-webkit-input-placeholder, input[type='text']::-webkit-input-placeholder, input[type='password']::-webkit-input-placeholder, input[type='email']::-webkit-input-placeholder, input[type='url']::-webkit-input-placeholder, input[type='date']::-webkit-input-placeholder, input[type='month']::-webkit-input-placeholder, input[type='time']::-webkit-input-placeholder, input[type='datetime']::-webkit-input-placeholder, input[type='datetime-local']::-webkit-input-placeholder, input[type='week']::-webkit-input-placeholder, input[type='number']::-webkit-input-placeholder, input[type='search']::-webkit-input-placeholder, input[type='tel']::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    color: #cacaca; }
  input:not([type]):-moz-placeholder, input[type='text']:-moz-placeholder, input[type='password']:-moz-placeholder, input[type='email']:-moz-placeholder, input[type='url']:-moz-placeholder, input[type='date']:-moz-placeholder, input[type='month']:-moz-placeholder, input[type='time']:-moz-placeholder, input[type='datetime']:-moz-placeholder, input[type='datetime-local']:-moz-placeholder, input[type='week']:-moz-placeholder, input[type='number']:-moz-placeholder, input[type='search']:-moz-placeholder, input[type='tel']:-moz-placeholder, textarea:-moz-placeholder {
    color: #cacaca; }
  input:not([type])::-moz-placeholder, input[type='text']::-moz-placeholder, input[type='password']::-moz-placeholder, input[type='email']::-moz-placeholder, input[type='url']::-moz-placeholder, input[type='date']::-moz-placeholder, input[type='month']::-moz-placeholder, input[type='time']::-moz-placeholder, input[type='datetime']::-moz-placeholder, input[type='datetime-local']::-moz-placeholder, input[type='week']::-moz-placeholder, input[type='number']::-moz-placeholder, input[type='search']::-moz-placeholder, input[type='tel']::-moz-placeholder, textarea::-moz-placeholder {
    color: #cacaca; }
  input:not([type]):-ms-input-placeholder, input[type='text']:-ms-input-placeholder, input[type='password']:-ms-input-placeholder, input[type='email']:-ms-input-placeholder, input[type='url']:-ms-input-placeholder, input[type='date']:-ms-input-placeholder, input[type='month']:-ms-input-placeholder, input[type='time']:-ms-input-placeholder, input[type='datetime']:-ms-input-placeholder, input[type='datetime-local']:-ms-input-placeholder, input[type='week']:-ms-input-placeholder, input[type='number']:-ms-input-placeholder, input[type='search']:-ms-input-placeholder, input[type='tel']:-ms-input-placeholder, textarea:-ms-input-placeholder {
    color: #cacaca; }

/**
 * Textarea
 */
textarea {
  line-height: 1.25rem; }

/**
 * Checkbox and radio
 */
input[type='checkbox'],
input[type='radio'] {
  box-sizing: border-box;
  padding: 0;
  display: block;
  margin-right: 0.25rem;
  margin-top: 2px;
  clear: both; }

/**
 * Buttons
 */
button,
input[type='button'],
input[type='reset'],
input[type='submit'] {
  cursor: pointer; }

/**
 * Select
 */
select {
  background: #FFFFFF;
  border: 1px solid #F1F1F1;
  width: 100%;
  padding: 10px 15px;
  border-radius: 0;
  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none; }

/**
 * Disabled
 */
button[disabled],
input[disabled],
select[disabled] {
  cursor: default; }

/**
 * Search
 */
input[type='search'] {
  -webkit-appearance: textfield; }

input[type='search']::-webkit-search-cancel-button,
input[type='search']::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Color
 */
input[type='color'] {
  background: #FFFFFF;
  border: 1px solid #F1F1F1; }

/*
 * MailChimp
 */
.mailchimp-form input[type='email'] {
  background-color: transparent;
  border: 0;
  border-bottom: 3px solid #646464;
  color: #000000;
  padding-left: 0;
  font-weight: 500;
  display: inline-block;
  width: 100%; }
  .mailchimp-form input[type='email']::-webkit-input-placeholder {
    font-weight: 500;
    color: #646464; }
  .mailchimp-form input[type='email']:-moz-placeholder {
    font-weight: 500;
    color: #646464; }
  .mailchimp-form input[type='email']::-moz-placeholder {
    font-weight: 500;
    color: #646464; }
  .mailchimp-form input[type='email']:-ms-input-placeholder {
    font-weight: 500;
    color: #646464; }
  @media print, screen and (min-width: 40em) {
    .mailchimp-form input[type='email'] {
      width: 50%; } }
  @media print, screen and (min-width: 64em) {
    .mailchimp-form input[type='email'] {
      width: 60%; } }

.mailchimp-form input[type='submit'] {
  background-color: transparent;
  border: 0;
  display: inline-block;
  font-weight: 700;
  font-size: 1.125rem;
  color: #646464;
  vertical-align: middle;
  margin-top: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .mailchimp-form input[type='submit'] {
      margin-top: 0;
      margin-left: 0.9375rem; } }
  @media print, screen and (min-width: 64em) {
    .mailchimp-form input[type='submit'] {
      font-size: 1.5rem; } }

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  margin: 0.9375rem 0;
  border: 0;
  box-shadow: none;
  padding: 10px 0 0;
  min-width: 100%; }
  .section__finder .card {
    margin: 0; }
  .card--max-width {
    max-width: 25rem;
    margin-left: auto;
    margin-right: auto; }
  .card--hover {
    transition: all 0.3s ease-in-out; }
    .card--hover:hover {
      transform: translate(0, -3px); }
      .card--hover:hover .card__image::before {
        content: '';
        background-color: rgba(0, 0, 0, 0.2); }
      .card--hover:hover .card__button {
        transform: translate(-4px, -2px); }

.card__image {
  font-size: 0;
  position: relative;
  min-height: 150px; }
  .card__image::before {
    content: '';
    position: absolute;
    z-index: 10;
    background-color: rgba(0, 0, 0, 0);
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 0;
    padding-bottom: 56.25%;
    transition: all 0.3s ease-in-out; }
  .card__image img {
    object-fit: cover;
    position: relative;
    z-index: 9; }

.card__title {
  margin-top: 0.3125rem;
  margin-bottom: 0;
  display: block; }
  .card__title--vo-white {
    color: #FFFFFF; }

.card__text {
  margin-bottom: 0.9375rem; }
  .card__text--vo-white {
    color: #FFFFFF; }

.card__button {
  display: block;
  text-align: center;
  color: #000000;
  background-color: #B7C0C5;
  position: absolute;
  z-index: 11;
  bottom: -0.9375rem;
  right: -0.9375rem;
  font-size: 1.625rem;
  height: 55px;
  width: 55px;
  line-height: 51px;
  transition: all 0.3s ease-in-out; }
  @media print, screen and (min-width: 40em) {
    .card__button {
      font-size: 2.25rem;
      height: 65px;
      width: 65px;
      line-height: 58px; } }
  @media print, screen and (min-width: 64em) {
    .card__button {
      font-size: 2.625rem;
      height: 80px;
      width: 80px;
      line-height: 74px; } }

.card__date {
  margin-bottom: 0.25rem;
  font-size: 1rem;
  font-weight: bold; }

.card__location {
  margin-top: 0.46875rem; }
  .card__location svg {
    margin-right: 10px; }

.card__inner {
  height: 100%;
  background-color: transparent;
  padding: 0 1.875rem 1.875rem; }
  .card__inner .card__title {
    min-width: 100%;
    margin-bottom: 0.9375rem; }
    .card__inner .card__title.h2 {
      font-size: 1.5rem; }
    .card__inner .card__title span {
      max-width: 32.5rem;
      display: block; }
  .card__inner a button {
    outline: 0; }
  .card__inner .card__link {
    align-self: flex-end;
    min-width: 100%;
    flex-basis: 100%;
    margin-top: auto;
    text-align: left; }
  .card__inner--vo-purple {
    background-color: #4266ff; }
    .card__inner--vo-purple .card__link a {
      color: #FFFFFF; }
  .card__inner--vo-blue {
    background-color: #ff825c; }
    .card__inner--vo-blue .card__link a {
      color: #FFFFFF; }
  .card__inner--vo-yellow {
    background-color: #82ff4f; }
    .card__inner--vo-yellow .card__link a {
      color: #000000; }
  .card__inner--vo-black {
    background-color: #000000; }
    .card__inner--vo-black .card__link a {
      color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .card__inner--min-height {
      min-height: 280px; } }

.card--knowledge .card__inner {
  padding: 1.875rem; }

.card--knowledge .card__text {
  margin-bottom: 0.3125rem; }

.card--knowledge .card__top-wrap {
  padding-top: 0;
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 4px solid #000000; }

.card--knowledge .card__title {
  padding-top: 0; }
  .card--knowledge .card__title h3 {
    font-size: 1.5rem; }

.card--knowledge .knowledge-filter--terms h2 {
  font-size: 1.375rem; }

.card--knowledge .knowledge-filter--terms__label {
  color: #FFFFFF; }

.card--knowledge .inline-select-filter__button {
  color: #FFFFFF; }

.card--knowledge .card__cta-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem; }

.card--knowledge .card__form {
  width: 100%; }

.card--knowledge .card__submit-form {
  padding: 0.875rem 1.875rem;
  background-color: #000000;
  color: #ff825c; }

.card--knowledge .card__link {
  flex-basis: unset;
  min-width: unset;
  align-self: center;
  margin-top: 0; }

.card__excerpt {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  /* autoprefixer: off */
  -webkit-box-orient: vertical;
  /* autoprefixer: on */
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 1rem;
  margin-top: 0.5rem;
  line-height: 1.3; }

.card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 1.25rem; }
  .card__tags span {
    font-size: 0.875rem;
    font-weight: bold;
    padding: 0.375rem 0.875rem;
    line-height: 1.2;
    border-radius: 999px;
    border: 2px solid #000000; }

@media print, screen and (min-width: 64em) {
  .card--large {
    flex-direction: row;
    border-bottom: 6px solid #000000;
    padding-bottom: 1.875rem; }
    .card--large .card__image {
      width: calc(100% / 3); }
    .card--large .card__info {
      width: calc((100% / 3) * 2);
      padding-left: 1.875rem; }
    .card--large .card__title h3 {
      font-size: 2.875rem; }
    .card--large .card__excerpt {
      -webkit-line-clamp: 3;
      font-size: 1.25rem;
      margin-top: 0.875rem; }
    .card--large .card__date {
      margin-bottom: 0.25rem;
      font-size: 1.25rem; }
    .card--large .card__tags {
      margin-top: 2.25rem; } }

.section-latest__container--post {
  position: relative;
  display: flex;
  align-items: center;
  text-align: center;
  justify-content: center;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
  background-size: cover; }
  .section-latest__container--post .h4 {
    max-width: 85%;
    margin: 0 auto;
    font-size: 1.25rem; }
  .section-latest__container--post .circulair {
    background: white;
    color: black;
    border-radius: 50%;
    position: absolute;
    height: calc(90% - 65px);
    width: calc(90% - 65px);
    display: flex;
    justify-content: center;
    flex-direction: column; }
    .section-latest__container--post .circulair span.vo-yellow {
      color: #82ff4f; }
    .section-latest__container--post .circulair span.vo-purple {
      color: #4266ff; }
    .section-latest__container--post .circulair span.vo-blue {
      color: #ff825c; }
    .section-latest__container--post .circulair .card__button {
      bottom: -40px;
      align-self: center;
      right: auto;
      left: auto; }
  .section-latest__container--post:before {
    content: "";
    display: block;
    padding-top: 100%; }
  .section-latest__container--post .button--circulair {
    display: flex;
    position: absolute;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    height: 80px;
    width: 80px;
    align-self: center;
    bottom: -40px;
    color: #000000;
    text-decoration: none; }
    .section-latest__container--post .button--circulair:hover {
      background-color: #000000; }
  .section-latest__container--post:hover .card__button {
    transform: translateY(-3px);
    -webkit-transition: all .3s ease-in-out;
    transition: all .3s ease-in-out; }

.search-form {
  background: #fefefe;
  display: flex;
  position: relative; }
  .search-form--menu {
    max-width: 300px;
    margin: 0.9375rem auto; }
    .search-form--menu .search-form__field[type='search']:focus {
      border-color: #0a0a0a; }
  .search-form__field[type='search'] {
    height: 40px;
    margin: 0;
    padding: 0;
    position: absolute;
    z-index: 101;
    right: 40px;
    width: 0;
    background-color: #fefefe;
    transition: all 0.5s ease-in-out;
    border: 1px solid rgba(241, 241, 241, 0);
    box-sizing: border-box; }
    .search-is-active .search-form__field[type='search'] {
      width: 220px;
      padding: 0 48px 0 0.46875rem;
      border: 1px solid #f1f1f1; }
    .search-is-active .search-form__field[type='search']:focus {
      border-color: #0a0a0a; }
    .search-form--menu .search-form__field[type='search'] {
      position: relative;
      width: 100%;
      padding: 0 0.46875rem;
      border: 1px solid #f1f1f1;
      right: 0; }
  .search-form__button {
    background-color: transparent;
    color: #0a0a0a;
    height: 40px;
    width: 40px;
    outline: none !important;
    transition: all 0.5s ease-in-out;
    position: relative;
    z-index: 110; }
    .search-is-active .search-form__button--submit,
    .search-form--menu .search-form__button {
      background-color: #0a0a0a;
      color: #fefefe; }
    .search-form__button--close {
      text-align: center;
      line-height: 40px;
      width: 0;
      overflow: hidden;
      transition: all 0.3s ease-in-out;
      z-index: 110;
      cursor: pointer; }
      .search-is-active .search-form__button--close {
        width: 40px; }

.social-media {
  margin-left: -0.23438rem;
  margin-right: -0.23438rem;
  margin-bottom: 0; }
  @media print, screen and (min-width: 64em) {
    .social-media {
      margin-top: 0; } }
  .social-media__icon {
    margin: 0 0.23438rem 0.46875rem;
    display: inline-block;
    color: #FFFFFF;
    width: 42px;
    height: 42px;
    line-height: 42px;
    font-size: 1.25rem;
    text-align: center;
    border-radius: 50%;
    background-color: #000000;
    transition: all 0.3s ease-in-out;
    border: 1px solid #000000; }
    .social-media__icon:hover, .social-media__icon:focus {
      color: #000000;
      background-color: #FFFFFF;
      transform: translateY(-3px); }

.vo-yellow span.section {
  color: #ff9900; }

.vo-yellow .button--circulair {
  background-color: #82ff4f; }
  .vo-yellow .button--circulair:hover {
    color: #82ff4f; }

.vo-yellow .section-latest__container--agenda {
  background-color: #82ff4f; }

.vo-yellow .section__related-pages a:hover {
  color: #82ff4f; }

.vo-yellow .knowledge__item:nth-child(odd) {
  background-color: #82ff4f; }

.vo-yellow .hero--theme--vo-yellow a {
  color: #82ff4f; }

.vo-yellow a {
  color: #ff9900; }

.vo-yellow .featured__inner a {
  color: #82ff4f; }

.vo-yellow.template-tab__item {
  background-color: #82ff4f; }

.block--hero.hero--theme--vo-yellow.dots__background--none .hero__inner .hero__description, .block--hero.hero--theme--vo-yellow.hero--is-section .hero__inner .hero__description {
  color: #82ff4f; }

.block--hero.hero--theme--vo-yellow .grid-container {
  border-top: 10px solid #82ff4f; }

.vo-purple span.section {
  color: #4266ff; }

.vo-purple .button--circulair {
  background-color: #4266ff; }
  .vo-purple .button--circulair:hover {
    color: #4266ff; }

.vo-purple .section-latest__container--agenda {
  background-color: #4266ff; }

.vo-purple .section__related-pages a:hover {
  color: #4266ff; }

.vo-purple .knowledge__item:nth-child(odd) {
  background-color: #4266ff; }

.vo-purple a {
  color: #4266ff; }

.vo-purple.template-tab__item {
  background-color: #4266ff; }

.block--hero.hero--theme--vo-purple.dots__background--none .hero__inner .hero__description, .block--hero.hero--theme--vo-purple.hero--is-section .hero__inner .hero__description {
  color: #4266ff; }

.block--hero.hero--theme--vo-purple .grid-container {
  border-top: 10px solid #4266ff; }

.vo-blue span.section {
  color: #ff825c; }

.vo-blue .button--circulair {
  background-color: #ff825c; }
  .vo-blue .button--circulair:hover {
    color: #ff825c; }

.vo-blue .section-latest__container--agenda {
  background-color: #ff825c; }

.vo-blue .section__related-pages a:hover {
  color: #ff825c; }

.vo-blue .knowledge__item:nth-child(odd) {
  background-color: #ff825c; }

.vo-blue a {
  color: #ff825c; }

.vo-blue.template-tab__item {
  background-color: #ff825c; }

.block--hero.hero--theme--vo-blue.dots__background--none .hero__inner .hero__description, .block--hero.hero--theme--vo-blue.hero--is-section .hero__inner .hero__description {
  color: #ff825c; }

.block--hero.hero--theme--vo-blue .grid-container {
  border-top: 10px solid #ff825c; }

.section-latest__container {
  height: 100%; }

@media print, screen and (min-width: 40em) and (max-width: 63.99875em) {
  .section__finder {
    margin-top: 1.875rem; } }

.section__finder .part--find-section {
  height: 100%;
  background-color: #000000; }
  .section__finder .part--find-section .card {
    height: 100%; }
    .section__finder .part--find-section .card form {
      height: 100%; }
  .section__finder .part--find-section .find-section__form {
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none !important;
    cursor: pointer; }
    .section__finder .part--find-section .find-section__form .card__link {
      margin-top: auto;
      align-self: unset;
      min-width: 100%;
      flex-basis: unset; }

.part--find-section {
  width: 100%; }
  .part--find-section .find-section__form button {
    outline: 0; }

.section__related-pages a {
  font-weight: normal; }

.find-section__form,
.part--find-section,
.part--find-section * {
  text-decoration: none !important;
  cursor: pointer !important; }

.section-latest__container--agenda {
  border-top: 10px solid #000000;
  padding: 1.875rem;
  display: flex;
  flex-direction: column; }
  .section-latest__container--agenda .agenda__item {
    padding: 25px 0; }
    .section-latest__container--agenda .agenda__item:first-of-type {
      padding-top: 0;
      border-bottom: 3px solid #000000; }
    .section-latest__container--agenda .agenda__item .h3 {
      margin-top: 0;
      margin-bottom: 15px; }
  .section-latest__container--agenda a {
    color: #000000;
    margin-top: auto; }

.information__container {
  padding: 30px;
  margin-bottom: 40px;
  border-top: 10px solid #000000;
  background-color: #F1F1F1; }
  .information__container .information__label {
    font-weight: 700;
    margin-bottom: 10px; }
  .information__container .h4 {
    margin-top: 0; }
  .information__container button {
    margin-top: 40px;
    outline: 0; }
    .information__container button:hover, .information__container button:focus {
      outline: 0 !important; }

.location__container p {
  margin: 0; }

.section__related-pages {
  border-top: 10px solid #000000;
  padding: 10px 35px;
  margin-top: 30px;
  background-color: transparent; }
  .section__related-pages .h--item {
    margin-top: 20px; }
  .section__related-pages a {
    color: #000000; }
  .section__related-pages ul {
    list-style: none;
    margin: 0; }
  .section__related-pages li {
    margin: 15px 0; }
  .section__related-pages .button--small {
    position: inherit;
    height: 20px;
    width: 20px;
    display: inline-block;
    line-height: 18px;
    font-size: 16px; }

.cta__container {
  text-align: center; }
  @media print, screen and (min-width: 64em) {
    .cta__container {
      text-align: left; } }
  .cta__container .h2 {
    margin: 0 0 15px 0; }
  .cta__container.hero--theme {
    padding: 30px; }
  .cta__container a {
    text-decoration: none; }

.circulair__container {
  background: white;
  color: black;
  border-radius: 50%;
  height: 225px;
  width: 225px;
  max-width: 100%;
  display: flex;
  margin: 0 auto; }
  .circulair__container button {
    margin: 0 auto;
    outline: 0; }
  .circulair__container:hover {
    transform: translate(0, -3px); }

.section__knowledge {
  border-top: 10px solid #000000;
  margin-top: 30px;
  padding: 45px 0; }
  @media print, screen and (min-width: 40em) {
    .section__knowledge {
      margin-top: 3.75rem; } }
  @media print, screen and (min-width: 64em) {
    .section__knowledge {
      margin-top: 5.625rem; } }
  .section__knowledge .cell {
    margin-bottom: 0.9375rem; }
    .section__knowledge .cell:last-child {
      margin-bottom: 0; }
    @media print, screen and (min-width: 40em) {
      .section__knowledge .cell {
        margin-bottom: 1.875rem; } }
    @media print, screen and (min-width: 64em) {
      .section__knowledge .cell {
        margin-bottom: 0; } }
  .section__knowledge .cta__container {
    background: transparent;
    padding: 0; }

.knowledge__item {
  display: flex;
  flex-direction: column;
  position: relative;
  background-color: #FFFFFF;
  padding: 30px;
  transition: 0.25s ease-in-out; }
  .knowledge__item .h4 {
    margin: 0 0 15px 0; }
  .knowledge__item .button--bottom {
    text-align: left;
    margin-top: 15px; }
    @media print, screen and (min-width: 64em) {
      .knowledge__item .button--bottom {
        margin-top: auto; } }
  .knowledge__item:hover {
    transform: translate(0, -3px); }
    .knowledge__item:hover .button--bottom:before {
      transform: translate(-3px, 0); }

.dots__background--none {
  background-color: #B7C0C5; }

.dots__background--vo-yellow {
  background-color: #B7C0C5;
  background-position: 0 0, 18px 18px;
  background-size: 36px 36px;
  background-image: radial-gradient(#82ff4f 7px, transparent 7px), radial-gradient(#82ff4f 7px, transparent 7px); }

.dots__background--vo-purple {
  background-color: #B7C0C5;
  background-position: 0 0, 18px 18px;
  background-size: 36px 36px;
  background-image: radial-gradient(#4266ff 7px, transparent 7px), radial-gradient(#4266ff 7px, transparent 7px); }

.dots__background--vo-blue {
  background-color: #B7C0C5;
  background-position: 0 0, 18px 18px;
  background-size: 36px 36px;
  background-image: radial-gradient(#ff825c 7px, transparent 7px), radial-gradient(#ff825c 7px, transparent 7px); }

.circle__background--none {
  background-color: #B7C0C5; }

.circle__background--vo-yellow {
  background-color: #B7C0C5;
  background-position: 0 0, 60px 60px, 0 0, 60px 60px;
  background-size: 120px 120px;
  background-image: radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#82ff4f 34px, transparent 34px), radial-gradient(#82ff4f 34px, transparent 34px); }

.circle__background--vo-purple {
  background-color: #B7C0C5;
  background-position: 0 0, 60px 60px, 0 0, 60px 60px;
  background-size: 120px 120px;
  background-image: radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#4266ff 34px, transparent 34px), radial-gradient(#4266ff 34px, transparent 34px); }

.circle__background--vo-blue {
  background-color: #B7C0C5;
  background-position: 0 0, 60px 60px, 0 0, 60px 60px;
  background-size: 120px 120px;
  background-image: radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#B7C0C5 29px, transparent 29px), radial-gradient(#ff825c 34px, transparent 34px), radial-gradient(#ff825c 34px, transparent 34px); }

.solid__background--none {
  background-color: #B7C0C5; }

.solid__background--vo-yellow {
  background-color: #82ff4f; }

.solid__background--vo-purple {
  background-color: #4266ff; }

.solid__background--vo-blue {
  background-color: #ff825c; }

.archive-filter__container .card {
  animation-name: slide-up;
  animation-duration: 0.5s;
  animation-timing-function: ease-in-out;
  animation-fill-mode: forwards; }

.default-select-filter {
  position: relative; }

.default-select-filter select {
  width: 100% !important;
  padding-right: 2.25rem !important; }

.default-select-filter svg {
  position: absolute !important;
  top: 50% !important;
  right: 0.75rem !important;
  transform: translateY(-50%);
  pointer-events: none; }

.inline-select-filter {
  max-width: none !important;
  margin-block: 0;
  line-height: 1.5; }

.inline-select-filter > span {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5ch; }

.inline-select-filter__wrapper {
  position: relative; }

.inline-select-filter__wrapper:focus-within {
  outline: 3px solid rgba(66, 102, 255, 0.25);
  outline-offset: 0.2em; }

.inline-select-filter__button {
  padding: 0;
  background-color: transparent;
  color: #4266ff;
  text-decoration: underline;
  text-transform: lowercase; }

:hover > .inline-select-filter__button {
  text-underline-offset: .15em; }

.inline-select-filter__wrapper select {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  font-size: 1rem; }

.filter__container {
  display: flex;
  flex-direction: column;
  padding-bottom: 30px;
  width: 100%;
  flex-basis: 100%;
  max-width: 100%; }
  .filter__container .search__inner {
    display: flex;
    flex-direction: row-reverse;
    width: 100%;
    margin-bottom: 0.9375rem; }
    .filter__container .search__inner input {
      width: 100%; }
    .filter__container .search__inner button {
      background-color: transparent; }
  .filter__container .filter__options {
    align-self: flex-end;
    position: relative;
    margin-bottom: 1.40625rem; }
    .filter__container .filter__options svg {
      position: relative;
      right: 0;
      top: 0; }
    .filter__container .filter__options select {
      outline: 0;
      width: 100%; }
      @media print, screen and (min-width: 40em) {
        .filter__container .filter__options select {
          width: 17.5rem;
          max-width: 100%; } }
    .filter__container .filter__options .filter__options--sections {
      position: relative; }
      .filter__container .filter__options .filter__options--sections svg {
        position: absolute;
        right: 0;
        top: 11px;
        pointer-events: none; }
  .filter__container .search__inner {
    margin-right: auto;
    border-bottom: 1px solid #000000; }
  .filter__container .search__input {
    border: none; }
    .filter__container .search__input:focus {
      border: none; }
  .filter__container .filter__options {
    display: flex;
    align-items: center; }
    @media print, screen and (max-width: 39.99875em) {
      .filter__container .filter__options {
        margin: 0;
        min-width: 100%;
        display: block; } }
    @media print, screen and (min-width: 40em) {
      .filter__container .filter__options {
        margin: 0 -0.46875rem; } }
    .filter__container .filter__options .filter__select-label {
      position: relative;
      display: block;
      margin-bottom: 0.9375rem; }
      @media print, screen and (min-width: 40em) {
        .filter__container .filter__options .filter__select-label {
          margin: 0 0.46875rem; } }
      .filter__container .filter__options .filter__select-label .filter__select-icon {
        position: absolute;
        width: 16px;
        height: 18px;
        display: block;
        top: 12px;
        right: 8px; }
      .filter__container .filter__options .filter__select-label select {
        margin: 0;
        padding-right: 30px;
        border: 1px solid #F1F1F1; }
  .filter__container .filter__option {
    margin: 0 10px;
    cursor: pointer; }
    .filter__container .filter__option--selected {
      font-weight: 700; }
  .filter__container--knowledge {
    flex-direction: column;
    margin-right: auto;
    margin-left: auto;
    gap: 1.875rem; }
    @media print, screen and (min-width: 64em) {
      .filter__container--knowledge {
        padding-bottom: 3.75rem; } }

.entry__content {
  font-size: 1.125rem; }
  .entry__content, .entry__content p, .entry__content ul, .entry__content ol {
    line-height: 1.875rem; }

.entry__navigation {
  margin: 0;
  list-style: none; }
  .entry__navigation a {
    display: block;
    color: #000000;
    background-color: #F1F1F1;
    margin: 0;
    padding: 0.9375rem;
    border-top: 5px solid #000000; }
    @media print, screen and (min-width: 40em) {
      .entry__navigation a {
        border-top-width: 10px;
        padding: 1.25rem 1.875rem; } }
    .entry__navigation a:hover, .entry__navigation a:focus, .entry__navigation a.is-active {
      color: #FFFFFF;
      background-color: #4266ff;
      text-decoration: none; }

.entry__navigation + .cta__container {
  margin-top: 0.9375rem;
  border-top: 5px solid #000000; }
  @media print, screen and (min-width: 40em) {
    .entry__navigation + .cta__container {
      margin-top: 1.875rem;
      border-top-width: 10px; } }

/**
 * Variation
 */
.entry--content .hero {
  margin-bottom: 0; }

.entry--content .hero:not(.hero--image) .hero__inner {
  margin-left: auto;
  margin-right: auto; }

.entry--content .hero:not(.hero--image) .hero__title {
  max-width: 49.375rem; }

.entry--content .entry__content {
  padding: 0.9375rem 0; }
  @media print, screen and (min-width: 40em) {
    .entry--content .entry__content {
      padding: 1.875rem 0; } }
  @media print, screen and (min-width: 64em) {
    .entry--content .entry__content {
      padding: 3.75rem 0; } }
  .entry--content .entry__content > p, .entry--content .entry__content > ol, .entry--content .entry__content > ul, .entry--content .entry__content > div, .entry--content .entry__content > section, .entry--content .entry__content > figure, .entry--content .entry__content > blockquote {
    margin-bottom: 0.9375rem; }
    @media print, screen and (min-width: 40em) {
      .entry--content .entry__content > p, .entry--content .entry__content > ol, .entry--content .entry__content > ul, .entry--content .entry__content > div, .entry--content .entry__content > section, .entry--content .entry__content > figure, .entry--content .entry__content > blockquote {
        margin-bottom: 1.875rem; } }
    @media print, screen and (min-width: 64em) {
      .entry--content .entry__content > p, .entry--content .entry__content > ol, .entry--content .entry__content > ul, .entry--content .entry__content > div, .entry--content .entry__content > section, .entry--content .entry__content > figure, .entry--content .entry__content > blockquote {
        margin-bottom: 2.75rem; } }
    .entry--content .entry__content > p h1, .entry--content .entry__content > ol h1, .entry--content .entry__content > ul h1, .entry--content .entry__content > div h1, .entry--content .entry__content > section h1, .entry--content .entry__content > figure h1, .entry--content .entry__content > blockquote h1 {
      margin-bottom: 1rem; }
    .entry--content .entry__content > p h2, .entry--content .entry__content > ol h2, .entry--content .entry__content > ul h2, .entry--content .entry__content > div h2, .entry--content .entry__content > section h2, .entry--content .entry__content > figure h2, .entry--content .entry__content > blockquote h2 {
      margin-bottom: 1rem; }
    .entry--content .entry__content > p h3, .entry--content .entry__content > ol h3, .entry--content .entry__content > ul h3, .entry--content .entry__content > div h3, .entry--content .entry__content > section h3, .entry--content .entry__content > figure h3, .entry--content .entry__content > blockquote h3 {
      margin-bottom: 1rem; }
    .entry--content .entry__content > p h4, .entry--content .entry__content > ol h4, .entry--content .entry__content > ul h4, .entry--content .entry__content > div h4, .entry--content .entry__content > section h4, .entry--content .entry__content > figure h4, .entry--content .entry__content > blockquote h4 {
      margin-bottom: 1rem; }
    .entry--content .entry__content > p h5, .entry--content .entry__content > ol h5, .entry--content .entry__content > ul h5, .entry--content .entry__content > div h5, .entry--content .entry__content > section h5, .entry--content .entry__content > figure h5, .entry--content .entry__content > blockquote h5 {
      margin-bottom: 1rem; }
    .entry--content .entry__content > p h6, .entry--content .entry__content > ol h6, .entry--content .entry__content > ul h6, .entry--content .entry__content > div h6, .entry--content .entry__content > section h6, .entry--content .entry__content > figure h6, .entry--content .entry__content > blockquote h6 {
      margin-bottom: 1rem; }
  .entry--content .entry__content > h1 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h1:first-child {
      margin-top: 0; }
  .entry--content .entry__content > h2 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h2:first-child {
      margin-top: 0; }
  .entry--content .entry__content > h3 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h3:first-child {
      margin-top: 0; }
  .entry--content .entry__content > h4 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h4:first-child {
      margin-top: 0; }
  .entry--content .entry__content > h5 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h5:first-child {
      margin-top: 0; }
  .entry--content .entry__content > h6 {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
    .entry--content .entry__content > h6:first-child {
      margin-top: 0; }
  .entry--content .entry__content > [class^="wp-block"],
  .entry--content .entry__content > .block--anchor {
    max-width: 49.375rem;
    margin-left: auto;
    margin-right: auto; }
  .entry--content .entry__content > :last-child {
    margin-bottom: 0; }

@media print, screen and (min-width: 64em) {
  .entry--about-us .cell--content, .entry--price .cell--content {
    order: 2; } }

@media print, screen and (min-width: 64em) {
  .entry--about-us .cell--aside, .entry--price .cell--aside {
    order: 1; } }

.entry--about-us .entry__content, .entry--price .entry__content {
  padding: 0.9375rem 0;
  border-top: 5px solid #4266ff; }
  @media print, screen and (min-width: 40em) {
    .entry--about-us .entry__content, .entry--price .entry__content {
      padding: 1.25rem 0;
      border-top-width: 10px; } }
  .entry--about-us .entry__content p, .entry--about-us .entry__content ul, .entry--price .entry__content p, .entry--price .entry__content ul {
    margin-left: 0;
    margin-right: 0;
    max-width: 100%; }

.entry--vo-green .entry__navigation a:hover, .entry--vo-green .entry__navigation a:focus, .entry--vo-green .entry__navigation a.is-active {
  background-color: #46B394; }

.entry--vo-green .entry__content {
  border-color: #46B394; }

.entry__navigation__toggle {
  width: 100%;
  padding: 0.625rem 1.25rem;
  font-size: 1.25rem;
  background: #FFFFFF;
  margin-bottom: 0.9375rem;
  border-radius: 999px;
  font-weight: bold;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 3px solid #000000; }
  .entry__navigation__toggle svg {
    transition: transform .2s ease-in-out; }
  .entry__navigation__toggle--active svg {
    transform: rotate(180deg); }

.entry__navigation--mobile {
  display: none; }

.template-tabs__container {
  position: absolute;
  display: flex;
  justify-content: center;
  text-align: center;
  bottom: 0;
  width: 100%; }

.template-tab__item {
  margin: 0 15px;
  position: relative;
  padding: 15px;
  flex: 1;
  max-width: 200px;
  font-weight: 700; }
  .template-tab__item:hover {
    color: #FFFFFF; }
  .template-tab__item--page.template-tab__item {
    background: #FFFFFF; }
    .template-tab__item--page.template-tab__item:hover {
      color: inherit; }

.knowledge-item {
  position: relative;
  text-align: left;
  max-width: 49.375rem;
  height: 100%;
  margin-right: auto;
  margin-left: auto;
  animation-name: slide-up;
  animation-duration: 0.5s;
  animation-timing-function: ease-in-out;
  animation-fill-mode: forwards; }
  .knowledge-item--vo-yellow {
    background-color: #82ff4f; }
  .knowledge-item--vo-purple {
    background-color: #4266ff; }
  .knowledge-item--vo-blue {
    background-color: #ff825c; }
  .knowledge-item--vo-green {
    background-color: #46B394; }
  .knowledge-item--vo-gray {
    background-color: #B7C0C5; }
  .knowledge-item--vo-black {
    background-color: #000000; }
  .knowledge-item--vo-white {
    background-color: #FFFFFF; }

.knowledge-item__inner {
  position: relative;
  padding: 0.9375rem;
  border-top: 5px solid #000000;
  min-height: 10.9375rem;
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: 0.25s ease-in-out; }
  @media print, screen and (min-width: 40em) {
    .knowledge-item__inner {
      border-top-width: 10px;
      padding: 1.125rem 1.5625rem 1.5625rem 1.5625rem; } }

.knowledge-item__term {
  margin-bottom: 0.5rem;
  display: inline-block;
  padding: 6px 10px;
  background-color: #000000;
  color: #FFFFFF;
  width: max-content; }

.knowledge-item__title {
  font-size: 1.5rem;
  font-weight: bold;
  max-width: 80%; }

.knowledge-item__link {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 1; }
  .knowledge-item__link:hover + .knowledge-item__inner, .knowledge-item__link:focus + .knowledge-item__inner {
    transform: translateY(-5px); }

.knowledge-item__date {
  margin-top: auto; }

.knowledge-item__type {
  position: absolute;
  color: #FFFFFF;
  right: 10px; }

.slide-out__container {
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .slide-out__container {
      margin-bottom: 1.875rem; } }

.slide-out__content {
  overflow: hidden;
  max-height: 0;
  margin-top: 10px;
  transition: max-height 500ms ease-in-out;
  -webkit-transition: max-height 500ms ease-in-out;
  -moz-transition: max-height 500ms ease-in-out;
  -o-transition: max-height 500ms ease-in-out; }
  .slide-out__content--active {
    max-height: 100vh; }
  .slide-out__content p {
    max-width: 100%; }

.slide-out__title {
  display: flex;
  align-items: center;
  border-bottom: 3px solid #000000;
  cursor: pointer; }
  @media print, screen and (max-width: 39.99875em) {
    .slide-out__title {
      min-height: 0 !important; } }
  .slide-out__title p {
    flex: 1;
    font-weight: bold;
    padding-right: 35px;
    margin-bottom: 8px;
    max-width: 100%; }
  .slide-out__title .circle--count + p {
    margin-bottom: 0; }

.circle--count {
  display: inline-block;
  margin: 10px 10px 10px 0;
  border-radius: 50%;
  height: 45px;
  width: 45px;
  font-size: 1.25rem;
  line-height: 1;
  background-color: #1D1D1B;
  color: #FFFFFF;
  text-align: center;
  font-weight: bold;
  display: flex;
  justify-content: center;
  align-items: center; }

.page-item {
  position: relative;
  height: calc(100% - 0.9375rem);
  min-height: 26.25rem;
  margin-bottom: 0.9375rem;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat; }
  .page-item::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 10px;
    background-color: #000000; }

.page-item__inner {
  position: relative;
  height: 100%;
  padding-top: 10px;
  display: flex;
  z-index: 0; }
  .page-item__inner::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000000;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
    transition: opacity 0.25s ease-in-out; }

.page-item__title {
  margin: auto 0 0 0;
  padding: 0.625rem;
  color: #FFFFFF;
  min-height: 50%;
  background-color: rgba(70, 179, 148, 0.8);
  width: 100%; }
  .page-item__title svg.svg-inline--fa path {
    fill: #000000; }

.page-item__link:hover + .page-item__inner::before, .page-item__link:focus + .page-item__inner::before {
  opacity: .5; }

@media print, screen and (min-width: 40em) {
  .page-item {
    height: calc(100% - 1.875rem);
    margin-bottom: 1.875rem; } }

/**
 * Variation
 */
.page-item--vo-green::after {
  background-color: #46B394; }

.page-item--vo-green .page-item__title {
  color: #000000;
  background-color: rgba(183, 192, 197, 0.8); }
  .page-item--vo-green .page-item__title svg.svg-inline--fa path {
    fill: #46B394; }

.page-item--vo-gray::after {
  background-color: #B7C0C5; }

.page-item--vo-gray .page-item__title {
  color: #46B394;
  background-color: rgba(0, 0, 0, 0.8); }
  .page-item--vo-gray .page-item__title svg.svg-inline--fa path {
    fill: #FFFFFF; }

.post-item {
  position: relative;
  border-top: 10px solid #46B394;
  height: calc(100% - 0.9375rem);
  margin-bottom: 0.9375rem; }

.post-item__anchor {
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%; }

.post-item__inner {
  padding: 0.625rem; }
  .post-item__inner svg {
    font-size: 1.25rem; }
  .post-item__inner svg path {
    fill: #46B394;
    transition: fill 0.25s ease-in-out; }

:root .post-item__title {
  line-height: 1.3;
  transition: color 0.25s ease-in-out;
  margin-bottom: 0.375rem; }

.post-item__date {
  color: #B7C0C5;
  font-weight: 600; }

.post-item__anchor:hover + .post-item__inner svg path, .post-item__anchor:focus + .post-item__inner svg path {
  fill: #000000; }

.post-item__anchor:hover + .post-item__inner .post-item__title, .post-item__anchor:focus + .post-item__inner .post-item__title {
  color: #46B394; }

@media print, screen and (min-width: 40em) {
  .post-item {
    height: calc(100% - 1.875rem);
    margin-bottom: 1.875rem; }
  .post-item__inner svg {
    font-size: 1.625rem; } }

/* Blocks */
.featured {
  position: relative;
  margin: 1.875rem 0; }
  @media print, screen and (min-width: 40em) {
    .featured {
      margin: 2.8125rem 0; } }
  @media print, screen and (min-width: 64em) {
    .featured {
      margin: 3.75rem 0; } }
  .featured::before {
    content: '';
    height: 10px;
    width: 100%;
    background-color: #000000;
    top: 0;
    left: 0;
    right: 0;
    position: absolute; }
  .featured .featured__title {
    padding: 1.40625rem;
    max-width: 30rem;
    margin-top: 0; }
    @media print, screen and (min-width: 40em) {
      .featured .featured__title {
        font-size: 2.875rem; } }
    @media print, screen and (min-width: 64em) {
      .featured .featured__title {
        padding-top: 1.875rem;
        padding-left: 2.5rem; } }
  .featured .featured__text {
    margin-bottom: 0.9375rem; }
    .featured .featured__text p {
      font-size: 1.125rem;
      line-height: 1.875rem; }
    @media print, screen and (min-width: 40em) {
      .featured .featured__text {
        margin-bottom: 2.8125rem; } }
    @media print, screen and (min-width: 64em) {
      .featured .featured__text {
        margin-bottom: 3.75rem; } }
  .featured .featured__inner {
    border-top: 10px solid #000000;
    padding: 1.40625rem;
    background-color: #000000;
    color: #FFFFFF;
    position: relative;
    z-index: 10; }
    @media print, screen and (min-width: 40em) {
      .featured .featured__inner {
        min-height: 23.9375rem;
        display: flex;
        flex-direction: column; } }
    .featured .featured__inner .button {
      margin-top: auto; }
  .featured--none {
    background-color: #B7C0C5; }
  .featured--vo-yellow .featured__inner {
    border-top: 10px solid #82ff4f; }
  .featured--vo-purple .featured__inner {
    border-top: 10px solid #4266ff; }
  .featured--vo-blue .featured__inner {
    border-top: 10px solid #ff825c; }

.featured-block__outer-title {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
  margin-top: 1.875rem;
  margin-bottom: -0.3125rem; }
  @media print, screen and (min-width: 40em) {
    .featured-block__outer-title {
      font-size: 2.625rem;
      margin-top: 2.8125rem;
      margin-bottom: -0.9375rem; } }
  @media print, screen and (min-width: 64em) {
    .featured-block__outer-title {
      margin-top: 3.75rem;
      margin-bottom: -1.875rem; } }

.section-cloud {
  margin: 1.875rem -1px; }
  @media print, screen and (min-width: 40em) {
    .section-cloud {
      margin: 2.8125rem -1px; } }
  @media print, screen and (min-width: 64em) {
    .section-cloud {
      margin: 3.75rem -1px; } }
  .section-cloud__grid .cell {
    padding: 1px; }
  .section-cloud__link {
    line-height: 1.25;
    text-decoration: none;
    color: #000000;
    font-weight: 700;
    font-size: 1rem;
    align-self: center;
    padding: 1.5625rem 0.9375rem 0.9375rem 0.9375rem;
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 5.25rem; }
    @media print, screen and (min-width: 40em) {
      .section-cloud__link {
        font-size: 1.125rem; } }
    .section-cloud__link:hover, .section-cloud__link:focus {
      text-decoration: none; }
    .section-cloud__link span {
      display: flex;
      align-self: center; }
  .section-cloud__inner {
    background-color: #e6e6e6;
    display: block;
    hyphens: auto;
    margin: 0;
    box-sizing: border-box;
    position: relative;
    height: 100%;
    transition: background-color 0.3s ease-in-out; }
    .section-cloud__inner::after {
      content: '';
      height: 10px;
      width: 100%;
      background-color: #000000;
      top: 0;
      position: absolute;
      left: 0;
      right: 0; }
    .section-cloud__inner--vo-purple {
      background-color: #4266ff; }
      .section-cloud__inner--vo-purple:hover {
        background-color: #758fff; }
    .section-cloud__inner--vo-blue {
      background-color: #ff825c; }
      .section-cloud__inner--vo-blue:hover {
        background-color: #ffa98f; }
    .section-cloud__inner--vo-yellow {
      background-color: #82ff4f; }
      .section-cloud__inner--vo-yellow:hover {
        background-color: #a6ff82; }

.prices {
  margin: 1.875rem 0; }
  .prices--vo-yellow {
    color: #82ff4f; }
    .prices--vo-yellow .price__link {
      color: #82ff4f; }
  .prices--vo-purple {
    color: #4266ff; }
    .prices--vo-purple .price__link {
      color: #4266ff; }
  .prices--vo-blue {
    color: #ff825c; }
    .prices--vo-blue .price__link {
      color: #ff825c; }
  .prices--vo-green {
    color: #46B394; }
    .prices--vo-green .price__link {
      color: #46B394; }
  .prices--vo-gray {
    color: #B7C0C5; }
    .prices--vo-gray .price__link {
      color: #B7C0C5; }
  .prices--vo-black {
    color: #000000; }
    .prices--vo-black .price__link {
      color: #000000; }
  .prices--vo-white {
    color: #FFFFFF; }
    .prices--vo-white .price__link {
      color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .prices {
      margin: 3.125rem 0; } }
  @media print, screen and (min-width: 64em) {
    .prices {
      margin: 4.375rem 0; } }

.price__element {
  font-size: 1.25rem;
  padding: 0.9375rem;
  background: #000000;
  color: #FFFFFF;
  margin-bottom: 0.9375rem; }
  .price__container:last-child .price__element {
    margin-bottom: 0; }
  @media print, screen and (min-width: 40em) {
    .price__element {
      margin-bottom: 0; } }
  @media print, screen and (min-width: 64em) {
    .price__element {
      font-size: 1.5rem;
      padding: 2.625rem 2rem 2.375rem 2rem; } }
  .price__element .meta__price {
    color: #000000;
    font-size: 2.25rem;
    line-height: 2.5rem;
    font-weight: 700;
    margin-bottom: 0; }
    @media print, screen and (min-width: 64em) {
      .price__element .meta__price {
        font-size: 3rem;
        line-height: 3.75rem; } }
  .price__element .meta__label {
    color: #000000;
    font-size: 1.25rem;
    line-height: 1.875rem;
    font-weight: 700;
    margin-top: 0.625rem;
    margin-bottom: -1.875rem;
    hyphens: auto;
    word-break: break-word;
    padding: 0 53px; }
    @media print, screen and (min-width: 64em) {
      .price__element .meta__label {
        font-size: 1.5rem; } }

@media print, screen and (min-width: 64em) {
  :root .price__text {
    margin-bottom: 2.8125rem; } }

.price__link {
  position: relative; }
  .price__link::before {
    content: '>';
    position: relative;
    left: 0;
    margin-right: 0.375rem;
    transition: left 0.25s ease-in-out; }
  .price__link:hover, .price__link:focus {
    text-decoration: none; }
    .price__link:hover::before, .price__link:focus::before {
      left: 0.25rem; }

:root .price__circle {
  width: 160px;
  height: 160px;
  margin-inline: auto;
  margin-bottom: 0.9375rem;
  color: #000000; }
  @media print, screen and (min-width: 64em) {
    :root .price__circle {
      width: 223px;
      height: 223px;
      margin-bottom: 1.875rem; } }

:root .price__circle--inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: #FFFFFF;
  flex: 1 0 auto;
  border-radius: 50%; }

:root .price__circle .meta__label {
  padding-inline: 0;
  margin-top: 0.625rem;
  margin-bottom: 0; }

.upcoming-agenda {
  border-top: 10px solid #000000;
  padding: 0.9375rem 0; }

.upcoming-agenda__inner {
  background-color: #FFFFFF;
  border-top: 10px solid #000000;
  margin: 0.9375rem 0 2.8125rem;
  padding-top: 1.875rem; }
  @media print, screen and (min-width: 40em) {
    .upcoming-agenda__inner {
      margin: 1.875rem 0 5.625rem; } }

.upcoming-agenda__link {
  background-color: #000000;
  padding: 1.875rem 0;
  margin-top: 1.875rem; }

.a-item__container {
  display: block;
  color: #000000;
  padding: 1.40625rem 0;
  border-bottom: 3px solid #000000;
  transition: all 0.3s ease-in-out; }
  .a-item:last-of-type .a-item__container {
    border-bottom: 0; }
  .a-item__container:hover, .a-item__container:focus {
    color: #000000;
    text-decoration: none;
    background-color: #e6e6e6; }
    .a-item__container:hover .a-item__inner, .a-item__container:focus .a-item__inner {
      padding: 0 0.9375rem; }

.a-item__inner {
  transition: all 0.3s ease-in-out; }

.a-item__title {
  margin: 0 0 0.46875rem 0; }

.a-item__meta--location {
  font-weight: 500;
  font-size: 1.125rem;
  color: #646464; }
  @media print, screen and (min-width: 40em) {
    .a-item__meta--location {
      font-size: 1.375rem; } }
  .a-item__meta--location .fa-map-marker-alt {
    margin-right: 0.46875rem;
    vertical-align: baseline;
    font-size: 0.875rem; }
    @media print, screen and (min-width: 40em) {
      .a-item__meta--location .fa-map-marker-alt {
        font-size: 1.125rem; } }

.a-item__meta--date {
  font-weight: 700;
  font-size: 1rem;
  text-align: left;
  margin-top: 0.46875rem; }
  @media print, screen and (min-width: 40em) {
    .a-item__meta--date {
      margin-top: 0;
      font-size: 1.125rem;
      text-align: right; } }

.block--emails {
  padding: 65px;
  background-color: #B7C0C5;
  border-top: 10px solid #000000;
  text-align: center; }
  .block--emails .h1 {
    margin-top: 0;
    margin-bottom: 65px; }
  .block--emails ul {
    list-style: none;
    margin: 30px 0;
    max-width: initial; }
    .block--emails ul li {
      color: #646464;
      font-size: 1.25rem;
      margin: 0; }
      .block--emails ul li a {
        color: #000000; }

.latest-posts {
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .latest-posts {
      margin-bottom: 2.8125rem; } }
  @media print, screen and (min-width: 64em) {
    .latest-posts {
      margin-bottom: 3.75rem; } }
  .latest-posts__title-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-top: 1.875rem; }
    @media print, screen and (min-width: 64em) {
      .latest-posts__title-wrap {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 2.5rem;
        margin-top: 0; } }
  .latest-posts__title {
    margin-top: 0;
    margin-bottom: 0; }
  .latest-posts__cta .button {
    padding: 0.875rem 1.875rem;
    color: #FFFFFF;
    background-color: #4266ff;
    border-radius: 9999px; }
  .latest-posts__cta--desktop {
    display: none; }
  .latest-posts__cta--mobile {
    margin: 1.25rem 0 1.875rem 0; }
  @media print, screen and (min-width: 64em) {
    .latest-posts__cta--mobile {
      display: none; }
    .latest-posts__cta--desktop {
      display: block; } }

.latest-posts--alt .latest-posts__title {
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .latest-posts--alt .latest-posts__title {
      margin-bottom: 1.875rem; } }

.latest-posts__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: 1.875rem; }
  .latest-posts__grid .card {
    grid-column: span 3 / span 3;
    max-width: unset;
    min-width: unset; }
  @media print, screen and (min-width: 64em) {
    .latest-posts__grid .card:not(.card--large) {
      grid-column: span 1 / span 1; } }

.locations {
  position: relative;
  margin: 60px 0; }
  .locations .grid-x {
    align-items: center; }
  .locations .cell {
    margin: 1.875rem 0;
    position: relative; }
    .locations .cell:not(:first-of-type) {
      padding: 0 15px; }

.block--reasons {
  margin: 60px 0; }
  .block--reasons .h2 {
    text-align: center;
    margin-bottom: 60px; }

.reasons__container {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: end; }
  @media print, screen and (min-width: 40em) {
    .reasons__container .medium-6 {
      width: 50%; } }

.accordion .slide-out__container {
  max-width: 49.375rem;
  margin-left: auto;
  margin-right: auto; }

:root .accordion__title {
  text-align: center;
  margin-bottom: 30px; }

.accordion__container {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: end; }

.slide-out__content--active {
  max-height: 300vh; }

.block--accordion {
  margin: 60px 0; }

.block--accordion + .block--accordion {
  margin-top: -30px; }

.block--quote {
  padding: 75px 0; }

.quote__image {
  text-align: center; }

.quote__person {
  padding-top: 20px; }

.people__container {
  display: flex;
  flex-wrap: wrap;
  justify-content: center; }

.people__person {
  padding: 30px;
  text-align: center; }
  .people__person img {
    max-width: 190px; }
  .people__person p {
    margin: 0;
    font-weight: 700; }
  .people__person a {
    display: block;
    color: #B7C0C5; }
  .people__person .image__container {
    position: relative; }
  .people__person .fallback--image {
    height: 190px;
    width: 190px;
    background: #F1F1F1;
    border-radius: 50%;
    display: inline-block;
    max-width: 100%; }
  .people__person .linkedin {
    position: absolute;
    border-radius: 50%;
    height: 50px;
    width: 50px;
    background-color: #000000;
    bottom: 0;
    left: 50%;
    transform: translateX(calc(-50% + 50px));
    display: flex;
    align-items: center; }
    .people__person .linkedin svg {
      font-size: 1.5rem;
      margin: 0 auto; }
    .people__person .linkedin:hover {
      background-color: #FFFFFF; }
      .people__person .linkedin:hover svg {
        color: #000000; }

.tabs p, .tabs ul {
  margin-left: 0;
  margin-right: 0; }

:root .tabs__header {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  max-width: 100%;
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    :root .tabs__header {
      margin-bottom: 1.25rem; } }
  :root .tabs__header li {
    margin-right: 0.9375rem;
    margin-left: 0; }
    @media print, screen and (min-width: 40em) {
      :root .tabs__header li {
        margin-right: 1.875rem; } }
  :root .tabs__header a {
    color: #646464;
    display: inline-block;
    font-size: 1.125rem; }
    @media print, screen and (min-width: 40em) {
      :root .tabs__header a {
        font-size: 1.25rem; } }
    :root .tabs__header a:hover, :root .tabs__header a:focus, :root .tabs__header a.is-active {
      color: #000000;
      text-decoration: none; }

.tabs__tab {
  display: none; }

.tabs__tab.is-active {
  display: block;
  animation: fade-in .8s; }

.tabs__tab-content {
  font-size: 1.125rem; }
  .tabs__tab-content * {
    line-height: 1.875rem; }
  .tabs__tab-content ul {
    list-style: none; }
    .tabs__tab-content ul li {
      position: relative;
      padding-left: 1em;
      margin-left: 0;
      margin-bottom: 0.75rem; }
      .tabs__tab-content ul li:last-child {
        margin-bottom: 0; }
      .tabs__tab-content ul li::before {
        content: "\2022";
        position: absolute;
        color: #6450C8;
        font-weight: bold;
        display: inline-block;
        left: 0; }

.tabs__tab-title {
  font-weight: bold;
  font-size: 1.75rem; }
  @media print, screen and (min-width: 40em) {
    .tabs__tab-title {
      font-size: 2rem; } }

.anchor--vo-yellow {
  color: #82ff4f; }
  .anchor--vo-yellow .anchor__link {
    color: #82ff4f; }

.anchor--vo-purple {
  color: #4266ff; }
  .anchor--vo-purple .anchor__link {
    color: #4266ff; }

.anchor--vo-blue {
  color: #ff825c; }
  .anchor--vo-blue .anchor__link {
    color: #ff825c; }

.anchor--vo-green {
  color: #46B394; }
  .anchor--vo-green .anchor__link {
    color: #46B394; }

.anchor--vo-gray {
  color: #B7C0C5; }
  .anchor--vo-gray .anchor__link {
    color: #B7C0C5; }

.anchor--vo-black {
  color: #000000; }
  .anchor--vo-black .anchor__link {
    color: #000000; }

.anchor--vo-white {
  color: #FFFFFF; }
  .anchor--vo-white .anchor__link {
    color: #FFFFFF; }

.anchor__link {
  position: relative;
  font-size: 1.25rem; }
  @media print, screen and (min-width: 40em) {
    .anchor__link {
      font-size: 1.625rem; } }
  .anchor__link::before {
    content: '>';
    position: relative;
    left: 0;
    margin-right: 0.375rem;
    transition: left 0.25s ease-in-out; }
  .anchor__link:hover, .anchor__link:focus {
    text-decoration: none; }
    .anchor__link:hover::before, .anchor__link:focus::before {
      left: 0.25rem; }

.knowledge {
  margin-bottom: 1.875rem; }
  @media print, screen and (min-width: 40em) {
    .knowledge {
      margin-bottom: 3.75rem; } }
  @media print, screen and (min-width: 64em) {
    .knowledge {
      margin-bottom: 4.6875rem; } }
  .knowledge .cell--knowledge-item {
    margin: 0;
    padding: 0; }

.knowledge__featured {
  margin-bottom: 1.875rem;
  padding-bottom: 1.875rem;
  border-bottom: 10px solid #000000; }
  .knowledge__featured .grid-x {
    display: grid;
    grid-template-columns: repeat(1, 1fr);
    gap: 0.9375rem;
    justify-content: center; }
    @media print, screen and (min-width: 40em) {
      .knowledge__featured .grid-x {
        gap: 1.875rem;
        grid-template-columns: repeat(2, 1fr); } }
    @media print, screen and (min-width: 64em) {
      .knowledge__featured .grid-x:not(.grid-x--two-columns) {
        grid-template-columns: repeat(3, 1fr); } }
  @media print, screen and (min-width: 40em) {
    .knowledge__featured {
      margin-bottom: 3.75rem;
      padding-bottom: 3.75rem; } }

.knowledge__featured-inner {
  max-width: 49.375rem;
  margin-right: auto;
  margin-left: auto; }

p.knowledge__featured-title {
  text-align: center;
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    p.knowledge__featured-title {
      margin-bottom: 1.875rem; } }

.knowledge__container .grid-x {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .knowledge__container .grid-x {
      grid-template-columns: repeat(2, 1fr);
      gap: 1.875rem; } }
  @media print, screen and (min-width: 64em) {
    .knowledge__container .grid-x {
      grid-template-columns: repeat(3, 1fr); } }

.knowledge__container .pagination {
  margin-top: 1.875rem; }

.knowledge__footer {
  margin-top: 1.875rem;
  padding-top: 1.875rem;
  border-top: 10px solid #000000; }
  @media print, screen and (min-width: 40em) {
    .knowledge__footer {
      margin-top: 3.75rem;
      padding-top: 3.75rem; } }
  @media print, screen and (min-width: 64em) {
    .knowledge__footer .cell--knowledge-item {
      margin-bottom: 0; } }
  .knowledge__footer .grid-x {
    display: grid;
    grid-template-columns: repeat(1, 1fr);
    gap: 0.9375rem;
    justify-content: center; }
    @media print, screen and (min-width: 40em) {
      .knowledge__footer .grid-x {
        gap: 1.875rem;
        grid-template-columns: repeat(2, 1fr); } }
    @media print, screen and (min-width: 64em) {
      .knowledge__footer .grid-x:not(.grid-x--two-columns) {
        grid-template-columns: repeat(3, 1fr); } }

.hero-2023 {
  --hero-2023-aspect-ratio: 1 / 1;
  --hero-2023-spacing: 2rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 1.5rem;
  aspect-ratio: var(--hero-2023-aspect-ratio);
  padding: var(--hero-2023-spacing);
  background-position: center left;
  background-repeat: no-repeat;
  background-size: cover;
  color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .hero-2023 {
      --hero-2023-aspect-ratio: 2 / 1.5; } }
  @media print, screen and (min-width: 64em) {
    .hero-2023 {
      --hero-2023-aspect-ratio: 2 / 1;
      --hero-2023-spacing: 3rem; } }

.hero-2023 :is(h1, h2) {
  margin-block: 0;
  color: inherit;
  font-size: 2.25rem; }
  @media print, screen and (min-width: 40em) {
    .hero-2023 :is(h1, h2) {
      font-size: 3rem; } }
  @media print, screen and (min-width: 64em) {
    .hero-2023 :is(h1, h2) {
      max-width: calc(50% - var(--hero-2023-spacing));
      font-size: 4rem; } }

.hero-2023 a {
  align-self: start;
  display: inline-flex;
  gap: 0.75rem;
  padding: 0.875rem 1.875rem;
  border-radius: 9999px;
  background-color: #82ff4f;
  color: #000000;
  font-size: 1.5rem;
  line-height: calc(30/24);
  text-decoration: none; }
  .hero-2023 a:hover {
    background-color: #a6ff82; }
  .hero-2023 a::after {
    content: '>';
    transition: transform 0.2s ease-in-out 0s; }
  .hero-2023 a:hover::after {
    transform: translateX(0.25rem); }

.hero-2023 + * {
  margin-top: 1.875rem; }
  @media print, screen and (min-width: 40em) {
    .hero-2023 + * {
      margin-top: 2.8125rem; } }
  @media print, screen and (min-width: 64em) {
    .hero-2023 + * {
      margin-top: 3.75rem; } }

.hero .grid-container {
  margin-top: -10px;
  position: relative; }

.hero.hero--theme--none .grid-container {
  border-top: 10px solid #000000; }

.hero .hero__link:last-child {
  margin-bottom: 0.9375rem; }

.hero__date {
  font-size: 1.125rem;
  margin-top: 0.625rem;
  font-weight: bold; }
  @media print, screen and (min-width: 40em) {
    .hero__date {
      font-size: 1.5rem; } }
  .hero__date--agenda {
    font-size: 2.875rem;
    color: #FFFFFF;
    font-weight: 700; }

.hero--default {
  border-top: 10px solid #000000;
  padding: 0.9375rem 0 2.8125rem;
  margin-top: 0;
  margin-bottom: 1.875rem; }
  .hero--default .grid-container {
    border-top: none !important; }
  .hero--default .hero__inner {
    max-width: 55rem;
    padding-bottom: 30px; }
  .hero--default .hero__title {
    color: #FFFFFF;
    margin-top: 0;
    margin-bottom: 0; }
    .hero--default .hero__title--single {
      color: #000000; }
  .hero--default .hero__description {
    margin-top: 0.9375rem;
    margin-bottom: 0; }
  @media print, screen and (min-width: 40em) {
    .hero--default {
      padding: 1.875rem 0 3.75rem; } }
  @media print, screen and (min-width: 64em) {
    .hero--default {
      padding: 2.8125rem 0 4.6875rem; } }

.hero--medium {
  border-top: 10px solid #000000;
  padding: 0;
  margin-top: 0;
  margin-bottom: 1.875rem; }
  .hero--medium .hero__inner {
    max-width: 55rem;
    margin-top: 0.9375rem;
    margin-bottom: 0.9375rem; }
    @media print, screen and (min-width: 40em) {
      .hero--medium .hero__inner {
        margin-top: 1.40625rem;
        margin-bottom: 2.8125rem; } }
    @media print, screen and (min-width: 40em) {
      .hero--medium .hero__inner {
        margin-top: 1.40625rem;
        margin-bottom: 3.75rem; } }
  .hero--medium .hero__title {
    color: #000000;
    margin-top: 0.9375rem;
    margin-bottom: 0; }
    @media print, screen and (max-width: 39.99875em) {
      .hero--medium .hero__title {
        font-size: 1.5rem; } }
    @media print, screen and (min-width: 40em) {
      .hero--medium .hero__title {
        margin-left: 0.9375rem; } }
  .hero--medium .hero__description {
    margin-top: 0.9375rem;
    margin-bottom: 0; }
    @media print, screen and (min-width: 40em) {
      .hero--medium .hero__description {
        margin-left: 0.9375rem; } }
  .hero--medium .hero__date {
    margin-top: 0.9375rem;
    margin-bottom: 0;
    font-weight: 700; }
    @media print, screen and (min-width: 40em) {
      .hero--medium .hero__date {
        margin-left: 0.9375rem; } }
    .hero--medium .hero__date--agenda {
      font-size: 2.875rem;
      color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .hero--medium .hero__link {
      margin-left: 0.9375rem; } }
  .hero--medium .hero__image {
    font-size: 0;
    margin-left: -0.9375rem;
    margin-right: -0.9375rem;
    height: 100%;
    position: relative; }
    .hero--medium .hero__image::before {
      content: '';
      position: absolute;
      height: 10px;
      width: 100%;
      display: block;
      top: -10px;
      background-color: #000000; }
    .hero--medium .hero__image img {
      margin: 0;
      object-fit: cover;
      height: 100%;
      width: 100%; }
  .hero--medium.hero--is-section.hero--theme {
    background: #000000 !important; }
    .hero--medium.hero--is-section.hero--theme .hero__title {
      color: #FFFFFF;
      font-size: 2.25rem; }
      @media print, screen and (min-width: 40em) {
        .hero--medium.hero--is-section.hero--theme .hero__title {
          font-size: 3rem; } }
    .hero--medium.hero--is-section.hero--theme .hero__description {
      color: #FFFFFF;
      font-size: 1.5rem; }
      @media print, screen and (min-width: 40em) {
        .hero--medium.hero--is-section.hero--theme .hero__description {
          font-size: 1.875rem; } }
      @media print, screen and (min-width: 64em) {
        .hero--medium.hero--is-section.hero--theme .hero__description {
          font-size: 3rem; } }
    .hero--medium.hero--is-section.hero--theme .hero__image::before {
      content: '';
      position: absolute;
      height: 10px;
      width: 100%;
      display: block;
      top: -10px;
      background-color: #000000; }

.hero--large {
  border-top: 10px solid #000000;
  background-color: #000000;
  padding: 0;
  margin-top: 0;
  margin-bottom: 1.875rem; }
  .hero--large .hero__inner {
    max-width: 55rem;
    padding: 1.40625rem 0; }
    .hero--large .hero__inner--full {
      max-width: 100%;
      padding: 0;
      height: 100%;
      position: relative; }
  .hero--large .hero__title {
    color: #FFFFFF;
    margin-top: 0;
    margin-bottom: 1.40625rem; }
  .hero--large .hero__image {
    font-size: 0;
    margin-left: -0.9375rem;
    margin-right: -0.9375rem;
    height: 100%;
    position: relative;
    max-height: 50vh; }
    .hero--large .hero__image::before {
      content: '';
      position: absolute;
      height: 10px;
      width: 100%;
      display: block;
      top: -10px;
      background-color: #000000; }
    .hero--large .hero__image img {
      margin: 0;
      object-fit: cover;
      height: 100%;
      width: 100%; }
  .hero--large .hero__link--3 {
    position: absolute;
    bottom: 0;
    left: -0.9375rem;
    padding: 0.9375rem 1.875rem 0.9375rem 0.9375rem;
    background-color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .hero--large .hero__inner {
      padding: 1.875rem 0.9375rem; }
      .hero--large .hero__inner--full {
        padding: 0; }
    .hero--large .hero__title {
      margin-bottom: 3.75rem; }
    .hero--large .hero__image {
      max-height: 100%; } }

.hero--theme--vo-green {
  background-color: #46B394; }
  .hero--theme--vo-green, .hero--theme--vo-green .grid-container {
    border-top: 10px solid #000000; }
  .hero--theme--vo-green .hero__title, .hero--theme--vo-green .hero__description {
    color: #FFFFFF; }
  .hero--theme--vo-green .hero__link .button {
    color: #000000; }

.hero--theme--vo-black {
  background-color: #000000;
  border-top: 10px solid #000000; }
  .hero--theme--vo-black .grid-container {
    border-top: 10px solid #46B394; }
  .hero--theme--vo-black .hero__title, .hero--theme--vo-black .hero__description {
    color: #FFFFFF; }
  .hero--theme--vo-black .hero__link .button {
    color: #46B394; }

.hero--theme--vo-gray {
  background-color: #B7C0C5;
  border-top: 10px solid #000000; }
  .hero--theme--vo-gray .grid-container {
    border-top: 10px solid #000000; }
  .hero--theme--vo-gray .hero__title, .hero--theme--vo-gray .hero__description {
    color: #000000; }
  .hero--theme--vo-gray .hero__link .button {
    color: #000000; }

.hero--theme--none {
  background-color: #FFFFFF;
  border-top: 10px solid #000000; }
  .hero--theme--none .grid-container {
    border-top: 10px solid #000000; }
  .hero--theme--none .hero__title, .hero--theme--none .hero__description {
    color: #000000; }
  .hero--theme--none .hero__image::before {
    background-color: #46B394; }
  .hero--theme--none .hero__link .button {
    color: #46B394; }

.search__section .hero__inner {
  display: flex;
  flex-direction: column; }
  .search__section .hero__inner .hero__title {
    order: 2; }
  .search__section .hero__inner .hero__description {
    order: 1; }

.cta {
  margin-top: 0.9375rem;
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .cta {
      margin-top: 2.8125rem;
      margin-bottom: 2.8125rem; } }
  @media print, screen and (min-width: 64em) {
    .cta {
      margin-top: 3.75rem;
      margin-bottom: 3.75rem; } }

.cta__title, .find-section__label {
  margin-top: 0;
  padding-top: 1.875rem; }

@media print, screen and (min-width: 64em) {
  .cta__title {
    font-size: 2.875rem; } }

/**
 * Variation ALT
 */
.cta--alt .card {
  flex-direction: unset;
  flex-wrap: wrap; }

.cta--alt .cta__header-title {
  width: 100%;
  max-width: 100%;
  text-align: center;
  color: #000000;
  margin-bottom: 0.9375rem;
  line-height: 1.2; }

.cta--alt .cta__image {
  position: relative;
  width: 100%;
  line-height: 1;
  font-size: 0;
  max-height: 18.75rem; }
  .cta--alt .cta__image::after {
    content: '';
    display: block;
    position: absolute;
    top: -10px;
    left: 0;
    right: 0;
    width: 100%;
    height: 10px;
    z-index: 1;
    background-color: #000000; }
  .cta--alt .cta__image img {
    width: 100%;
    height: 100%;
    object-fit: cover; }

.cta--alt .cta__inner {
  flex-grow: 1; }

.cta--alt .cta__date {
  margin-top: 0;
  margin-bottom: 0.9375rem;
  font-weight: bold;
  font-size: 1.125rem; }

@media print, screen and (min-width: 40em) {
  .cta--alt .card {
    flex-wrap: unset; }
  .cta--alt .cta__header-title {
    margin-bottom: 1.875rem; }
  .cta--alt .cta__image {
    max-height: 100%;
    min-width: calc(33.33333% - 0.9375rem);
    width: calc(33.33333% - 0.9375rem); } }

.cta--cover {
  position: relative;
  overflow: hidden;
  padding: 0.9375rem 0;
  margin-top: 0;
  margin-bottom: 0; }
  .cta--cover::after {
    content: "";
    position: absolute;
    top: -9px;
    left: -9px;
    width: calc(100% + 9px);
    height: calc(100% + 9px);
    background-image: url("assets/images/square.png");
    background-size: 18px;
    background-repeat: repeat;
    z-index: -1; }

@media print, screen and (min-width: 40em) {
  .cta--cover {
    padding: 2.8125rem 0 2.8125rem 0; } }

.cta--theme--vo-green {
  color: #FFFFFF; }
  .cta--theme--vo-green .card::after {
    background-color: #000000; }
  .cta--theme--vo-green .cta__image, .cta--theme--vo-green .cta__inner {
    background-color: #46B394; }
  .cta--theme--vo-green .cta__link .button {
    color: #000000; }

.cta--theme--vo-black {
  color: #FFFFFF; }
  .cta--theme--vo-black .card::after {
    background-color: #46B394; }
  .cta--theme--vo-black .cta__image, .cta--theme--vo-black .cta__inner {
    background-color: #000000; }
  .cta--theme--vo-black .cta__link .button {
    color: #46B394; }

.cta--theme--vo-gray .card::after {
  background-color: #000000; }

.cta--theme--vo-gray .cta__image, .cta--theme--vo-gray .cta__inner {
  background-color: #B7C0C5; }

.cta--theme--vo-gray .cta__link .button {
  color: #000000; }

.cta--theme--none .cta__image::after {
  background-color: #46B394; }

.cta--theme--none .cta__image, .cta--theme--none .cta__inner {
  background-color: #FFFFFF; }

.cta--theme--none .cta__link .button {
  color: #46B394; }

.page-items {
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .page-items {
      margin-bottom: 2.8125rem; } }
  @media print, screen and (min-width: 64em) {
    .page-items {
      margin-bottom: 3.75rem; } }

.page-items__title {
  margin-top: 0;
  margin-bottom: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .page-items__title {
      margin-bottom: 1.875rem; } }

/* Price 2021 */
/**
 * Price 2021 - Template
 * ----------------------------------------------------------------------------
 */
.price-template,
.price-template p,
.price-template ul li,
.price-template ol li {
  font-size: 1.125rem; }

.price-template__inner {
  overflow: hidden; }

.price-block {
  padding: 2.5rem 0; }
  @media print, screen and (min-width: 40em) {
    .price-block {
      padding: 4.6875rem 0; } }

.price-block__title {
  margin-top: 0; }

.price-block__header {
  margin: 0 0 2.5rem 0; }
  @media print, screen and (min-width: 40em) {
    .price-block__header {
      max-width: 50%; }
      .price-block__header--full {
        max-width: 100%; } }

/**
 * Price 2021 - Navigation
 * ----------------------------------------------------------------------------
 */
.page-navigation {
  border-top: 3px solid #000000;
  border-bottom: 3px solid #000000;
  background: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .page-navigation {
      position: sticky;
      width: 100%;
      top: 0;
      z-index: 10; }
      .admin-bar .page-navigation {
        top: 32px; } }

.page-navigation__inner {
  padding: 1.25rem 0;
  display: flex;
  flex-direction: column; }
  .page-navigation__inner h2 {
    margin: 0;
    font-size: 1.125rem; }
  @media print, screen and (min-width: 40em) {
    .page-navigation__inner {
      flex-direction: row;
      align-items: center; } }
  .page-navigation__inner nav {
    margin-top: 1.25rem; }
    @media print, screen and (min-width: 40em) {
      .page-navigation__inner nav {
        margin-top: 0;
        margin-left: auto; } }
    .page-navigation__inner nav ul {
      display: flex;
      flex-direction: column; }
      @media print, screen and (min-width: 40em) {
        .page-navigation__inner nav ul {
          flex-direction: row; } }
      .page-navigation__inner nav ul li {
        font-size: 1rem; }
        .page-navigation__inner nav ul li a {
          color: #000000;
          font-weight: 500;
          display: block;
          padding: 0.125rem 0; }
          @media print, screen and (min-width: 40em) {
            .page-navigation__inner nav ul li a {
              padding: 0.125rem 0.625rem; } }

/**
 * Hero
 * ----------------------------------------------------------------------------
 */
.price-hero {
  position: relative;
  border-top: 3px solid #000000; }

.price-hero__background {
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  overflow: hidden;
  background: #46B394; }
  .price-hero__background img {
    position: absolute;
    width: 100%;
    height: 100%;
    object-fit: cover;
    top: 0;
    left: 0; }

.price-hero__inner {
  position: relative;
  color: #FFFFFF;
  padding: 4.6875rem 0; }
  @media print, screen and (min-width: 40em) {
    .price-hero__inner {
      padding: 6.25rem 0; } }
  .price-hero__inner a {
    color: #FFFFFF;
    display: block; }
    .price-hero__inner a:hover, .price-hero__inner a:focus {
      color: #FFFFFF;
      text-decoration: none; }
      .price-hero__inner a:hover span, .price-hero__inner a:focus span {
        transform: translateX(3px); }

.price-hero__content {
  width: 100%; }
  @media print, screen and (min-width: 40em) {
    .price-hero__content {
      max-width: 75%; } }
  @media print, screen and (min-width: 64em) {
    .price-hero__content {
      max-width: 60%; } }
  .price-hero__content h1 {
    margin-top: 0; }
    @media print, screen and (min-width: 40em) {
      .price-hero__content h1 {
        font-size: 4.5rem;
        line-height: 4.5rem; } }
  .price-hero__content p {
    font-size: 1.5rem !important; }
    @media print, screen and (min-width: 40em) {
      .price-hero__content p {
        font-size: 2.25rem !important;
        line-height: 2.8125rem !important; } }
  .price-hero__content ul li {
    padding: 0.3125rem 0; }
    @media print, screen and (min-width: 40em) {
      .price-hero__content ul li {
        font-size: 1.625rem !important; } }

/**
 * Price 2021 - Intro highlight
 * ----------------------------------------------------------------------------
 */
.intro-highlight {
  position: relative;
  height: 100%;
  width: calc(100% + 15px); }
  @media screen and (max-width: 40em) {
    .intro-highlight {
      min-height: 460px;
      width: calc(100vw + 30px);
      margin-left: -15px;
      margin-top: 1.875rem; } }
  @media screen and (min-width: 56.25em) {
    .intro-highlight {
      width: 50vw;
      height: 50vw; } }

@media screen and (max-width: 56.25em) {
  .intro-highlight img {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    object-fit: cover; } }

.intro-highlight__meta {
  position: absolute;
  bottom: 1.875rem;
  left: 1.875rem;
  width: calc(100% - 60px); }
  @media print, screen and (min-width: 64em) {
    .intro-highlight__meta {
      display: flex;
      align-items: flex-end; } }

.intro-highlight__label {
  color: #FFFFFF; }
  .intro-highlight__label h2 {
    margin: 0 0 0.625rem 0; }

.intro-highlight__photographer {
  color: #FFFFFF;
  font-size: 1rem;
  margin-left: auto;
  margin-top: 0.625rem; }

/**
 * Price 2021 - Template
 * ----------------------------------------------------------------------------
 */
.price-card {
  background: #FFFFFF;
  height: 100%; }

.price-card__inner {
  padding: 1.25rem 1.875rem; }
  .price-card__inner--no-padding {
    padding-left: 0;
    padding-right: 0; }

.price-card__title {
  font-size: 1.5rem;
  font-weight: bold;
  margin-bottom: 3px; }

.price-card__broadcaster,
.price-card__function {
  font-size: 1rem;
  color: #B7C0C5;
  font-weight: bold;
  margin-bottom: 3px; }

.price-card__people {
  margin-top: 1.25rem;
  font-weight: bold; }

.price-card__image {
  position: relative;
  border-bottom: 10px solid #000000; }
  .price-card__image img {
    display: block; }

.price-card__photographer {
  position: absolute;
  bottom: 1.25rem;
  left: 1.25rem;
  color: #FFFFFF;
  font-size: 0.75rem; }

/**
 * Price 2021 - Template
 * ----------------------------------------------------------------------------
 */
.nominees {
  background-image: url(assets/images/price-pattern.png);
  background-size: 18px; }

/**
 * Price 2021 - Previous winners
 * ----------------------------------------------------------------------------
 */
.previous-winner__container {
  background: #46B394;
  padding: 1.25rem;
  border-top: 10px solid #000000;
  color: #FFFFFF; }
  @media print, screen and (min-width: 40em) {
    .previous-winner__container {
      padding: 2.5rem 3.75rem;
      column-count: 2;
      column-gap: 60px; } }
  .previous-winner__container li {
    break-inside: avoid; }

/**
 * Price 2021 - Last winner
 * ----------------------------------------------------------------------------
 */
.last-winner {
  background: #000000;
  position: relative; }
  .last-winner::after {
    content: '';
    display: block;
    padding-bottom: 56.5%; }

.last-winner__background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; }
  .last-winner__background img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover; }

.last-winner__content {
  position: absolute;
  color: #FFFFFF;
  z-index: 2;
  top: 50%;
  left: 50%;
  max-width: 40rem;
  width: 100%;
  padding: 1.25rem;
  transform: translate(-50%, -50%);
  text-align: center; }

@media print, screen and (min-width: 40em) {
  .last-winner__title {
    font-size: 6rem; } }

.last-winner__description {
  font-weight: bold; }
  @media print, screen and (min-width: 40em) {
    .last-winner__description {
      font-size: 1.625rem; } }

/**
 * Price 2021 - About
 * ----------------------------------------------------------------------------
 */
.about {
  background: #F1F1F1;
  position: relative;
  overflow: hidden; }
  @media print, screen and (min-width: 40em) {
    .about {
      padding-bottom: 15.625rem; } }

.about__content {
  background: #FFFFFF;
  padding: 1.25rem;
  border-top: 10px solid #000000;
  position: relative;
  z-index: 2; }
  @media print, screen and (min-width: 40em) {
    .about__content {
      padding: 2.5rem 3.75rem; } }

.about__image {
  margin-top: 30px; }
  @media print, screen and (min-width: 40em) {
    .about__image {
      margin-top: 0;
      width: 50vw;
      position: absolute;
      top: 199px;
      right: 0; }
      .about__image img {
        display: block; } }

/**
 * Price 2021 - Video
 * ----------------------------------------------------------------------------
 */
.price-video {
  background: #000000;
  color: #FFFFFF; }

.price-video__container {
  display: none; }
  .price-video__container.active {
    display: block; }

.price-video__navigation {
  display: flex;
  justify-content: center;
  margin-top: 1.875rem;
  flex-direction: column; }
  @media print, screen and (min-width: 40em) {
    .price-video__navigation {
      flex-direction: row; } }
  .price-video__navigation li {
    margin: 0 1.25rem;
    border-top: 3px solid transparent;
    padding: 0.3125rem 0 0 0;
    transition: all .2s ease-in-out; }
    .price-video__navigation li.active {
      border-color: #FFFFFF; }
    .price-video__navigation li:not(.active):hover, .price-video__navigation li:not(.active):focus {
      border-color: #646464; }
    .price-video__navigation li a {
      color: #FFFFFF; }
      .price-video__navigation li a:hover, .price-video__navigation li a:focus {
        text-decoration: none; }

body.wp-child-theme-schrijversveilig .header__logo img {
  width: 11.5rem;
  height: auto; }

body.wp-child-theme-schrijversveilig .header__writers-safe {
  display: inline-block;
  width: 100px;
  height: auto;
  margin: 0 0.46875rem;
  color: #000000;
  font-weight: 700;
  padding: 9px 10px;
  background-color: transparent;
  transition: all 0.3s ease-in-out;
  font-size: 0.75rem; }
  body.wp-child-theme-schrijversveilig .header__writers-safe:hover {
    background-color: #F1F1F1;
    text-decoration: none; }
  @media print, screen and (min-width: 64em) {
    body.wp-child-theme-schrijversveilig .header__writers-safe {
      width: 110px;
      padding: 15px 17px;
      margin: 0 0.9375rem;
      font-size: 1rem; } }

body.wp-child-theme-schrijversveilig .wp-block-post-title,
body.wp-child-theme-schrijversveilig .wp-block-accordion-heading__toggle-title,
body.wp-child-theme-schrijversveilig .wp-block-accordion-heading__toggle-icon,
body.wp-child-theme-schrijversveilig .has-text-color {
  color: #5066fb; }

body.wp-child-theme-schrijversveilig .entry__content > p:not(.has-text-color), body.wp-child-theme-schrijversveilig .wp-block > p:not(.has-text-color) {
  margin: 0 auto 3.75rem; }

body.wp-child-theme-schrijversveilig .hero-2023 {
  --hero-2023-spacing: 5rem;
  color: black;
  justify-content: center; }
  body.wp-child-theme-schrijversveilig .hero-2023 :is(h1, h2) {
    font-size: 2.25rem; }
    @media print, screen and (min-width: 40em) {
      body.wp-child-theme-schrijversveilig .hero-2023 :is(h1, h2) {
        font-size: 3rem; } }
    @media print, screen and (min-width: 64em) {
      body.wp-child-theme-schrijversveilig .hero-2023 :is(h1, h2) {
        font-size: 3.25rem; } }

body.wp-child-theme-schrijversveilig .featured {
  background-image: none;
  background-color: #e4815f; }
  body.wp-child-theme-schrijversveilig .featured .featured__inner {
    padding: 1.25rem;
    background-color: #4266ff;
    border-color: #e4815f;
    justify-content: center; }
  body.wp-child-theme-schrijversveilig .featured .featured__inner-content {
    background: #fff;
    border: 10px solid #000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: 99999px;
    color: #000;
    padding: 3.125rem;
    aspect-ratio: 1 / 1;
    gap: 2.5rem; }
  body.wp-child-theme-schrijversveilig .featured .featured__text {
    text-align: center;
    margin-bottom: 0; }
    body.wp-child-theme-schrijversveilig .featured .featured__text > p {
      font-weight: 700;
      font-size: 1.5rem;
      margin-bottom: 0; }
  body.wp-child-theme-schrijversveilig .featured .button {
    margin-top: 0;
    color: #4266ff; }

body.wp-child-theme-schrijversveilig .site-footer {
  color: #fff; }
  body.wp-child-theme-schrijversveilig .site-footer__top {
    background: #000;
    border-color: #4266ff; }
    @media print, screen and (min-width: 40em) {
      body.wp-child-theme-schrijversveilig .site-footer__top {
        background: transparent; }
        body.wp-child-theme-schrijversveilig .site-footer__top::before {
          background: #000;
          border-color: #e4815f; }
        body.wp-child-theme-schrijversveilig .site-footer__top::after {
          background: #4266ff;
          border-color: #000; } }
  body.wp-child-theme-schrijversveilig .site-footer__contact-info .large-6 {
    width: 100%;
    margin: 0;
    padding-inline: 0.9375rem;
    padding-bottom: 2.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem; }
    body.wp-child-theme-schrijversveilig .site-footer__contact-info .large-6 > span {
      margin: 0; }
    @media print, screen and (min-width: 40em) {
      body.wp-child-theme-schrijversveilig .site-footer__contact-info .large-6 {
        padding-inline: 2.5rem; } }
  body.wp-child-theme-schrijversveilig .site-footer__content--about > p {
    line-height: 2; }
  body.wp-child-theme-schrijversveilig .site-footer__bottom {
    background-color: #e4815f; }
  body.wp-child-theme-schrijversveilig .site-footer__content--logos {
    margin-block: 2.5rem;
    display: flex;
    gap: 1.25rem; }
  body.wp-child-theme-schrijversveilig .site-footer__logo-link {
    max-width: 150px;
    height: auto; }

body.wp-child-theme-schrijversveilig .footer-navigation {
  display: flex;
  color: #fff;
  align-items: flex-start; }
  body.wp-child-theme-schrijversveilig .footer-navigation ul {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    align-items: flex-start; }
    body.wp-child-theme-schrijversveilig .footer-navigation ul li {
      margin: 0; }
      body.wp-child-theme-schrijversveilig .footer-navigation ul li a {
        color: #fff; }
        body.wp-child-theme-schrijversveilig .footer-navigation ul li a:hover {
          color: #e4815f; }

body.wp-child-theme-schrijversveilig .gform-theme {
  background-color: #e4815f;
  padding: 2.5rem; }
  body.wp-child-theme-schrijversveilig .gform-theme .gform_title {
    margin: 0; }
  body.wp-child-theme-schrijversveilig .gform-theme .gform_description {
    margin: 2.5rem auto;
    display: block;
    width: 100%;
    max-width: 600px; }
  body.wp-child-theme-schrijversveilig .gform-theme form#gform_1 {
    max-width: 600px; }
  body.wp-child-theme-schrijversveilig .gform-theme .gform-field-label {
    font-weight: 700;
    font-size: 1rem;
    margin-bottom: 0;
    color: #000; }
  body.wp-child-theme-schrijversveilig .gform-theme .gfield_required {
    color: #000; }
  body.wp-child-theme-schrijversveilig .gform-theme .gfield_consent_description {
    border: none;
    padding: 0;
    margin-block-start: 2rem !important; }
    body.wp-child-theme-schrijversveilig .gform-theme .gfield_consent_description a {
      text-decoration: underline;
      font-size: 1rem;
      color: #000; }
      body.wp-child-theme-schrijversveilig .gform-theme .gfield_consent_description a:hover {
        color: #4266ff; }
  @media print, screen and (min-width: 40em) {
    body.wp-child-theme-schrijversveilig .gform-theme {
      padding: 3.75rem; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtYWx0LmNzcyIsInNvdXJjZXMiOlsic3R5bGUtYWx0LnNjc3MiLCJzZXR0aW5ncy9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2NvbG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwic2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwic2V0dGluZ3MvX3ZhcmlhYmxlcy5zY3NzIiwic2V0dGluZ3MvX21peGlucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25vcm1hbGl6ZS5jc3Mvbm9ybWFsaXplLmNzcyIsImdsb2JhbC9fcmVzZXQuc2NzcyIsImdsb2JhbC9fcHJpbnQuc2NzcyIsImdsb2JhbC9fc2NyZWVuLXJlYWRlci10ZXh0LnNjc3MiLCJnbG9iYWwvX2FuaW1hdGlvbnMuc2NzcyIsImdsb2JhbC9fZm9udHMuc2NzcyIsImdsb2JhbC9fd29yZHByZXNzLnNjc3MiLCJnbG9iYWwvX2dsb2JhbC5zY3NzIiwiZ2xvYmFsL190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdmVuZG9yL25vcm1hbGl6ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19taXNzaW5nLWRlcGVuZGVuY2llcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL190cnVlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B1cmdlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVtb3ZlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVwbGFjZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RvLWxpc3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcmFuZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZXJyb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NvbHVtbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19zaXplLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2d1dHRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jbGFzc2VzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19mbGV4LWdyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9feHktZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2VsbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19sYXlvdXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Nsb3NlLWJ1dHRvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N3aXRjaC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190b29sdGlwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb3JiaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RodW1ibmFpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUtaWNvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcmlsbGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vZmYtY2FudmFzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3JldmVhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGl0bGUtYmFyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxleC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcHJvdG90eXBlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcmVsYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3RhdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXV0aWxpdGllcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtdHJhbnNmb3JtYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19mb250LXN0eWxpbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19saXN0LXN0eWxlLXR5cGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3VuZGVkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyZWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zaGFkb3cuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19hcnJvdy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NlcGFyYXRvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX292ZXJmbG93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZGlzcGxheS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyLWJveC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ub25lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2l6aW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc3BhY2luZy5zY3NzIiwiY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJjb21wb25lbnRzL19mb290ZXIuc2NzcyIsImNvbXBvbmVudHMvX2NhcmQuc2NzcyIsImNvbXBvbmVudHMvX21haW4tbmF2aWdhdGlvbi5zY3NzIiwiY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiY29tcG9uZW50cy9fbG9hZGVyLnNjc3MiLCJjb21wb25lbnRzL19wcmljZS1jdGEuc2NzcyIsIm1vZHVsZXMvX2dyYXZpdHktZm9ybXMuc2NzcyIsIm1vZHVsZXMvX2ZpbmQtYS5zY3NzIiwiX3NoYXJlZC1hbHQuc2NzcyIsImd1dGVuYmVyZy9fd3AtYmxvY2stbWVkaWEtdGV4dC5zY3NzIiwiZ3V0ZW5iZXJnL193cC1ibG9jay1lbWJlZC5zY3NzIiwiZ3V0ZW5iZXJnL193cC1ibG9jay1idXR0b24uc2NzcyIsImNvbXBvbmVudHMvX2J1dHRvbi5zY3NzIiwiY29tcG9uZW50cy9fZm9ybXMuc2NzcyIsImNvbXBvbmVudHMvX3Bvc3Quc2NzcyIsImNvbXBvbmVudHMvX3NlYXJjaC1mb3JtLnNjc3MiLCJjb21wb25lbnRzL19zb2NpYWwtbWVkaWEuc2NzcyIsImNvbXBvbmVudHMvX3NlY3Rpb25zLnNjc3MiLCJjb21wb25lbnRzL19hZ2VuZGEuc2NzcyIsImNvbXBvbmVudHMvX3JlbGF0ZWQtcGFnZXMuc2NzcyIsImNvbXBvbmVudHMvX2dsb2JhbC1jdGEuc2NzcyIsImNvbXBvbmVudHMvX2tub3dsZWRnZS5zY3NzIiwiY29tcG9uZW50cy9fYmFja2dyb3VuZHMuc2NzcyIsImNvbXBvbmVudHMvX2ZpbHRlci5zY3NzIiwiY29tcG9uZW50cy9fc2VhcmNoLWZpbHRlci5zY3NzIiwiY29tcG9uZW50cy9fZW50cnkuc2NzcyIsImNvbXBvbmVudHMvX3RhYnMuc2NzcyIsImNvbXBvbmVudHMvX2tub3dsZWRnZS1pdGVtLnNjc3MiLCJjb21wb25lbnRzL19zbGlkZS1vdXQuc2NzcyIsImNvbXBvbmVudHMvX3BhZ2UtaXRlbS5zY3NzIiwiY29tcG9uZW50cy9fcG9zdC1pdGVtLnNjc3MiLCJibG9ja3MvX2ZlYXR1cmVkLnNjc3MiLCJibG9ja3MvX3NlY3Rpb24tY2xvdWQuc2NzcyIsImJsb2Nrcy9fcHJpY2VzLnNjc3MiLCJibG9ja3MvX3VwY29taW5nLWFnZW5kYS5zY3NzIiwiYmxvY2tzL19lbWFpbHMuc2NzcyIsImJsb2Nrcy9fbGF0ZXN0LXBvc3RzLnNjc3MiLCJibG9ja3MvX2xvY2F0aW9ucy5zY3NzIiwiYmxvY2tzL19yZWFzb25zLnNjc3MiLCJibG9ja3MvX2FjY29yZGlvbi5zY3NzIiwiYmxvY2tzL19xdW90ZS5zY3NzIiwiYmxvY2tzL19wZW9wbGUuc2NzcyIsImJsb2Nrcy9fdGFicy5zY3NzIiwiYmxvY2tzL19hbmNob3Iuc2NzcyIsImJsb2Nrcy9fa25vd2xlZGdlLnNjc3MiLCJibG9ja3MvX2hlcm8tMjAyMy5zY3NzIiwiYmxvY2tzL19oZXJvLWFsdC5zY3NzIiwiYmxvY2tzL19jdGEtYWx0LnNjc3MiLCJibG9ja3MvX3BhZ2UtaXRlbXMuc2NzcyIsInByaWNlLTIwMjEvX3RlbXBsYXRlLnNjc3MiLCJwcmljZS0yMDIxL19uYXZpZ2F0aW9uLnNjc3MiLCJwcmljZS0yMDIxL19oZXJvLnNjc3MiLCJwcmljZS0yMDIxL19pbnRyby1oaWdobGlnaHQuc2NzcyIsInByaWNlLTIwMjEvX2NhcmQuc2NzcyIsInByaWNlLTIwMjEvX25vbWluZWVzLnNjc3MiLCJwcmljZS0yMDIxL19wcmV2aW91cy13aW5uZXJzLnNjc3MiLCJwcmljZS0yMDIxL19sYXN0LXdpbm5lci5zY3NzIiwicHJpY2UtMjAyMS9fYWJvdXQuc2NzcyIsInByaWNlLTIwMjEvX3ZpZGVvLnNjc3MiLCJfc2NocmlqdmVycy12ZWlsaWcuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIkZWRpdG9yOiBmYWxzZTtcblxuLyogU2V0dGluZ3MgKi9cbkBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcbkBpbXBvcnQgJ3NldHRpbmdzL2NvbG9ycyc7XG5AaW1wb3J0ICdzZXR0aW5ncy92YXJpYWJsZXMnO1xuQGltcG9ydCAnc2V0dGluZ3MvbWl4aW5zJztcblxuLyogTm9ybWFsaXplICovXG5AaW1wb3J0ICdub3JtYWxpemUnO1xuXG4vKiBHbG9iYWwgKi9cbkBpbXBvcnQgJ2dsb2JhbC9yZXNldCc7XG5AaW1wb3J0ICdnbG9iYWwvcHJpbnQnO1xuQGltcG9ydCAnZ2xvYmFsL3NjcmVlbi1yZWFkZXItdGV4dCc7XG5AaW1wb3J0ICdnbG9iYWwvYW5pbWF0aW9ucyc7XG5AaW1wb3J0ICdnbG9iYWwvZm9udHMnO1xuQGltcG9ydCAnZ2xvYmFsL3dvcmRwcmVzcyc7XG5AaW1wb3J0ICdnbG9iYWwvZ2xvYmFsJztcbkBpbXBvcnQgJ2dsb2JhbC90eXBvZ3JhcGh5JztcblxuLyogRm91bmRhdGlvbjsgVGhlIFhZIEdyaWQgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdDsgRG9jdW1lbnRhdGlvbiBhdCA8aHR0cDovL2ZvdW5kYXRpb24uenVyYi5jb20vc2l0ZXMvZG9jcy8+ICovXG5AaW1wb3J0ICdmb3VuZGF0aW9uJztcbkBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcblxuLyogRm9udCBBd2Vzb21lIDUgUHJvOyBVbmNvbW1lbnQgaWYgeW91IHdhbnQgdG8gdXNlIGl0ICovXG4vL0BpbXBvcnQgJ2ZvbnRhd2Vzb21lLXByby9zY3NzL2ZvbnRhd2Vzb21lJztcbi8vQGltcG9ydCAnZm9udGF3ZXNvbWUtcHJvL3Njc3Mvc29saWQnO1xuLy9AaW1wb3J0ICdmb250YXdlc29tZS1wcm8vc2Nzcy9yZWd1bGFyJztcbi8vQGltcG9ydCAnZm9udGF3ZXNvbWUtcHJvL3Njc3MvbGlnaHQnO1xuLy9AaW1wb3J0ICdmb250YXdlc29tZS1wcm8vc2Nzcy9kdW90b25lJztcbi8vQGltcG9ydCAnZm9udGF3ZXNvbWUtcHJvL3Njc3MvYnJhbmRzJztcblxuLyogQ29tcG9uZW50cyAqL1xuQGltcG9ydCAnY29tcG9uZW50cy9oZWFkZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9mb290ZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWFpbi1uYXZpZ2F0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2xvYWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3ByaWNlLWN0YSc7XG5cbi8qIEJsb2NrcyAqL1xuXG4vKiBNb2R1bGVzICovXG5AaW1wb3J0ICdtb2R1bGVzL2dyYXZpdHktZm9ybXMnO1xuQGltcG9ydCAnbW9kdWxlcy9maW5kLWEnO1xuXG4vKiBTaGFyZWQgKHN0eWxlcyB1c2VkIGluIGJvdGggd2Vic2l0ZSBhbmQgZWRpdG9yKSAqL1xuQGltcG9ydCAnc2hhcmVkLWFsdCc7XG5AaW1wb3J0ICdzY2hyaWp2ZXJzLXZlaWxpZyc7XG4iLCIvKipcbiAqIFNldHRpbmdzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLyogR2xvYmFsICovXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjMwKTtcblxuLyogQnJlYWtwb2ludHMgKi9cbiRicmVha3BvaW50czogKFxuICAgIHNtYWxsOiAwLFxuICAgIG1lZGl1bTogNjQwcHgsXG4gICAgbGFyZ2U6IDEwMjRweCxcbiAgICB4bGFyZ2U6IDEyMDBweCxcbiAgICB4eGxhcmdlOiAxNDQwcHhcbik7XG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2U7XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlIHhsYXJnZSk7XG5cbi8qIFR5cG9ncmFwaHkgKi9cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xuJGJvZHktZm9udC1mYW1pbHk6ICdRdWlja3NhbmQnLCAnSGVsdmV0aWNhJywgc2Fucy1zZXJpZjtcbiRoZWFkaW5nLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcblxuLyogWFkgR3JpZCAqL1xuJHh5LWdyaWQ6IHRydWU7XG4kZ3JpZC1jb250YWluZXI6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW5zOiAxMjtcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiByZW0tY2FsYygzMCk7XG4kZ3JpZC1wYWRkaW5nLWd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzO1xuJGdyaWQtY29udGFpbmVyLXBhZGRpbmc6ICRncmlkLXBhZGRpbmctZ3V0dGVycztcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGg7XG4keHktYmxvY2stZ3JpZC1tYXg6IDg7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEZpbmRzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGIgLSBTZWNvbmQgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG5AZnVuY3Rpb24gZ2NkKCRhLCAkYikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxuICBAaWYgKCRiICE9IDApIHtcbiAgICBAcmV0dXJuIGdjZCgkYiwgJGEgJSAkYik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYWJzKCRhKTtcbiAgfVxufVxuXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGJhc2UgbnVtYmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcHJvZHVjdCBvZiB0aGUgZXhwb25lbnRpYXRpb24uXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxNikge1xuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XG4gICAgJHByZWMyOiBwb3coMTAsICRwcmVjKTtcbiAgICAkZXhwb25lbnQ6IHJvdW5kKCRleHBvbmVudCAqICRwcmVjMik7XG4gICAgJGRlbm9taW5hdG9yOiBnY2QoJGV4cG9uZW50LCAkcHJlYzIpO1xuICAgIEByZXR1cm4gbnRoLXJvb3QocG93KCRiYXNlLCBkaXZpZGUoJGV4cG9uZW50LCAkZGVub21pbmF0b3IpKSwgZGl2aWRlKCRwcmVjMiwgJGRlbm9taW5hdG9yKSwgJHByZWMpO1xuICB9XG5cbiAgJHZhbHVlOiAkYmFzZTtcbiAgQGlmICRleHBvbmVudCA+IDEge1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6IGRpdmlkZSgkdmFsdWUsICRiYXNlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuQGZ1bmN0aW9uIG50aC1yb290KCRudW0sICRuOiAyLCAkcHJlYzogMTIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL050aF9yb290I0phdmFTY3JpcHRcbiAgJHg6IDE7XG5cbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkcHJlYyB7XG4gICAgJHg6IGRpdmlkZSgxLCAkbikgKiAoKCRuIC0gMSkgKiAkeCArIGRpdmlkZSgkbnVtLCBwb3coJHgsICRuIC0gMSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHg7XG59XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSB3aWR0aCBmb3IgYSBnaXZlbiByYXRpby5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYXRpbyAtIFJhdGlvIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCwgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxuLy8vIEByZXR1cm4ge051bWJlcn0gQSBwZXJjZW50YWdlIHZhbHVlIGZvciB0aGUgaGVpZ2h0IHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiBhIHJlc3BvbnNpdmUgY29udGFpbmVyLlxuQGZ1bmN0aW9uIHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKSB7XG4gICR3OiBudGgoJHJhdGlvLCAxKTtcbiAgJGg6IG50aCgkcmF0aW8sIDMpO1xuICBAcmV0dXJuIGRpdmlkZSgkaCwgJHcpICogMTAwJTtcbn1cblxuLy8vIFBhcnNlIHRoZSBnaXZlbiBgJGZyYWN0aW9uYCB0byBudW1lcmF0b3JzIGFuZCBkZW51bWVyYXRvcnMuXG4vLy9cbi8vLyBAcGFyYW0geyp9ICRmcmFjdGlvbiAtIFZhbHVlIHJlcHJlc2VudGluZyBhIGZyYWN0aW9uIHRvIHBhcnNlLiBJdCBjYW4gYmUgZm9ybWF0dGVkIGFzIGA1MCVgLCBgMSBvZiAyYCwgYDEvMmAgb3IgYDUwYCAobm8gZGVub21pbmF0b3Igd291bGQgYmUgcmV0dXJuZWQpLlxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH0gTGlzdCBvZiBwYXJzZWQgdmFsdWVzIHdpdGggbnVtZXJhdG9yIGF0IGZpcnN0IHBvc2l0aW9uIGFuZCBkZW51bWVyYXRvciBhcyBzZWNvbmQuIFRoZXNlIHZhbHVlcyBtYXkgYmUgbnVsbC5cbkBmdW5jdGlvbiB6Zi1wYXJzZS1mcmFjdGlvbigkZnJhY3Rpb24pIHtcblxuICBAaWYgdHlwZS1vZigkZnJhY3Rpb24pID09ICdudW1iZXInIHtcbiAgICAvLyBcIjUwJVwiXG4gICAgQGlmIHVuaXQoJGZyYWN0aW9uKSA9PSAnJScge1xuICAgICAgQHJldHVybiAoc3RyaXAtdW5pdCgkZnJhY3Rpb24pLCAxMDApO1xuICAgIH1cbiAgICBAZWxzZSBpZiAodW5pdCgkZnJhY3Rpb24pID09ICcnKSB7XG4gICAgICAvLyBcIjAuNVwiXG4gICAgICBAaWYgJGZyYWN0aW9uIDwgMSB7XG4gICAgICAgIEByZXR1cm4gKCRmcmFjdGlvbiAqIDEwMCwgMTAwKTtcbiAgICAgIH1cbiAgICAgIC8vIFwiNTBcIlxuICAgICAgQGVsc2Uge1xuICAgICAgICBAcmV0dXJuICgkZnJhY3Rpb24sIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZyYWN0aW9uKSA9PSAnbGlzdCcge1xuICAgIC8vIFwiNTAgb2YgMTAwXCIsIFwiNTAvMTAwXCIuLi5cbiAgICBAaWYgbGVuZ3RoKCRmcmFjdGlvbikgPT0gM1xuICAgIGFuZCB0eXBlLW9mKG50aCgkZnJhY3Rpb24sIDEpID09ICdudW1iZXInKVxuICAgIGFuZCB0eXBlLW9mKG50aCgkZnJhY3Rpb24sIDMpID09ICdudW1iZXInKSB7XG4gICAgICBAcmV0dXJuIChudGgoJGZyYWN0aW9uLCAxKSwgbnRoKCRmcmFjdGlvbiwgMykpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gKG51bGwsIG51bGwpO1xufVxuXG4vLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBgJHZhbHVlYCByZXByZXNlbnRzIGEgZnJhY3Rpb24uIFN1cHBvcnRzIGZvcm1hdHMgbGlrZSBgNTAlYCwgYDEgb2YgMmAsIGAxIHBlciAyYCBvciBgMS8yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gVmFsdWUgdG8gdGVzdC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRhbGxvdy1uby1kZW5vbWluYXRvciBbZmFsc2VdIC0gSWYgYHRydWVgLCBzaW1wbGUgbnVtYmVycyB3aXRob3V0IGRlbm9taW5hdG9ycyBsaWtlIGA1MGAgYXJlIHN1cHBvcnRlZC5cbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IGB0cnVlYCBpZiBgJHZhbHVlYCByZXByZXNlbnRzIGEgZnJhY3Rpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuQGZ1bmN0aW9uIHpmLWlzLWZyYWN0aW9uKCR2YWx1ZSwgJGFsbG93LW5vLWRlbm9taW5hdG9yOiBmYWxzZSkge1xuICAkcGFyc2VkOiB6Zi1wYXJzZS1mcmFjdGlvbigkdmFsdWUpO1xuICBAcmV0dXJuIG5vdChudGgoJHBhcnNlZCwgMSkgPT0gbnVsbFxuICAgIG9yIChudGgoJHBhcnNlZCwgMikgPT0gbnVsbCBhbmQgJGFsbG93LW5vLWRlbm9taW5hdG9yID09IGZhbHNlKSk7XG59XG5cbi8vLyBDYWxjdWxhdGUgYSBwZXJjZW50YWdlIGZyb20gYSBnaXZlbiBmcmFjdGlvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRmcmFjdGlvbiAtIFZhbHVlIHJlcHJlc2VudGluZyBhIGZyYWN0aW9uIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2UsIGZvcm1hdHRlZCBhcyBgNTBgIChyZWxhdGl2ZSB0byBgJGRlbm9taW5hdG9yYCksIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZGVub21pbmF0b3IgLSBEZWZhdWx0IHZhbHVlIHRvIHVzZSBhcyBkZW5vbWluYXRvciB3aGVuIGAkZnJhY3Rpb25gIHJlcHJlc2VudHMgYW4gYWJzb2x1dGUgdmFsdWUuXG5AZnVuY3Rpb24gZnJhY3Rpb24tdG8tcGVyY2VudGFnZShcbiAgJGZyYWN0aW9uLFxuICAkZGVub21pbmF0b3I6IG51bGxcbikge1xuICAkcGFyc2VkOiB6Zi1wYXJzZS1mcmFjdGlvbigkZnJhY3Rpb24pO1xuICAkcGFyc2VkLW5vbWluYXRvcjogbnRoKCRwYXJzZWQsIDEpO1xuICAkcGFyc2VkLWRlbm9taW5hdG9yOiBudGgoJHBhcnNlZCwgMik7XG5cbiAgQGlmICRwYXJzZWQtbm9taW5hdG9yID09IG51bGwge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBcImZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoKVwiLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIgLyBcIm4vblwiLic7XG4gIH1cbiAgQGlmICRwYXJzZWQtZGVub21pbmF0b3IgPT0gbnVsbCB7XG4gICAgQGlmIHR5cGUtb2YoJGRlbm9taW5hdG9yKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkcGFyc2VkLWRlbm9taW5hdG9yOiAkZGVub21pbmF0b3I7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBlcnJvciAnRXJyb3Igd2l0aCBcImZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoKVwiLiBBIGRlZmF1bHQgXCIkZGVub21pbmF0b3JcIiBpcyByZXF1aXJlZCB0byBzdXBwb3J0IGFic29sdXRlIHZhbHVlcyc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBwZXJjZW50YWdlKGRpdmlkZSgkcGFyc2VkLW5vbWluYXRvciwgJHBhcnNlZC1kZW5vbWluYXRvcikpO1xufVxuXG4vLy8gRGl2aWRlIHRoZSBnaXZlbiBgJGRpdmlkZW50YCBieSB0aGUgZ2l2ZW4gYCRkaXZpc29yYC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGl2aWRlbnQgLSBUaGUgZGl2aWRlbnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkaXZpc29yIC0gVGhlIGRpdmlzb3IuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwcmVjaXNpb24gLSBUaGUgcHJlY2lzaW9uIGRlY2ltYWxzIGZvciB0aGUgZGl2aXNpb24uXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBwcm9kdWN0IG9mIHRoZSBkaXZpc2lvbi5cbkBmdW5jdGlvbiBkaXZpZGUoJGRpdmlkZW5kLCAkZGl2aXNvciwgJHByZWNpc2lvbjogMTIpIHtcbiAgJHNpZ246IGlmKCRkaXZpZGVuZCA+IDAgYW5kICRkaXZpc29yID4gMCBvciAkZGl2aWRlbmQgPCAwIGFuZCAkZGl2aXNvciA8IDAsIDEsIC0xKTtcbiAgJGRpdmlkZW5kOiBhYnMoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3I6IGFicygkZGl2aXNvcik7XG4gIEBpZiAkZGl2aWRlbmQgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG4gIEBpZiAkZGl2aXNvciA9PSAwIHtcbiAgICBAZXJyb3IgJ0Nhbm5vdCBkaXZpZGUgYnkgMCc7XG4gIH1cbiAgJHJlbWFpbmRlcjogJGRpdmlkZW5kO1xuICAkcmVzdWx0OiAwO1xuICAkZmFjdG9yOiAxMDtcbiAgQHdoaWxlICgkcmVtYWluZGVyID4gMCBhbmQgJHByZWNpc2lvbiA+PSAwKSB7XG4gICAgJHF1b3RpZW50OiAwO1xuICAgIEB3aGlsZSAoJHJlbWFpbmRlciA+PSAkZGl2aXNvcikge1xuICAgICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAtICRkaXZpc29yO1xuICAgICAgJHF1b3RpZW50OiAkcXVvdGllbnQgKyAxO1xuICAgIH1cbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyAkcXVvdGllbnQ7XG4gICAgJGZhY3RvcjogJGZhY3RvciAqIDAuMTtcbiAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyICogMTA7XG4gICAgJHByZWNpc2lvbjogJHByZWNpc2lvbiAtIDE7XG4gICAgQGlmICgkcHJlY2lzaW9uIDwgMCBhbmQgJHJlbWFpbmRlciA+PSAkZGl2aXNvciAqIDUpIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAxO1xuICAgIH1cbiAgfVxuICAkcmVzdWx0OiAkcmVzdWx0ICogJGZhY3RvciAqICRzaWduO1xuICAkZGl2aWRlbmQtdW5pdDogdW5pdCgkZGl2aWRlbmQpO1xuICAkZGl2aXNvci11bml0OiB1bml0KCRkaXZpc29yKTtcbiAgJHVuaXQtbWFwOiAoXG4gICAgJ3B4JzogMXB4LFxuICAgICdyZW0nOiAxcmVtLFxuICAgICdlbSc6IDFlbSxcbiAgICAnJSc6IDElXG4gICk7XG4gIEBpZiAoJGRpdmlkZW5kLXVuaXQgIT0gJGRpdmlzb3ItdW5pdCBhbmQgbWFwLWhhcy1rZXkoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCkpIHtcbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogbWFwLWdldCgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5cbiR1bml0LXdhcm5pbmdzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuIGRpdmlkZSgkbnVtLCAkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogZGl2aWRlKCRiYXNlLCAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEBpZiAkdW5pdC13YXJuaW5ncyB7XG4gICAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgfVxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogZGl2aWRlKHN0cmlwLXVuaXQoJHZhbHVlKSwgc3RyaXAtdW5pdCgkYmFzZSkpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiBkaXZpZGUoJGJhc2UsIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldCdzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBkaXZpZGUoc3RyaXAtdW5pdCgkdmFsdWUpLCBzdHJpcC11bml0KCRiYXNlKSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlciB0aGFuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuIGRpdmlkZSgkdmFsdWUsIHN0cmlwLXVuaXQoJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgodG9wOiBudGgoJHZhbCwgMSksIGJvdHRvbTogbnRoKCR2YWwsIDEpLCBsZWZ0OiBudGgoJHZhbCwgMiksIHJpZ2h0OiBudGgoJHZhbCwgMiksICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSAzIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKHRvcDogbnRoKCR2YWwsIDEpLCBsZWZ0OiBudGgoJHZhbCwgMiksIHJpZ2h0OiBudGgoJHZhbCwgMiksIGJvdHRvbTogbnRoKCR2YWwsIDMpLCApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gNCB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCh0b3A6IG50aCgkdmFsLCAxKSwgcmlnaHQ6IG50aCgkdmFsLCAyKSwgYm90dG9tOiBudGgoJHZhbCwgMyksIGxlZnQ6IG50aCgkdmFsLCA0KSwgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuXG4vLy8gUmV0dXJuIGEgam9pbiBvZiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MgYCRzdHIxYCBhbmQgYCRzdHIyYC5cbi8vLyBJZiB0aGUgdHdvIHN0cmluZ3MgYXJlIG5vdCBlbXB0eSwgdGhleSBhcmUgc2VwYXJhdGVkIGJ5IGAkZGVsaW1pdGVyYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyMSBbbnVsbF0gLSBGaXJzdCBzdHJpbmcgdG8gam9pbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0cjEgW251bGxdIC0gU2Vjb25kIHN0cmluZyB0byBqb2luLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFtudWxsXSAtIERlbGltaWV0ZXIgYmV0d2VlbiBgJHN0cjFgIGFuZCBgJHN0cjJgLlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gSm9pbiBvZiBgJHN0cjFgLCBgJGRlbGltaXRlcmAgYW5kIGAkc3RyMmAuXG5AZnVuY3Rpb24gemYtc3RyLWpvaW4oXG4gICRzdHIxOiBudWxsLFxuICAkc3RyMjogbnVsbCxcbiAgJGRlbGltaXRlcjogbnVsbFxuKSB7XG4gICRyZXQ6ICcnO1xuXG4gIEBpZiAkc3RyMSBhbmQgc3RyLWxlbmd0aCgkc3RyMSkgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjE7XG5cbiAgICBAaWYgJGRlbGltaXRlciBhbmQgc3RyLWxlbmd0aCgkZGVsaW1pdGVyKSA+IDAgYW5kICRzdHIyIGFuZCBzdHItbGVuZ3RoKCRzdHIyKSA+IDAge1xuICAgICAgJHJldDogJHJldCArICRkZWxpbWl0ZXI7XG4gICAgfVxuICB9XG4gIEBpZiAkc3RyMiBhbmQgc3RyLWxlbmd0aCgkc3RyMikgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjI7XG4gIH1cblxuICBAcmV0dXJuICRyZXQ7XG59XG5cbi8vLyBTYWZlbHkgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1hcC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIE5hbWUgb2YgdGhlIG1hcCBrZXkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXG5AZnVuY3Rpb24gbWFwLXNhZmUtZ2V0KCRtYXAsICRrZXkpIHtcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0tleTogYCN7JGtleX1gIGlzIG5vdCBhdmFpbGFibGUgaW4gYCN7JG1hcH1gJztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XG4gIH1cbn1cblxuLy8vIENvbnZlcnQgdGhlIGdpdmVuIGAkdmFsYCB0byBhIEJvb2xlYW4uIEVtcHR5IHZhbHVlcyBhcmUgY29uc2lkZXJlZCBhcyBmYWxzZS5cbi8vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbCAtIFZhbHVlIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gQ29udmVydGVkIEJvb2xlYW4gdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWJvb2woJHZhbCkge1xuICBAcmV0dXJuICR2YWwgIT0gZmFsc2UgYW5kIGhhcy12YWx1ZSgkdmFsKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggKiAwLjU7XG4gICRvcHBvc2l0ZS1wbGFjZTogKCgkcGxhY2UgKyAkZGVtaSAtIDEpICUgJGxlbmd0aCkgKyAxO1xuXG4gIEByZXR1cm4gbnRoKCRkaXJzLCAkb3Bwb3NpdGUtcGxhY2UpO1xufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4kY29udHJhc3Qtd2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG4kcHJpbWFyeS1jb2xvcjogbnVsbCAhZGVmYXVsdDtcbiRzZWNvbmRhcnktY29sb3I6IG51bGwgIWRlZmF1bHQ7XG4kd2FybmluZy1jb2xvcjogbnVsbCAhZGVmYXVsdDtcbiRhbGVydC1jb2xvcjogbnVsbCAhZGVmYXVsdDtcbiRzdWNjZXNzLWNvbG9yOiBudWxsICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBjaGVjayB0aGUgbHVtaW5hbmNlIG9mLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbkBmdW5jdGlvbiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAkcmdiYTogcmVkKCRjb2xvciksIGdyZWVuKCRjb2xvciksIGJsdWUoJGNvbG9yKTtcbiAgJHJnYmEyOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDMge1xuICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xuICAgICRyZ2I6IGRpdmlkZSgkcmdiLCAyNTUpO1xuXG4gICAgJHJnYjogaWYoJHJnYiA8IDAuMDM5MjgsIGRpdmlkZSgkcmdiLCAxMi45MiksIHBvdyhkaXZpZGUoJHJnYiArIDAuMDU1LCAxLjA1NSksIDIuNCkpO1xuXG4gICAgJHJnYmEyOiBhcHBlbmQoJHJnYmEyLCAkcmdiKTtcbiAgfVxuXG4gIEByZXR1cm4gMC4yMTI2ICogbnRoKCRyZ2JhMiwgMSkgKyAwLjcxNTIgKiBudGgoJHJnYmEyLCAyKSArIDAuMDcyMiAqIG50aCgkcmdiYTIsIDMpO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBjb250cmFzdCByYXRpbyBvZiB0d28gY29sb3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMSAtIEZpcnN0IGNvbG9yIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMiAtIFNlY29uZCBjb2xvciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGNvbnRyYXN0IHJhdGlvIG9mIHRoZSBjb21wYXJlZCBjb2xvcnMuXG5AZnVuY3Rpb24gY29sb3ItY29udHJhc3QoJGNvbG9yMSwgJGNvbG9yMikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jY29udHJhc3QtcmF0aW9kZWZcbiAgJGx1bWluYW5jZTE6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IxKSArIDAuMDU7XG4gICRsdW1pbmFuY2UyOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMikgKyAwLjA1O1xuICAkcmF0aW86IGRpdmlkZSgkbHVtaW5hbmNlMSwgJGx1bWluYW5jZTIpO1xuXG4gIEBpZiAkbHVtaW5hbmNlMiA+ICRsdW1pbmFuY2UxIHtcbiAgICAkcmF0aW86IGRpdmlkZSgxLCAkcmF0aW8pO1xuICB9XG5cbiAgJHJhdGlvOiByb3VuZCgkcmF0aW8gKiAxMCkgKiAwLjE7XG5cbiAgQHJldHVybiAkcmF0aW87XG59XG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGJhc2VgLCBhbmQgcmV0dXJucyB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYXNlIC0gQ29sb3IgdG8gY2hlY2sgbHVtaW5hbmNlLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGNvbG9ycyBbKCR3aGl0ZSwgJGJsYWNrKV0gLSBDb2xvcnMgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvbGVyYW5jZSBbJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZV0gLSBDb250cmFzdCB0b2xlcmFuY2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuQGZ1bmN0aW9uIGNvbG9yLXBpY2stY29udHJhc3QoJGJhc2UsICRjb2xvcnM6ICgkd2hpdGUsICRibGFjayksICR0b2xlcmFuY2U6ICRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2UpIHtcbiAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsIDEpKTtcbiAgJGJlc3Q6IG50aCgkY29sb3JzLCAxKTtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkY29sb3JzKSB7XG4gICAgJGN1cnJlbnQtY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICBAaWYgKCRjdXJyZW50LWNvbnRyYXN0IC0gJGNvbnRyYXN0ID4gJHRvbGVyYW5jZSkge1xuICAgICAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgICAkYmVzdDogbnRoKCRjb2xvcnMsICRpKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRjb250cmFzdC13YXJuaW5ncyBhbmQgJGNvbnRyYXN0IDwgMykge1xuICAgIEB3YXJuICdDb250cmFzdCByYXRpbyBvZiAjeyRiZXN0fSBvbiAjeyRiYXNlfSBpcyBwcmV0dHkgYmFkLCBqdXN0ICN7JGNvbnRyYXN0fSc7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYCBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwcmltYXJ5LWNvbG9yOiAjMTc3OWJhICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiAjNzY3Njc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHdhcm5pbmctY29sb3I6ICNmZmFlMDAgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRhbGVydC1jb2xvcjogI2NjNGIzNyAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8S2V5d29yZH0gJHR5cGVzIFsoKV0gLSBBIGxpc3Qgb2YgdGV4dCBpbnB1dCB0eXBlcyB0byB1c2UuIExlYXZlIGJsYW5rIHRvIHVzZSBhbGwgb2YgdGhlbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xuICAkcmV0dXJuOiAoKTtcblxuICAkYWxsLXR5cGVzOiB0ZXh0IHBhc3N3b3JkIGRhdGUgZGF0ZXRpbWUgZGF0ZXRpbWUtbG9jYWwgbW9udGggd2VlayBlbWFpbCBudW1iZXIgc2VhcmNoIHRlbCB0aW1lIHVybCBjb2xvcjtcblxuICBAaWYgbm90IGhhcy12YWx1ZSgkdHlwZXMpIHtcbiAgICAkdHlwZXM6ICRhbGwtdHlwZXM7XG4gIH1cblxuICBAZWFjaCAkdHlwZSBpbiAkdHlwZXMge1xuICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCB1bnF1b3RlKCdbdHlwZT1cXCcjeyR0eXBlfVxcJ10jeyRtb2RpZmllcn0nKSwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiQGZ1bmN0aW9uIC16Zi1mbGV4LWp1c3RpZnkoJHRleHQtZGlyZWN0aW9uKSB7XG4gICQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICAgJ2xlZnQnOiBpZigkdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBmbGV4LWVuZCwgZmxleC1zdGFydCksXG4gICAgJ3JpZ2h0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1zdGFydCwgZmxleC1lbmQpLFxuICAgICdjZW50ZXInOiBjZW50ZXIsXG4gICAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxuICAgICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXG4gICk7XG5cbiAgQHJldHVybiAkLXpmLWZsZXgtanVzdGlmeTtcbn1cblxuXG4kLXpmLWZsZXgtYWxpZ246IChcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXG4gICdib3R0b20nOiBmbGV4LWVuZCxcbiAgJ21pZGRsZSc6IGNlbnRlcixcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxuKTtcblxuJC16Zi1mbGV4LWRpcmVjdGlvbjogKFxuICAncm93Jzogcm93LFxuICAncm93LXJldmVyc2UnOiByb3ctcmV2ZXJzZSxcbiAgJ2NvbHVtbic6IGNvbHVtbixcbiAgJ2NvbHVtbi1yZXZlcnNlJzogY29sdW1uLXJldmVyc2UsXG4pO1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGJ5IGFkZGluZyBgZGlzcGxheTogZmxleGAgdG8gdGhlIGVsZW1lbnQuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBhbGlnbnMgdGhlIGl0ZW1zIHdpdGhpbiBhIGZsZXggY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeCBbbnVsbF0gLSBIb3Jpem9udGFsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgbGVmdGAsIGByaWdodGAsIGBjZW50ZXJgLCBganVzdGlmeWAsIG9yIGBzcGFjZWRgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24oJHg6IG51bGwsICR5OiBudWxsKSB7XG4gIEBpZiAkeCB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1qdXN0aWZ5LCAkeCkge1xuICAgICAgJHg6IG1hcC1nZXQoJC16Zi1mbGV4LWp1c3RpZnksICR4KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeH0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGhvcml6b250YWwgYWxpZ25tZW50LiBVc2UgbGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSwgb3Igc3BhY2VkLic7XG4gICAgfVxuICB9XG5cbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAganVzdGlmeS1jb250ZW50OiAkeDtcbiAgYWxpZ24taXRlbXM6ICR5O1xufVxuXG4vLy8gVmVydGljYWxseSBhbGlnbiBhIHNpbmdsZSBjb2x1bW4gd2l0aGluIGEgZmxleCByb3cuIEFwcGx5IHRoaXMgbWl4aW4gdG8gYSBmbGV4IGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduLXNlbGYoJHk6IG51bGwpIHtcbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtY29sdW1uLWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAgYWxpZ24tc2VsZjogJHk7XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzb3VyY2Ugb3JkZXIgb2YgYSBmbGV4IGNoaWxkLiBDaGlsZHJlbiB3aXRoIGxvd2VyIG51bWJlcnMgYXBwZWFyIGZpcnN0IGluIHRoZSBsYXlvdXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcmRlciBbMF0gLSBPcmRlciBudW1iZXIgdG8gYXBwbHkuXG5AbWl4aW4gZmxleC1vcmRlcigkb3JkZXI6IDApIHtcbiAgb3JkZXI6ICRvcmRlcjtcbn1cblxuLy8vIENoYW5nZSBmbGV4LWRpcmVjdGlvblxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbcm93XSAtIEZsZXggZGlyZWN0aW9uIHRvIHVzZS4gQ2FuIGJlXG4vLy8gICAtIHJvdyAoZGVmYXVsdCk6IHNhbWUgYXMgdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gcm93LXJldmVyc2U6IG9wcG9zaXRlIHRvIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIGNvbHVtbjogc2FtZSBhcyByb3cgYnV0IHRvcCB0byBib3R0b21cbi8vLyAgIC0gY29sdW1uLXJldmVyc2U6IHNhbWUgYXMgcm93LXJldmVyc2UgdG9wIHRvIGJvdHRvbVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb246IHJvdykge1xuICBmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gUGF0Y2ggdG8gZml4IGlzc3VlICMxMjA4MFxuJC16Zi1zaXplOiBudWxsO1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIFwic21hbGxcIjogMCxcbiAgXCJtZWRpdW1cIjogNjQwcHgsXG4gIFwibGFyZ2VcIjogMTAyNHB4LFxuICBcInhsYXJnZVwiOiAxMjAwcHgsXG4gIFwieHhsYXJnZVwiOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIEhpRFBJIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzIGZvciByZXNvbHV0aW9ucy5cbi8vLyBWYWx1ZXMgbXVzdCByZXByZXNlbnQgdGhlIGRldmljZSBwaXhlbHMgLyB3ZWIgcGl4ZWxzIHJhdGlvbiBhbmQgYmUgdW5pdGxlc3Mgb3IgaW4gRFBQWC5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50cy1oaWRwaTogKFxuICBcImhpZHBpLTFcIjogMSxcbiAgXCJoaWRwaS0xLTVcIjogMS41LFxuICBcImhpZHBpLTJcIjogMixcbiAgXCJyZXRpbmFcIjogMixcbiAgXCJoaWRwaS0zXCI6IDNcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gV2ViIHN0YW5kYXJkIFBpeGVscyBwZXIgaW5jaC4gKDFkZHB4IC8gJHN0ZC13ZWItZHBpKSA9IDFkcGlcbiAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTMvI2Fic29sdXRlLWxlbmd0aHNcbiAgJHN0ZC13ZWItZHBpOiA5NjtcblxuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludFxuICAkYnAtbmV4dDogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1taW46IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtaW4td2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiBudWxsO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gSWYgbmFtZWQsIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbiAgJG5hbWU6IG51bGw7XG4gIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgSGlEUEkgYnJlYWtwb2ludFxuICAkaGlkcGk6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuXG4gIC8vIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIGdpdmVuLCBnZXQgaXRzIHZhbHVlIGZyb20gdGhlICRicmVha3BvaW50cy8kYnJlYWtwb2ludHMtaGlkcGkgbWFwLlxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMtaGlkcGksICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMtaGlkcGksICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQtbnVtYmVyKCRicmVha3BvaW50cy1oaWRwaSwgJGJwKTtcbiAgICAgICRoaWRwaTogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciBgJGJyZWFrcG9pbnRzYCBvciBgJGJyZWFrcG9pbnRzLWhpZHBpYCBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkbmFtZSBhbmQgJGRpciA9PSAnb25seScge1xuICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ3VwJyBoYXZlIGEgbWluIGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAndXAnIHtcbiAgICAkYnAtbWluOiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICB9XG4gIC8vIE9ubHkgJ29ubHknIGFuZCAnZG93bicgaGF2ZSBhIG1heCBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIHZhbHVlLCB1c2UgaXQgYXMgbWF4IGxpbWl0LlxuICAgIEBpZiBub3QgJG5hbWUge1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgbmFtZWQsIHRoZSBtYXggbGltaXQgaXMgdGhlIGZvbGxvd2luZyBicmVha3BvaW50IC0gMXB4LlxuICAgIEBlbHNlIGlmICRicC1uZXh0IHtcbiAgICAgIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgICAgIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksICRicC1uZXh0IC0gZGl2aWRlKDEsICRzdGQtd2ViLWRwaSksIC16Zi1icC10by1lbSgkYnAtbmV4dCkgLSAwLjAwMTI1KTtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmF0ZSB0aGUgbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gbWluIGFuZCBtYXggbGltaXRzLlxuICBAaWYgJGhpZHBpIHtcbiAgICAvLyBHZW5lcmF0ZSB2YWx1ZXMgaW4gRFBJIGluc3RlYWQgb2YgRFBQWCBmb3IgYW4gSUU5LTExL09wZXJhIG1pbmkgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtbWVkaWEtcmVzb2x1dGlvblxuICAgICRicC1taW4tZHBpOiBpZigkYnAtbWluLCAkYnAtbWluICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1pbik7XG4gICAgJGJwLW1heC1kcGk6IGlmKCRicC1tYXgsICRicC1tYXggKiAkc3RkLXdlYi1kcGkgKiAxZHBpLCAkYnAtbWF4KTtcbiAgICBAcmV0dXJuIHpmLXN0ci1qb2luKFxuICAgICAgLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCwgJy13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbycsICctd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW8nKSxcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4tZHBpLCAkYnAtbWF4LWRwaSwgJ21pbi1yZXNvbHV0aW9uJywgJ21heC1yZXNvbHV0aW9uJyksXG4gICAgICAnLCAnKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAtemYtYnAtam9pbigkYnAtbWluLCAkYnAtbWF4KTtcbiAgfVxufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIGFuZCBgJGJyZWFrcG9pbnRzLWhpZHBpYCBtYXBzLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxuLy8vXG4vLy8gSWYgbXVsdGlwbGUgdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGdlbmVyYXRlIGEgbWVkaWEgcXVlcnkgZm9yIGVhY2ggb2YgdGhlbSBhcyBkZXNjcmliZWQgYWJvdmUuXG4vLy8gU2luY2UgdGhlIGNvbnRlbnQgaXMgZHVwbGljYXRlZCBmb3IgZWFjaCBicmVha3BvaW50LCB0aGlzIG1peGluIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBwcm9wZXJ0aWVzIHRoYXRcbi8vLyBjaGFuZ2UgYWNyb3NzIGJyZWFrcG9pbnRzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlcy4uLiAtIEJyZWFrcG9pbnQgbmFtZSBvciBweC9yZW0vZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlcy4uLikge1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdmFsdWVzKSB7XG4gICAgJHZhbHVlOiBudGgoJHZhbHVlcywgJGkpO1xuICAgICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICAkYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgbnRoKCR2YWx1ZSwgMSkpO1xuICAgICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuICAgIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICAgJGRpcjogaWYobGVuZ3RoKCR2YWx1ZSkgPiAxLCBudGgoJHZhbHVlLCAyKSwgdXApO1xuXG4gICAgJG9sZC16Zi1zaXplOiBudWxsO1xuXG4gICAgLy8gTWFrZSBicmVha3BvaW50IHNpemUgYXZhaWxhYmxlIGFzIGEgdmFyaWFibGVcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gICAgfVxuICAgICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gICAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxuICAgIEBpZiAkc3RyID09ICcnIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY29udGVudCBpbiBhIG1lZGlhIHF1ZXJ5XG4gICAgQGVsc2Uge1xuICAgICAgLy8gRm9yIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAkcHJpbnQtYnJlYWtwb2ludCwgYWRkIHByaW50IHRvIHRoZSBtZWRpYSB0eXBlc1xuICAgICAgLy8gZ2VuZXJhdGUgcHJpbnQgaWYgdGhlIGJyZWFrcG9pbnQgYWZmZWN0cyB0aGUgcHJpbnQtYnJlYWtwb2ludCAob3Igc21hbGxlcikuXG4gICAgICAvLyBUaGlzIG1lYW5zIHRoZSBjdXJyZW50IGNvbmRpdGlvbiBvbmx5IG5lZWRzIHRvIGJlIGV4dGVuZGVkIHNvICdkb3duJyBhbHdheXMgZ2VuZXJhdGVzIHByaW50LlxuICAgICAgQGlmICRicCAhPSBudWxsIGFuZCAoJGJwIDw9ICRwYnAgb3IgJGRpciA9PSBkb3duKSB7XG4gICAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IG51bWJlciBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRudW1iZXIgLSBOdW1iZXIgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSBudW1iZXIgZm9sbG93aW5nIGAkbnVtYmVyYCwgaWYgYCRudW1iZXJgIHdhcyBmb3VuZC4gSWYgYCRudW1iZXJgIHdhcyBub3QgZm91bmQsIG9yIGAkbnVtYmVyYCB3YXMgdGhlIGJpZ2dlc3QgbnVtYmVyIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dC1udW1iZXIoJG1hcCwgJG51bWJlcikge1xuXG4gICRuZXh0LW51bWJlcjogbnVsbDtcblxuICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgQGlmIHR5cGUtb2YoJHYpID09ICdudW1iZXInIGFuZCAkdiA+ICRudW1iZXIgYW5kICgkbmV4dC1udW1iZXIgPT0gbnVsbCBvciAkdiA8ICRuZXh0LW51bWJlcikge1xuICAgICAgJG5leHQtbnVtYmVyOiAkdjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuZXh0LW51bWJlcjtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIEtleSB0byB1c2UgYXMgbGFzdCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJGtleSkge1xuICAkbGlzdDogKCk7XG4gICRmb3VuZC1rZXk6IGZhbHNlO1xuXG4gIEBlYWNoICRuYW1lIGluICQtemYtYnJlYWtwb2ludHMta2V5cyB7XG4gICAgQGlmICgkbmFtZSA9PSAka2V5KSB7XG4gICAgICAkZm91bmQta2V5OiB0cnVlO1xuICAgIH1cbiAgICBAaWYgbm90ICRmb3VuZC1rZXkge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJG5hbWUpO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIGEgbmFtZWQgb3Igbm9uLW5hbWVkIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAkbGFzdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XG4gICRmb3VuZDogZmFsc2U7XG5cbiAgJHZhbHVlOiB1bml0bGVzcy1jYWxjKCRicmVha3BvaW50LCAxcHgpO1xuICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgQGlmIHVuaXRsZXNzLWNhbGMoJHZhbCkgPiAkdmFsdWUge1xuICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGxhc3Q6ICRrZXk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbGFzdDtcbn1cblxuLy8vIEdldCBhIHZhbHVlIGZvciBhIGJyZWFrcG9pbnQgZnJvbSBhIHJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXQgcmVnYXJkbGVzcyBvZiBgJHZhbHVlYC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGhhcyB0aGUga2V5IGAkdmFsdWVgLCB0aGUgZXhhY3QgYnJlYWtwb2ludCB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gUmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtNaXhlZH0gVGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZS5cbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcbiAgLy8gSWYgdGhlIGdpdmVuIG1hcCBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0XG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICRtYXA7XG4gIH1cblxuXG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGdsb2JhbGx5XG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBpbiB0aGUgbG9jYWwgY29uZmlnIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkbWFwLCAkdmFsdWUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJHZhbHVlKTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgYW5kIHJldHVybiB0aGF0IHZhbHVlXG4gIEBlbHNlIHtcbiAgICAkYW5jaG9yOiBudWxsO1xuICAgICRmb3VuZDogZmFsc2U7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICAgIEBpZiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KSB7XG4gICAgICAgICAgJGFuY2hvcjogJGtleTtcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGtleSA9PSAkdmFsdWUge1xuICAgICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkYW5jaG9yKTtcbiAgfVxufVxuXG4vLy8gUmV0dXJuIHRoZSBiZXN0IGJyZWFrcG9pbnQgdG8gdXNlIGFjY29yZGluZyB0byB0aGUgY2FsbGluZyBjb250ZXh0LiBJdCByZXR1cm5zIGluIG9yZGVyOlxuLy8vIDEuIHRoZSBnaXZlbiBgJHZhbHVlYCBhcmd1bWVudCBpZiBpdCBpcyBub3QgbnVsbC5cbi8vLyAyLiB0aGUgZ2xvYmFsIGJyZWFrcG9pbnQgY29udGV4dCBgJC16Zi1zaXplYCBpZiBpdCBpcyBub3QgbnVsbCAobGlrZSBpZiBjYWxsZWQgaW5zaWRlIHRoZW4gYGJyZWFrcG9pbnQoKWAgbWl4aW4pXG4vLy8gMy4gdGhlIGdpdmVuIGAkZGVmYXVsdGAgYXJndW1lbnQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBpbiBwcmlvcml0eSBpZiBub24tbnVsbC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkZWZhdWx0IFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGJ5IGRlZmF1bHQgaWYgbm8gb3RoZXIgdmFsdWUgY2FuIGJlIHVzZWQuXG4vLy9cbi8vLyBAcmV0dXJuIHtLZXl3b3JkfSBUaGUgcmVzb2x2ZWQgYnJlYWtwb2ludC5cbkBmdW5jdGlvbiAtemYtY3VycmVudC1icmVha3BvaW50KCR2YWx1ZTogbnVsbCwgJGRlZmF1bHQ6IG51bGwpIHtcbiAgQGlmICgkdmFsdWUgIT0gbnVsbCkge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICh2YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIGFuZCB0eXBlLW9mKCQtemYtc2l6ZSkgIT0gJ251bWJlcicpIGFuZCAkLXpmLXNpemUgIT0gbnVsbCB7XG4gICAgQHJldHVybiAkLXpmLXNpemU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGRlZmF1bHQ7XG4gIH1cbn1cblxuLy8vIFJldHVybiBtZWRpYSBxdWVyeSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gbWluIGFuZC9vciBtYXggbGltaXRzLlxuLy8vIElmIGEgbGltaXQgaXMgZXF1YWwgdG8gYG51bGxgIG9yIGAwYCwgaXQgaXMgaWdub3JlZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluIFswXSAtIE1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCBbMF0gLSBNYXggbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtaW4tbmFtZSBbJ21pbi13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWluIG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFsnbWF4LXdpZHRoJ10gLSBOYW1lIG9mIHRoZSBtYXggbWVkaWEgcXVlcnkgbGltaXQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBNZWRpYSBRdWVyeSBzdHJpbmcuXG5AZnVuY3Rpb24gLXpmLWJwLWpvaW4oXG4gICRtaW46IDAsXG4gICRtYXg6IDAsXG4gICRtaW4tbmFtZTogJ21pbi13aWR0aCcsXG4gICRtYXgtbmFtZTogJ21heC13aWR0aCdcbikge1xuICBAcmV0dXJuIHpmLXN0ci1qb2luKFxuICAgIGlmKCRtaW4gYW5kICRtaW4gPiAwLCAnKCN7JG1pbi1uYW1lfTogI3skbWlufSknLCBudWxsKSxcbiAgICBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJygjeyRtYXgtbmFtZX06ICN7JG1heH0pJywgbnVsbCksXG4gICAgJyBhbmQgJyk7XG59XG5cbiRzbWFsbC11cDogJyc7XG4kc21hbGwtb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHNtYWxsKSB7XG4gICRzbWFsbC11cDogc2NyZWVuO1xuICAkc21hbGwtb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoc21hbGwgb25seSl9Jyk7XG59XG5cbiRtZWRpdW0tdXA6ICcnO1xuJG1lZGl1bS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbWVkaXVtKSB7XG4gICRtZWRpdW0tdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSl9Jyk7XG4gICRtZWRpdW0tb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtIG9ubHkpfScpO1xufVxuXG4kbGFyZ2UtdXA6ICcnO1xuJGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xuICAkbGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX0nKTtcbiAgJGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlIG9ubHkpfScpO1xufVxuXG4keGxhcmdlLXVwOiAnJztcbiR4bGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xuICAkeGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfScpO1xuICAkeGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHh4bGFyZ2UtdXA6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XG4gICR4eGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX0nKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8gUGF0Y2ggdG8gZml4IGlzc3VlICMxMjA4MFxuJC16Zi1icC12YWx1ZTogbnVsbDtcblxuLy8vIENyZWF0ZXMgYW4gaW5uZXIgYm94LXNoYWRvdyBmb3Igb25seSBvbmUgc2lkZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2lkZSAtIFNpZGUgdGhlIHNoYWRvdyBpcyBzdXBwb3NlZCB0byBhcHBlYXIuIENhbiBiZSBgdG9wYCwgYGxlZnRgLCBgcmlnaHRgIG9yIGBib3R0b21gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIFdpZHRoIGZvciB0aGUgdGFyZ2V0IHNpZGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3Igb2YgdGhlIHNoYWRvdy5cbkBtaXhpbiBpbm5lci1zaWRlLXNoYWRvdyhcbiAgJHNpZGU6IGJvdHRvbSxcbiAgJHNpemU6IDIwcHgsXG4gICRjb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpXG4pIHtcblxuICAkaGVscGVyOiByb3VuZCgkc2l6ZSAqIDAuNjUpO1xuXG4gIEBpZiAoJHNpZGUgPT0gdG9wKSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAkaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGxlZnQpIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAkaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gcmlnaHQpIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAoLTEpKiRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBib3R0b20pIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICgtMSkqJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgQ1NTIHRyaWFuZ2xlLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZHJvcGRvd24gYXJyb3dzLCBkcm9wZG93biBwaXBzLCBhbmQgbW9yZS4gVXNlIHRoaXMgbWl4aW4gaW5zaWRlIGEgYCY6OmJlZm9yZWAgb3IgYCY6OmFmdGVyYCBzZWxlY3RvciwgdG8gYXR0YWNoIHRoZSB0cmlhbmdsZSB0byBhbiBleGlzdGluZyBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR0cmlhbmdsZS1jb2xvciAtIENvbG9yIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0cmlhbmdsZS1kaXJlY3Rpb24gLSBEaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHBvaW50cy4gQ2FuIGJlIGB1cGAsIGByaWdodGAsIGBkb3duYCwgb3IgYGxlZnRgLlxuQG1peGluIGNzcy10cmlhbmdsZShcbiAgJHRyaWFuZ2xlLXNpemUsXG4gICR0cmlhbmdsZS1jb2xvcixcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxuKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogJHRyaWFuZ2xlLXNpemU7XG5cbiAgY29udGVudDogJyc7XG5cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIGJvcmRlci1jb2xvcjogJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSB1cCkge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHJpZ2h0KSB7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBtZW51IGljb24gd2l0aCBhIHNldCB3aWR0aCwgaGVpZ2h0LCBudW1iZXIgb2YgYmFycywgYW5kIGNvbG9ycy4gVGhlIG1peGluIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiB0aGUgYmFycyB0byBkZXRlcm1pbmUgc3BhY2luZy4gPGRpdiBjbGFzcz1cImRvY3MtZXhhbXBsZS1idXJnZXJcIj48L2Rpdj5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yLWhvdmVyIFskZGFyay1ncmF5XSAtIENvbG9yIHRvIHVzZSB3aGVuIHRoZSBpY29uIGlzIGhvdmVyZWQgb3Zlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsyMHB4XSAtIFdpZHRoIG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IFsxNnB4XSAtIEhlaWdodCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbMnB4XSAtIEhlaWdodCBvZiBpbmRpdmlkdWFsIGJhcnMgaW4gdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXJzIFszXSAtIE51bWJlciBvZiBiYXJzIGluIHRoZSBpY29uLlxuQG1peGluIGhhbWJ1cmdlcihcbiAgJGNvbG9yOiAkYmxhY2ssXG4gICRjb2xvci1ob3ZlcjogJGRhcmstZ3JheSxcbiAgJHdpZHRoOiAyMHB4LFxuICAkaGVpZ2h0OiAxNnB4LFxuICAkd2VpZ2h0OiAycHgsXG4gICRiYXJzOiAzXG4pIHtcbiAgLy8gYm94LXNoYWRvdyBDU1Mgb3V0cHV0XG4gICRzaGFkb3c6ICgpO1xuICAkaG92ZXItc2hhZG93OiAoKTtcblxuICAvLyBTcGFjaW5nIGJldHdlZW4gYmFycyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgZWFjaCBiYXJcbiAgJHNwYWNpbmc6IGRpdmlkZSgkaGVpZ2h0IC0gKCR3ZWlnaHQgKiAkYmFycyksICRiYXJzIC0gMSk7XG5cbiAgQGlmIHVuaXQoJHNwYWNpbmcpID09ICdweCcge1xuICAgICRzcGFjaW5nOiBmbG9vcigkc3BhY2luZyk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICRzaGFkb3c6IGFwcGVuZCgkc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3IsIGNvbW1hKTtcbiAgfVxuXG4gIC8vIEljb24gY29udGFpbmVyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBJY29uIGJhcnNcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHdlaWdodDtcblxuICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZVxuICBAaWYgJGNvbG9yLWhvdmVyIHtcbiAgICAvLyBHZW5lcmF0ZSBDU1NcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgICAkaG92ZXItc2hhZG93OiBhcHBlbmQoJGhvdmVyLXNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLWhvdmVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWhvdmVyO1xuICAgICAgYm94LXNoYWRvdzogJGhvdmVyLXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgYSBkb3dud2FyZC1mYWNpbmcgdHJpYW5nbGUgYXMgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIGFuIGVsZW1lbnQuIFRoZSBpbWFnZSBpcyBmb3JtYXR0ZWQgYXMgYW4gU1ZHLCBtYWtpbmcgaXQgZWFzeSB0byBjaGFuZ2UgdGhlIGNvbG9yLiBCZWNhdXNlIEludGVybmV0IEV4cGxvcmVyIGRvZXNuJ3Qgc3VwcG9ydCBlbmNvZGVkIFNWR3MgYXMgYmFja2dyb3VuZCBpbWFnZXMsIGEgUE5HIGZhbGxiYWNrIGlzIGFsc28gaW5jbHVkZWQuXG4vLy8gVGhlcmUgYXJlIHR3byBQTkcgZmFsbGJhY2tzOiBhIGJsYWNrIHRyaWFuZ2xlIGFuZCBhIHdoaXRlIHRyaWFuZ2xlLiBUaGUgb25lIHVzZWQgZGVwZW5kcyBvbiB0aGUgbGlnaHRuZXNzIG9mIHRoZSBpbnB1dCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIHRyaWFuZ2xlLlxuQG1peGluIGJhY2tncm91bmQtdHJpYW5nbGUoJGNvbG9yOiAkYmxhY2spIHtcbiAgJHJnYjogJ3JnYiUyOCN7cm91bmQocmVkKCRjb2xvcikpfSwgI3tyb3VuZChncmVlbigkY29sb3IpKX0sICN7cm91bmQoYmx1ZSgkY29sb3IpKX0lMjknO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmVyc2lvbj1cIjEuMVwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMzIgMjRcIj48cG9seWdvbiBwb2ludHM9XCIwLDAgMzIsMCAxNiwyNFwiIHN0eWxlPVwiZmlsbDogI3skcmdifVwiPjwvcG9seWdvbj48L3N2Zz4nKTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwXFwwKSB7XG4gICAgQGlmIGxpZ2h0bmVzcygkY29sb3IpIDwgNjAlIHtcbiAgICAgIC8vIFdoaXRlIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSXBKUkVGVWVOckVrY2tOZ0RBTUJCZlJrRXQwT2JSQkJkc0dYVURnbVFmSzRYaEgybThjelFBQXkyN1IzdHN3NFFmZTJ4OHVPTzZvWUxiNkdsT29yM0dGK3N3VVJBT21VSitSd3RFSnM5V3ZUR0VZeEJYcUkxTVFBWmhDZlVRS1J6RE1WaitUd3JBSVY2anZTVUVrWUFyMUxTa2N5VEJiL1YrS1lmWDd4QWV1c3Ezc0xEdEdIM2tFR0FDUFdJZmxOWmZoUlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQmxhY2sgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNQkpSRUZVZU5yRWxsc09oQ0FNUlZzekM5SWx6VTdLQ21WSFRKc29NV1lNVXRweXY5QmdidVhRQjVaU2RnQllZWTR5Y2dCaXZrOEtZRnNRTWZNaVRUQlA0bzNuVXpDS3pPYWJMSmJMeTIvZzMxZXZHa0FnaW5SNC9aZWdLSDVxWDNiSkNzY0EzdDB4M2tnTzV0UUZ5aGhGZjUweFJxRkxieU1VTkpRemd5akdTL3dnQ3B2S3FrUkJwdVdyRTRWOWQrMUU0ZFBVWHFJZzEwN1NRT0UvMkRSUXhNd1REeWdJSW5WREVUOVQzbENvai82ai9WQ21HalpPbDJsS3BaOEFBd0RRUDd6SWltREdGUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyB0aGUgbWljcm8gY2xlYXJmaXggaGFjayBwb3B1bGFyaXplZCBieSBOaWNvbGFzIEdhbGxhZ2hlci4gSW5jbHVkZSB0aGlzIG1peGluIG9uIGEgY29udGFpbmVyIGlmIGl0cyBjaGlsZHJlbiBhcmUgYWxsIGZsb2F0ZWQsIHRvIGdpdmUgdGhlIGNvbnRhaW5lciBhIHByb3BlciBoZWlnaHQuXG4vLy8gVGhlIGNsZWFyZml4IGlzIGF1Z21lbnRlZCB3aXRoIHNwZWNpZmljIHN0eWxlcyB0byBwcmV2ZW50IGJvcmRlcnMgaW4gZmxleGJveCBlbnZpcm9ubWVudHNcbi8vLyBAbGluayBodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8gTWljcm8gQ2xlYXJmaXggSGFja1xuLy8vIEBsaW5rIGh0dHA6Ly9kYW5pc2FkZXNpZ25lci5jb20vYmxvZy9mbGV4Ym94LWNsZWFyLWZpeC1wc2V1ZG8tZWxlbWVudHMvIEZsZXhib3ggZml4XG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjb250ZW50OiAnICc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuLy8vIEFkZHMgQ1NTIGZvciBhIFwicXVhbnRpdHkgcXVlcnlcIiBzZWxlY3RvciB0aGF0IGF1dG9tYXRpY2FsbHkgc2l6ZXMgZWxlbWVudHMgYmFzZWQgb24gaG93IG1hbnkgdGhlcmUgYXJlIGluc2lkZSBhIGNvbnRhaW5lci5cbi8vLyBAbGluayBodHRwOi8vYWxpc3RhcGFydC5jb20vYXJ0aWNsZS9xdWFudGl0eS1xdWVyaWVzLWZvci1jc3MgUXVhbnRpdHkgUXVlcmllcyBmb3IgQ1NTXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCAtIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGRldGVjdC4gVGhlIGhpZ2hlciB0aGlzIG51bWJlciBpcywgdGhlIG1vcmUgQ1NTIHRoYXQncyByZXF1aXJlZCB0byBjb3ZlciBlYWNoIG51bWJlciBvZiBpdGVtcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIFtsaV0gLSBUYWcgdG8gdXNlIGZvciBzaWJsaW5nIHNlbGVjdG9ycy5cbkBtaXhpbiBhdXRvLXdpZHRoKCRtYXgsICRlbGVtOiBsaSkge1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRtYXgge1xuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkLFxuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkIH4gI3skZWxlbX0ge1xuICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoZGl2aWRlKDEsICRpKSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBSZW1vdmVzIHRoZSBmb2N1cyByaW5nIGFyb3VuZCBhbiBlbGVtZW50IHdoZW4gYSBtb3VzZSBpbnB1dCBpcyBkZXRlY3RlZC5cbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xuICBbZGF0YS13aGF0aW5wdXQ9J21vdXNlJ10gJiB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXG4vLy8gQGxpbmsgaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eSBIaWRpbmcgQ29udGVudCBmb3IgQWNjZXNzaWJpbGl0eVxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTYvMTAvMTMvY3NzLWhpZGUtYW5kLXNlZWsvXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRlbmZvcmNlIC0gSWYgYHRydWVgLCB1c2UgYCFpbXBvcnRhbnRgIG9uIGFwcGxpZWQgcHJvcGVydGllc1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlKFxuICAkZW5mb3JjZTogdHJ1ZVxuKSB7XG4gICRpbXBvcnRhbnQ6IGlmKCRlbmZvcmNlLCAnIWltcG9ydGFudCcsIG51bGwpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogMXB4ICN7JGltcG9ydGFudH07XG4gIGhlaWdodDogMXB4ICN7JGltcG9ydGFudH07XG4gIHBhZGRpbmc6IDAgI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAjeyRpbXBvcnRhbnR9O1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApICN7JGltcG9ydGFudH07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgI3skaW1wb3J0YW50fTtcbiAgYm9yZGVyOiAwICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBSZXZlcnNlcyB0aGUgQ1NTIG91dHB1dCBjcmVhdGVkIGJ5IHRoZSBgZWxlbWVudC1pbnZpc2libGUoKWAgbWl4aW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZW5mb3JjZSAtIElmIGB0cnVlYCwgdXNlIGAhaW1wb3J0YW50YCBvbiBhcHBsaWVkIHByb3BlcnRpZXNcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYoXG4gICRlbmZvcmNlOiB0cnVlXG4pIHtcbiAgJGltcG9ydGFudDogaWYoJGVuZm9yY2UsICchaW1wb3J0YW50JywgbnVsbCk7XG5cbiAgcG9zaXRpb246IHN0YXRpYyAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICBoZWlnaHQ6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IHZpc2libGUgI3skaW1wb3J0YW50fTtcbiAgY2xpcDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIGl0ZXJhdGUgb3ZlciBicmVha3BvaW50cyB3aXRob3V0IGRvaW5nIHRoZSBtZWRpYSBxdWVyeSBpdHNlbGYuIFVzZWZ1bCBmb3IgbW9yZSBjb21wbGV4IG1lZGlhIHF1ZXJ5IGdlbmVyYXRpb24gYXMgaW4gdGhlIG1hcmdpbiBncmlkLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoXG4gICRzbWFsbDogdHJ1ZSxcbiAgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludC1pbihhdXRvLCAtemYtYm9vbCgkc21hbGwpLCAtemYtYm9vbCgkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMpKSB7XG4gICAgQGNvbnRlbnRcbiAgfTtcbn1cblxuLy8vIEl0ZXJhdGVzIHdpdGggYEBjb250ZW50YCB0aHJvdWdoIHRoZSBnaXZlbiBsaXN0IG9mIGJyZWFrcG9pbnRzIGAkYnJlYWtwb2ludHNgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJyZWFrcG9pbnRzIFthdXRvXSAtIEJyZWFrcG9pbnRzIHRvIGl0ZXJhdGVzIG9uLiBJdCBjYW4gYmUgYSBicmVha3BvaW50IG5hbWUsIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgYGF1dG9gIGZvciBhbGwgYnJlYWtwb2ludHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufE51bGx9ICR6ZXJvLWJyZWFrcG9pbnQgW251bGxdIC0gV2hldGhlciB0aGUgemVyby1icmVha3BvaW50IChvZnRlbiBgc21hbGxgKSBtdXN0IGJlIGluY2x1ZGVkLiBJZiBgdHJ1ZWAsIGl0IHdpbGwgYWx3YXlzIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGlmIG5vdCBhbHJlYWR5IHRoZXJlLiBJZiBgZmFsc2VgLCBpdCB3aWxsIGFsd2F5cyBiZSByZW1vdmVkLiBEb2VzIG5vdGhpbmcgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW58S2V5d29yZH0gJG1lZGlhLXF1ZXJpZXMgW3RydWVdIC0gV2hldGhlciBtZWRpYS1xdWVyaWVzIG11c3QgYmUgZ2VuZXJhdGVkLiBJZiBgZm9yLWxpc3RzYCwgb25seSBnZW5lcmF0ZSBtZWRpYS1xdWVyaWVzIHdoZW4gYCRicmVha3BvaW50c2AgaXMgYSBsaXN0LlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oXG4gICRicmVha3BvaW50czogYXV0byxcbiAgJHplcm8tYnJlYWtwb2ludDogbnVsbCxcbiAgJG1lZGlhLXF1ZXJpZXM6IHRydWVcbikge1xuICAkLWxpc3Q6ICgpO1xuICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogdHJ1ZTtcblxuICAvLyBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBicmVha3BvaW50KHMpIHRvIGl0ZXJhdGUgb24uXG4gIEBpZiAkYnJlYWtwb2ludHMgPT0gYXV0byB7XG4gICAgJC1saXN0OiAkYnJlYWtwb2ludC1jbGFzc2VzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnbGlzdCcge1xuICAgICQtbGlzdDogJGJyZWFrcG9pbnRzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnc3RyaW5nJyB7XG4gICAgJC1saXN0OiAoJGJyZWFrcG9pbnRzKTtcbiAgICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogZmFsc2U7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBcIiRicmVha3BvaW50c1wiIGluIFwiLXpmLWVhY2gtYnJlYWtwb2ludC1pbigpXCIuIEdvdCBcIiN7JGJyZWFrcG9pbnRzfVwiICgje3R5cGUtb2YoJGJyZWFrcG9pbnRzKX0pLiBFeHBlY3RlZCBhIGJyZWFrcG9pbnQgbmFtZSwgYSBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIFwiYXV0b1wiJztcbiAgfVxuXG4gIC8vIEFkZCBvciByZW1vdmUgdGhlIHplcm8gYnJlYWtwb2ludCBhY2NvcmRpbmcgdG8gYCR6ZXJvLWJyZWFrcG9pbnRgXG4gIEBpZiAkemVyby1icmVha3BvaW50ID09IHRydWUge1xuICAgICQtbGlzdDogam9pbigoJC16Zi16ZXJvLWJyZWFrcG9pbnQpLCBzbC1yZW1vdmUoJC1saXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCkpO1xuICB9XG4gIEBlbHNlIGlmICR6ZXJvLWJyZWFrcG9pbnQgPT0gZmFsc2Uge1xuICAgICQtbGlzdDogc2wtcmVtb3ZlKCQtbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICB9XG5cbiAgLy8gSXRlcmF0ZSBvbiBicmVha3BvaW50KHMpXG4gIEBlYWNoICRicCBpbiAkLWxpc3Qge1xuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gICAgfVxuICAgICQtemYtc2l6ZTogJGJwICFnbG9iYWw7XG5cbiAgICBAaWYgKCRtZWRpYS1xdWVyaWVzID09IHRydWUgb3IgKCRtZWRpYS1xdWVyaWVzID09ICdmb3ItbGlzdHMnIGFuZCAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdCkpIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJwKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSB0aGUgYEBjb250ZW50YCBwYXNzZWQgdG8gdGhlIG1peGluIHdpdGggYSB2YWx1ZSBgJC16Zi1icC12YWx1ZWAgcmVsYXRlZCB0byBhIGJyZWFrcG9pbnQsIGRlcGVuZGluZyBvbiB0aGUgYCRuYW1lYCBwYXJhbWV0ZXI6XG4vLy8gLSBGb3IgYSBzaW5nbGUgdmFsdWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGlzIHZhbHVlLlxuLy8vIC0gRm9yIGEgYnJlYWtwb2ludCBuYW1lLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAuXG4vLy8gLSBGb3IgXCJhdXRvXCIsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYCBhbmQgaXMgcGFzc2VkIHRvIGBAY29udGVudGAsIHdoaWNoIGlzIG1hZGUgcmVzcG9uc2l2ZSBmb3IgZWFjaCBicmVha3BvaW50IG9mIGAkbWFwYC5cbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkbmFtZSBbYXV0b10gLSBTaW5nbGUgdmFsdWUsIGJyZWFrcG9pbnQgbmFtZSwgb3IgbGlzdCBvZiBicmVha3BvaW50IG5hbWVzIHRvIHVzZS4gXCJhdXRvXCIgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBNYXAgb2YgYnJlYWtwb2ludHMgYW5kIHZhbHVlcyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLlxuQG1peGluIC16Zi1icmVha3BvaW50LXZhbHVlKFxuICAkbmFtZTogYXV0byxcbiAgJG1hcDogbnVsbFxuKSB7XG4gIEBpZiAkbmFtZSA9PSBhdXRvIGFuZCB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAvLyBcImF1dG9cIlxuICAgIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGspIHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJHYsICRtYXApIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gYnJlYWtwb2ludCBuYW1lXG4gICAgQGlmIHR5cGUtb2YoJG5hbWUpID09ICdzdHJpbmcnIHtcbiAgICAgICRicC12YWx1ZTogLXpmLWdldC1icC12YWwoJG1hcCwgJG5hbWUpO1xuICAgICAgQGlmICRicC12YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5hbWU6ICRicC12YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBicmVha3BvaW50IHZhbHVlXG4gICAgJC16Zi1icC12YWx1ZTogJG5hbWUgIWdsb2JhbDtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kLXpmLWZvbnQtc3RhY2s6IChcbiAgJ2dlb3JnaWEnOiAoR2VvcmdpYSwgJ1VSVyBCb29rbWFuIEwnLCBzZXJpZiksXG4gICdoZWx2ZXRpY2EnOiAoSGVsdmV0aWNhLCBBcmlhbCwgJ05pbWJ1cyBTYW5zIEwnLCBzYW5zLXNlcmlmKSxcbiAgJ2x1Y2lkYS1ncmFuZGUnOiAoJ0x1Y2lkYSBHcmFuZGUnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsICdCaXRzdHJlYW0gVmVyYSBTYW5zJywgc2Fucy1zZXJpZiksXG4gICdtb25vc3BhY2UnOiAoJ0NvdXJpZXIgTmV3JywgQ291cmllciwgJ05pbWJ1cyBTYW5zIEwnLCBtb25vc3BhY2UpLFxuICAnc3lzdGVtJzogKC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgJ094eWdlbicsICdVYnVudHUnLCAnQ2FudGFyZWxsJywgJ0ZpcmEgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuICAndmVyZGFuYSc6IChWZXJkYW5hLCBHZW5ldmEsICdEZWphVnUgU2FucycsIHNhbnMtc2VyaWYpLFxuKTtcblxuLy8vIFJldHVybiBhIGZvbnQgc3RhY2sgbGlzdCBmcm9tIGEgbWFwLiBFcXVpdmFsZW50IHRvIGBtYXAtc2FmZS1nZXQoJG5hbWUsICQtemYtZm9udC1zdGFjaylgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdGFjayAtIE5hbWUgb2YgdGhlIGZvbnQgc3RhY2suXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgWyQtemYtZm9udC1zdGFja10gLSBNYXAgb2YgZm9udCBzdGFja3MgdG8gcmV0cmlldmUgYSBsaXN0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgZm9udCBzdGFjay5cbkBmdW5jdGlvbiBmb250LXN0YWNrKCRzdGFjaywgJG1hcDogJC16Zi1mb250LXN0YWNrKSB7XG4gIEByZXR1cm4gbWFwLXNhZmUtZ2V0KCRtYXAsICRzdGFjayk7XG59XG4iLCIvKipcbiAqIENvbG9yIHNjaGVtZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qIERlc2lnbiBkb2N1bWVudCBjb2xvcnMgKi9cbiRjb2xvci1wdXJwbGU6ICM0MjY2ZmY7XG4kY29sb3ItcHVycGxlLWRhcms6ICM2NDUwQzg7XG4kY29sb3ItYmx1ZTogI2ZmODI1YztcbiRjb2xvci15ZWxsb3c6ICM4MmZmNGY7XG4kY29sb3Itb3JhbmdlOiAjZmY5OTAwO1xuJGNvbG9yLWdyZWVuOiAjNDZCMzk0O1xuJGNvbG9yLWdyYXk6ICNCN0MwQzU7XG4kY29sb3ItYmxhY2s6ICMwMDAwMDA7XG4kY29sb3Itd2hpdGU6ICNGRkZGRkY7XG4kY29sb3ItZ29sZGVuLXNhbmQ6ICNmZmQ4N2E7XG5cbi8qIEdyYXkgdGludHMgKi9cbiRjb2xvci1saWdodC1ncmF5OiAjRjFGMUYxO1xuJGNvbG9yLW1lZGl1bS1ncmF5OiAkY29sb3ItZ3JheTtcbiRjb2xvci1kYXJrLWdyYXk6ICM2NDY0NjQ7XG4kY29sb3ItZGFya2VzdC1ncmF5OiAjMjIyMjIyO1xuXG4vKiBCYXNlIGNvbG9ycyAqL1xuJGNvbG9yLXByaW1hcnk6ICRjb2xvci1ibGFjaztcbiRjb2xvci1zZWNvbmRhcnk6ICRjb2xvci13aGl0ZTtcbiRjb2xvci10ZXJ0aWFyeTogJGNvbG9yLWdyYXk7XG5cbi8qIEF0dGVudGlvbiBjb2xvcnMgKi9cbiRjb2xvci1zdWNjZXNzOiAjM0FEQjc2O1xuJGNvbG9yLXdhcm5pbmc6ICNGRkFFMDA7XG4kY29sb3ItYWxlcnQ6ICNDQzRCMzc7XG5cbi8vIENvbG9yIG1hcFxuJHZvLWNvbG9yczogKFxuICAgIHZvLXllbGxvdzogJGNvbG9yLXllbGxvdyxcbiAgICB2by1wdXJwbGU6ICRjb2xvci1wdXJwbGUsXG4gICAgdm8tYmx1ZTogJGNvbG9yLWJsdWUsXG4gICAgdm8tZ3JlZW46ICRjb2xvci1ncmVlbixcbiAgICB2by1ncmF5OiAkY29sb3ItZ3JheSxcbiAgICB2by1ibGFjazogJGNvbG9yLWJsYWNrLFxuICAgIHZvLXdoaXRlOiAkY29sb3Itd2hpdGUsXG4pO1xuIiwiLyoqXG4gKiBDdXN0b20gdmFyaWFibGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyogVHJhbnNpdGlvbnMgKi9cbiRkdXJhdGlvbjogMC41cztcbiRkdXJhdGlvbi1mYXN0OiAwLjI1cztcbiRlYXNpbmc6IGVhc2UtaW4tb3V0O1xuJHRyYW5zaXRpb246ICRkdXJhdGlvbiAkZWFzaW5nO1xuJHRyYW5zaXRpb24tZmFzdDogJGR1cmF0aW9uLWZhc3QgJGVhc2luZztcblxuLyogei1pbmRleCAqL1xuJHotaW5kZXgtbmVnYXRpdmU6IC0xO1xuJHotaW5kZXgtZGVmYXVsdDogMDtcbiR6LWluZGV4LW92ZXJsYXk6IDE7XG4kei1pbmRleC1zY3JlZW4tcmVhZGVyOiAxMDAwO1xuXG4vKiBGb250QXdlc29tZSAqL1xuJGZhLWZvbnQtcGF0aDogJ2Fzc2V0cy9mb250cyc7XG4kZmEtZm9udC1kaXNwbGF5OiBzd2FwO1xuXG4vKiBTcGFjaW5nICovXG4kc3BhY2luZzogJGdyaWQtcGFkZGluZy1ndXR0ZXJzIC8gMjtcbiRzcGFjaW5nLXhzOiAkc3BhY2luZyAqIDAuMjU7XG4kc3BhY2luZy1zOiAkc3BhY2luZyAqIDAuNTtcbiRzcGFjaW5nLXNtOiAkc3BhY2luZyAqIDAuNzU7XG4kc3BhY2luZy1tOiAkc3BhY2luZyAqIDEuNTtcbiRzcGFjaW5nLWw6ICRzcGFjaW5nICogMjtcbiRzcGFjaW5nLXhsOiAkc3BhY2luZyAqIDM7XG4kc3BhY2luZy14eGw6ICRzcGFjaW5nICogNDtcbiRzcGFjaW5nLXh4eGw6ICRzcGFjaW5nICogNTtcbiRzcGFjaW5nLXh4eHhsOiAkc3BhY2luZyAqIDY7XG5cbi8qIEhlYWRlciBoZWlnaHQgKi9cbiRoZWFkZXItaGVpZ2h0LXNtYWxsOiA3MHB4O1xuJGhlYWRlci1oZWlnaHQtbWVkaXVtOiA3NXB4O1xuJGhlYWRlci1oZWlnaHQtbGFyZ2U6IDE1MHB4O1xuJGhlYWRlci1oZWlnaHQtbGFyZ2V4OiAxNTBweDtcbiIsIi8qKlxuICogQ3VzdG9tIG1peGluc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogVXNlZCB0byBjb21waWxlIENTUyB0byBkaXNwbGF5IHJldGluYSBpbWFnZXMuXG4gKlxuICogRXhhbXBsZTpcbiAqIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKGxvZ28sIHBuZywgMjEwcHgsIDcwcHgpO1xuICpcbiAqL1xuQG1peGluIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKCRmaWxlLCAkdHlwZSwgJHdpZHRoLCAkaGVpZ2h0KSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiYXNzZXRzL2ltYWdlcy9cIiArICRmaWxlICsgXCIuXCIgKyAkdHlwZSk7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kICgtbW96LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIgLyAxKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpIHtcbiAgICAgICAgJiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJhc3NldHMvaW1hZ2VzL1wiICsgJGZpbGUgKyBcIkAyeC5cIiArICR0eXBlKTtcbiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1vLWJhY2tncm91bmQtc2l6ZTogJHdpZHRoICRoZWlnaHQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6ICR3aWR0aCAkaGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEN1c3RvbSBwbGFjZWhvbGRlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4ldW5zdHlsZWQtbGlzdCB7XG4gICAgbWFyZ2luOiB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIHBhZGRpbmc6IHtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHN0eWxpbmcgdG8gcm9vdCAob3B0aW9uYWwpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQG1peGluIG9wdGlvbmFsLWF0LXJvb3QoJHNlbCkge1xuICAgIEBhdC1yb290ICN7aWYobm90ICYsICRzZWwsIHNlbGVjdG9yLWFwcGVuZCgmLCAkc2VsKSl9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEZvcm0gcGxhY2Vob2xkZXIgc3R5bGluZ1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvcHRpb25hbC1hdC1yb290KCc6LW1vei1wbGFjZWhvbGRlcicpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOjotbW96LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvcHRpb25hbC1hdC1yb290KCc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogRG90cyBiZyBtaXhpblxuICogJGRvdC1jb2xvciwgJGJnLWNvbG9yLCAkdHJhbnNpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5AbWl4aW4gZG90cy1iZygkZG90LWNvbG9yOiAkY29sb3IteWVsbG93LCAkYmctY29sb3I6ICRjb2xvci1ncmF5LCAkdHJhbnNpdGlvbjogZmFsc2UpIHtcbiAgICAkZG90LXNpemU6IDdweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmctY29sb3I7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwLCAxOHB4IDE4cHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiAzNnB4IDM2cHg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KCRkb3QtY29sb3IgJGRvdC1zaXplLCB0cmFuc3BhcmVudCAkZG90LXNpemUpLFxuICAgIHJhZGlhbC1ncmFkaWVudCgkZG90LWNvbG9yICRkb3Qtc2l6ZSwgdHJhbnNwYXJlbnQgJGRvdC1zaXplKTtcblxuICAgIEBpZiAoJHRyYW5zaXRpb24gPT0gdHJ1ZSkge1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLXBvc2l0aW9uIDFzIGVhc2UtaW4tb3V0O1xuXG4gICAgICAgIC8vIEVkaXRvciBvbmx5XG4gICAgICAgIEBpZiAoJGVkaXRvciA9PSB0cnVlKSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNHB4IC0ycHgsIDE0cHggMTZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBDaXJjbGUgYmcgbWl4aW5cbiAqICRjaXJjbGUtY29sb3IsICRiZy1jb2xvciwgJHRyYW5zaXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuQG1peGluIGNpcmNsZS1iZygkY2lyY2xlLWNvbG9yOiAkY29sb3IteWVsbG93LCAkYmctY29sb3I6ICRjb2xvci1ncmF5LCAkdHJhbnNpdGlvbjogZmFsc2UpIHtcbiAgICAkZG90LXNpemU6IDM0cHg7XG4gICAgJGlubmVyLWRvdC1zaXplOiAyOXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiZy1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDAsIDYwcHggNjBweCwgMCAwLCA2MHB4IDYwcHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMjBweCAxMjBweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoJGJnLWNvbG9yICRpbm5lci1kb3Qtc2l6ZSwgdHJhbnNwYXJlbnQgJGlubmVyLWRvdC1zaXplKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoJGJnLWNvbG9yICRpbm5lci1kb3Qtc2l6ZSwgdHJhbnNwYXJlbnQgJGlubmVyLWRvdC1zaXplKSxcbiAgICByYWRpYWwtZ3JhZGllbnQoJGNpcmNsZS1jb2xvciAkZG90LXNpemUsIHRyYW5zcGFyZW50ICRkb3Qtc2l6ZSksXG4gICAgcmFkaWFsLWdyYWRpZW50KCRjaXJjbGUtY29sb3IgJGRvdC1zaXplLCB0cmFuc3BhcmVudCAkZG90LXNpemUpO1xuXG4gICAgQGlmICgkdHJhbnNpdGlvbiA9PSB0cnVlKSB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIC8vIEVkaXRvciBvbmx5XG4gICAgICAgIEBpZiAoJGVkaXRvciA9PSB0cnVlKSB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNnB4IC00cHgsIDU0cHggNTZweCwgLTZweCAtNHB4LCA1NHB4IDU2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBzb2xpZC1iZygkZG90LWNvbG9yOiAkY29sb3IteWVsbG93LCAkYmctY29sb3I6ICRjb2xvci1ncmF5LCAkdHJhbnNpdGlvbjogZmFsc2UpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZG90LWNvbG9yO1xufVxuXG4vKipcbiAqIHZvLXRoZW1lXG4gKi9cbkBtaXhpbiB2by10aGVtZSgkcHJvcGVydHk6ICdjb2xvcicsICRzZWxlY3RvcnM6IG51bGwpIHtcbiAgICBAZWFjaCAkbmFtZSwgJGhleCBpbiAkdm8tY29sb3JzIHtcbiAgICAgICAgJi0tI3skbmFtZX0ge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkaGV4O1xuICAgICAgICAgICAgQGlmICgkc2VsZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgI3skc2VsZWN0b3JzfSB7XG4gICAgICAgICAgICAgICAgICAgICN7JHByb3BlcnR5fTogJGhleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogdm8taGFzLWNvbG9yXG4gKi9cbkBtaXhpbiB2by1oYXMtY29sb3IoJHNlbGVjdG9yczogJyYnKSB7XG4gICAgQGVhY2ggJG5hbWUsICRoZXggaW4gJHZvLWNvbG9ycyB7XG4gICAgICAgICN7JHNlbGVjdG9yc30uaGFzLSN7JG5hbWV9LWNvbG9yIHtcbiAgICAgICAgICAgIGNvbG9yOiAkaGV4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIHZvLWhhcy1iYWNrZ3JvdW5kLWNvbG9yXG4gKi9cbkBtaXhpbiB2by1oYXMtYmFja2dyb3VuZC1jb2xvcigkc2VsZWN0b3JzOiAnJicsICRob3ZlcjogZmFsc2UpIHtcbiAgICBAZWFjaCAkbmFtZSwgJGhleCBpbiAkdm8tY29sb3JzIHtcbiAgICAgICAgI3skc2VsZWN0b3JzfS5oYXMtI3skbmFtZX0tYmFja2dyb3VuZC1jb2xvciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGV4O1xuXG4gICAgICAgICAgICBAaWYgKCRob3Zlcikge1xuICAgICAgICAgICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGhleCwgMTAlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogSGVhZGluZ3NcbiAqL1xuQG1peGluIHZvLWhlYWRpbmdzIHtcbiAgICBAZm9yICRpbmRleCBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAgICAgaCN7JGluZGV4fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xuXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gIGhlaWdodDogMDsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cblxuZGV0YWlscyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG5cbi8qIE1pc2NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICovXG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cbiAqL1xuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKipcbiAqIFJlc2V0LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogQSB2ZXJ5IHNpbXBsZSByZXNldCB0aGF0IHNpdHMgb24gdG9wIG9mIE5vcm1hbGl6ZS5jc3MuXG4gKi9cblxuYm9keSxcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbmJsb2NrcXVvdGUsXG5wLFxucHJlLFxuZGwsXG5kZCxcbm9sLFxudWwsXG5maWd1cmUsXG5ocixcbmZpZWxkc2V0LFxubGVnZW5kIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdHJhaWxpbmcgbWFyZ2lucyBmcm9tIG5lc3RlZCBsaXN0cy5cbiAqL1xuXG5saSA+IHtcbiAgICBvbCxcbiAgICB1bCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHRhYmxlIHNwYWNpbmcuXG4gKi9cblxudGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbi8qKlxuICogMS4gUmVzZXQgQ2hyb21lIGFuZCBGaXJlZm94IGJlaGF2aW91ciB3aGljaCBzZXRzIGEgYG1pbi13aWR0aDogbWluLWNvbnRlbnQ7YFxuICogICAgb24gZmllbGRzZXRzLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgICBtaW4td2lkdGg6IDA7IC8qIFsxXSAqL1xuICAgIGJvcmRlcjogMDtcbn1cblxuLyoqXG4gKiBNb3JlIHNlbnNpYmxlIGRlZmF1bHQgYm94LXNpemluZy5cbiAqIEBzZWUgY3NzLXRyaWNrcy5jb20vaW5oZXJpdGluZy1ib3gtc2l6aW5nLXByb2JhYmx5LXNsaWdodGx5LWJldHRlci1iZXN0LXByYWN0aWNlXG4gKi9cblxuaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuKiB7XG4gICAgJixcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzZXQgYnV0dG9uIHN0eWxlc1xuICovXG5cbmJ1dHRvbixcblt0eXBlPSdidXR0b24nXSxcblt0eXBlPSdyZXNldCddLFxuW3R5cGU9J3N1Ym1pdCddIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250OiBpbmhlcml0O1xufVxuIiwiLyoqXG4gKiBQcmludC5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIFZlcnkgY3J1ZGUsIHJlc2V0LWxpa2Ugc3R5bGVzIHRha2VuIGZyb20gdGhlIEhUTUw1IEJvaWxlcnBsYXRlOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi81LjMuMC9kaXN0L2RvYy9jc3MubWQjcHJpbnQtc3R5bGVzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9kaXN0L2Nzcy9tYWluLmNzcyNMMjA1LUwyODJcbiAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAgIC8qKlxuICAgICAqIDEuIEJsYWNrIHByaW50cyBmYXN0ZXI6IGh0dHA6Ly93d3cuc2FuYmVpamkuY29tL2FyY2hpdmVzLzk1M1xuICAgICAqKi9cblxuICAgICosXG4gICAgKjpiZWZvcmUsXG4gICAgKjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7IC8qIFsxXSAqL1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgYSxcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG5cbiAgICBhW2hyZWZdOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJztcbiAgICB9XG5cbiAgICBhYmJyW3RpdGxlXTphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBEb27igJl0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsIG9yIHVzZSB0aGUgYGphdmFzY3JpcHQ6YFxuICAgKiBwc2V1ZG8gcHJvdG9jb2wuXG4gICAqL1xuXG4gICAgYVtocmVmXj0nIyddOmFmdGVyLFxuICAgIGFbaHJlZl49J2phdmFzY3JpcHQ6J106YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICB9XG5cbiAgICBwcmUsXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG4gICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICogUHJpbnRpbmcgVGFibGVzOiBodHRwOi8vY3NzLWRpc2N1c3MuaW5jdXRpby5jb20vd2lraS9QcmludGluZ19UYWJsZXNcbiAgICovXG5cbiAgICB0aGVhZCB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgICB9XG5cbiAgICB0cixcbiAgICBpbWcge1xuICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICAgIG9ycGhhbnM6IDM7XG4gICAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICBoMixcbiAgICBoMyB7XG4gICAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU2NyZWVuIFJlYWRlciBUZXh0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnNjcmVlbi1yZWFkZXItdGV4dCB7XG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG59XG4iLCIvKipcbiAqIEFuaW1hdGlvbnMuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQGtleWZyYW1lcyBmYWRlLWluIHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xuICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTVweCk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIH1cbn1cblxuW2RhdGEtYW5pbWF0aW9uXSB7XG4gICAgb3BhY2l0eTogMDtcblxuICAgICZbZGF0YS1hbmltYXRpb24tYXBwZWFyaW5nXSB7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLWluO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJGVhc2luZztcbiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG5cbiAgICAgICAgJltkYXRhLWFuaW1hdGlvbj0nc2xpZGUtZG93biddIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS1kb3duO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLWFuaW1hdGlvbj0nc2xpZGUtdXAnXSB7XG4gICAgICAgICAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtdXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJRTEwKyBmaXhlc1xuICAgIEBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VyIGZpeGVzXG4gICAgQHN1cHBvcnRzIG5vdCAoZGlzcGxheTogZ3JpZCkge1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA0MCB7XG4gICAgICAgIFtkYXRhLWFuaW1hdGlvbl1bZGF0YS1hbmltYXRpb24tZGVsYXk9JyN7JGkgKiAxMDB9J11bZGF0YS1hbmltYXRpb24tZGVsYXk9JyN7JGkgKiAxMDB9J10ge1xuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAjeyRpIC8gMTB9cztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICBbZGF0YS1hbmltYXRpb25dIHtcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAwMXMgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjAwMXMgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEN1c3RvbSBmb250c1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbiIsIi8qKlxuICogV29yZFByZXNzLXNwZWNpZmljIHN0eWxlcy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uYWxpZ25ub25lIHtcbiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDtcbn1cblxuLmFsaWduY2VudGVyLFxuZGl2LmFsaWduY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDVweCBhdXRvIDVweCBhdXRvO1xufVxuXG4uYWxpZ25yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogNXB4IDAgMjBweCAyMHB4O1xufVxuXG4uYWxpZ25sZWZ0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDtcbn1cblxuYSBpbWcuYWxpZ25yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogNXB4IDAgMjBweCAyMHB4O1xufVxuXG5hIGltZy5hbGlnbm5vbmUge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG5hIGltZy5hbGlnbmxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG5hIGltZy5hbGlnbmNlbnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ud3AtY2FwdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZjBmMGYwO1xuICAgIG1heC13aWR0aDogOTYlO1xuICAgIC8qIEltYWdlIGRvZXMgbm90IG92ZXJmbG93IHRoZSBjb250ZW50IGFyZWEgKi9cbiAgICBwYWRkaW5nOiA1cHggM3B4IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbm5vbmUge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbmxlZnQge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbnJpZ2h0IHtcbiAgICBtYXJnaW46IDVweCAwIDIwcHggMjBweDtcbn1cblxuLndwLWNhcHRpb24gaW1nIHtcbiAgICBib3JkZXI6IDAgbm9uZTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luOiAwO1xuICAgIG1heC13aWR0aDogOTguNSU7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLndwLWNhcHRpb24gcC53cC1jYXB0aW9uLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBsaW5lLWhlaWdodDogMTdweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMCA0cHggNXB4O1xufVxuXG4uZ2FsbGVyeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGMoMS41ICogMXJlbSk7XG59XG5cbi5nYWxsZXJ5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy0yIC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiAxKSAvIDIpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSgybiArIDIpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtMyAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogMikgLyAzKTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy0zIC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoM24gKyAzKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTQgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDMpIC8gNCk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDRuICsgNCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy01IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA0KSAvIDUpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg1biArIDUpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogNSkgLyA2KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy02IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoNm4gKyA2KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTcgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDYpIC8gNyk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNyAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDduICsgNykge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy04IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA3KSAvIDgpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg4biArIDgpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtOSAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogOCkgLyA5KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy05IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoOW4gKyA5KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1pdGVtOmxhc3Qtb2YtdHlwZSB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY2FwdGlvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMC41cmVtO1xufVxuXG4uZ2FsbGVyeS1pdGVtID4gZGl2ID4gYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgI3dwYWRtaW5iYXIge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBHbG9iYWwgc3R5bGVzIGFuZCBlbGVtZW50cyB1c2VkIHRocm91Z2hvdXQgdGhlIHNpdGUuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuOjotbW96LXNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5O1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG59XG5cbmh0bWwge1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG5ib2R5IHtcbiAgICAmLm5hdi1pcy1vcGVuIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmEge1xuICAgIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbnAge1xuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG5mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4udmlkZW8tY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzoge1xuICAgICAgICB0b3A6IDI1cHg7XG4gICAgICAgIGJvdHRvbTogNTYuMjUlO1xuICAgIH1cbiAgICBoZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uO1xuXG4gICAgaWZyYW1lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICYuaW1hZ2Uge1xuICAgICAgICAmLS1jaXJjdWxhaXIge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5waWN0dXJlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5saW5rLS1mdWxsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDk5O1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAuc21hbGwtbWFyZ2luIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG87XG4gICAgfVxufVxuXG4udGV4dC1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5lZGl0LWxpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgLmNlbGxfX2NvbnRlbnQge1xuICAgICAgICAmLS1sZWZ0IHtcbiAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tcmlnaHQge1xuICAgICAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mdWxsLXdpZHRoLWJsb2NrIHtcbiAgICAvLyAgbWluLXdpZHRoOiA5OS4yMjV2dztcbiAgICBtaW4td2lkdGg6IDk5LjEyNXZ3O1xuICAgIG1hcmdpbi1sZWZ0OiAtNDkuNTl2dztcbiAgICBsZWZ0OiA1MCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgIGJvZHkubm8tc2Nyb2xsLWJhciAmIHtcbiAgICAgICAgbWluLXdpZHRoOiAxMDB2dztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01MHZ3O1xuICAgIH1cblxuICAgIC8vIEVkaXRvciBvbmx5XG4gICAgQGlmICgkZWRpdG9yID09IHRydWUpIHtcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG59XG5cbi53cmFwX193b3JkcyB7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4uZ3JpZC1kaXN0YW5jZSB7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uc21hbGwtbWFyZ2luIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uaGlkZGVuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTEwMDAwcHg7XG4gICAgdG9wOiBhdXRvO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8qKlxuICogVHlwb2dyYXBoeVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBsaW5lLWhlaWdodDogMS40NTtcblxuICAgIEBpZiAoJGVkaXRvciA9PSB0cnVlKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbi5oMSxcbi5oMixcbi5oMyxcbi5oNCxcbi5oNSxcbi5oNiB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkaW5nLWZvbnQtZmFtaWx5O1xuICAgIG1hcmdpbjogMi43NXJlbSAwIDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMS4wNTtcbn1cblxuLypcbiAqIFNpemVzIGJhc2VkIG9uIHR5cGUtc2NhbGU6IE1ham9yIFRoaXJkXG4gKiBXaXRoIHNvbWUgc21hbGwgY2hhbmdlc1xuICogaHR0cHM6Ly90eXBlLXNjYWxlLmNvbS9cbiAqL1xuaDEsXG4uaDEge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzYpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0OCk7XG4gICAgfVxufVxuXG5oMixcbi5oMiB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDM5KTtcbiAgICB9XG59XG5cbmgzLFxuLmgzIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzApO1xuICAgIH1cbn1cblxuaDQsXG4uaDQge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgfVxufVxuXG5oNSxcbi5oNSB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG59XG5cbmg2LFxuLmg2IHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgIH1cbn1cblxucCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIG1heC13aWR0aDogcmVtLWNhbGMoNzkwKTtcblxuICAgIC5lbnRyeV9fY29udGVudCAmLFxuICAgIC53cC1ibG9jayAmIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMXJlbTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLndwLWJsb2NrLWltYWdlIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6IHJlbS1jYWxjKDc5MCk7XG59XG5cbnVsLFxub2wge1xuICAgIG1hcmdpbjogMCAwIDFyZW0gMXJlbTtcblxuICAgIC5lbnRyeV9fY29udGVudCAmLFxuICAgIC53cC1ibG9jayAmIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMXJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYyg3OTApO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmJsb2NrcXVvdGUge1xuICAgIHAge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4oCcJztcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJ+KAnSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaXRlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgfVxufVxuXG5zbWFsbCxcbi50ZXh0X3NtYWxsIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyLjgpO1xufVxuXG4ubG93ZXJjYXNlIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xufVxuIiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlc1xuICogVmVyc2lvbiA2LjcuNVxuICogaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gLS0tIERlcGVuZGVuY2llcyAtLS1cbkBpbXBvcnQgJ3ZlbmRvci9ub3JtYWxpemUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL21pc3NpbmctZGVwZW5kZW5jaWVzJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy90cnVlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL2NvbnRhaW4nO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcHVyZ2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVtb3ZlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlcGxhY2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvdG8tbGlzdCc7XG5cbi8vIC0tLSBTZXR0aW5ncyAtLS1cbi8vIGltcG9ydCB5b3VyIG93biBgc2V0dGluZ3NgIGhlcmUgb3Jcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcblxuLy8gLS0tIENvbXBvbmVudHMgLS0tXG4vLyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG4vLyBHbG9iYWwgc3R5bGVzXG5AaW1wb3J0ICdnbG9iYWwnO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAndHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcblxuLy8gR3JpZHNcbkBpbXBvcnQgJ2dyaWQvZ3JpZCc7XG5AaW1wb3J0ICd4eS1ncmlkL3h5LWdyaWQnO1xuLy8gR2VuZXJpYyBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2xhYmVsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUnO1xuLy8gQmFzaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FsbG91dCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhcmQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcblxuLy8gQ29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9vcmJpdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGh1bWJuYWlsJztcbi8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcmlsbGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bi1tZW51JztcblxuLy8gTGF5b3V0IGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuXG4vLyBIZWxwZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL2Zsb2F0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xuQGltcG9ydCAncHJvdG90eXBlL3Byb3RvdHlwZSc7XG5cblxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZyhcbiAgJGZsZXg6IHRydWUsXG4gICRwcm90b3R5cGU6IGZhbHNlLFxuICAkeHktZ3JpZDogJHh5LWdyaWRcbikge1xuICBAaWYgJGZsZXgge1xuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmICR4eS1ncmlkIHtcbiAgICAkeHktZ3JpZDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLy8gR2xvYmFsIHN0eWxlc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcblxuICAvLyBHcmlkc1xuICBAaWYgbm90ICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkeHktZ3JpZCB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJpYyBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XG4gIC8vIEJhc2ljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xuXG4gIC8vIENvbnRhaW5lcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG4gIC8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG5cbiAgLy8gTGF5b3V0IGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XG5cbiAgLy8gSGVscGVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7XG4gIEBpZiAkZmxleCB7IEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzOyB9XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xuICBAaWYgJHByb3RvdHlwZSB7IEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXM7IH1cbn1cbiIsIi8vIHNhc3MtbGludDpkaXNhYmxlIG5vLXZlbmRvci1wcmVmaXhlc1xuXG5AbWl4aW4gZm91bmRhdGlvbi1ub3JtYWxpemUoKSB7XG4gIC8qISBub3JtYWxpemUuY3NzIHY4LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuICAvLyBEb2N1bWVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG5cbiAgaHRtbCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8vIDFcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDJcbiAgfVxuXG4gIC8vIFNlY3Rpb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAgLy8gYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cblxuICBoMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgbWFyZ2luOiAwLjY3ZW0gMDtcbiAgfVxuXG4gIC8vIEdyb3VwaW5nIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICAvLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cblxuICBociB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDFcbiAgICBoZWlnaHQ6IDA7IC8vIDFcbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLy8gMlxuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIHByZSB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyAxXG4gICAgZm9udC1zaXplOiAxZW07IC8vIDJcbiAgfVxuXG4gIC8vIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuXG4gIGEge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLy8gMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAgLy8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cblxuICBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMDsgLy8gMVxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cblxuICBiLFxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgY29kZSxcbiAga2JkLFxuICBzYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8vIDFcbiAgICBmb250LXNpemU6IDFlbTsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gIC8vIGFsbCBicm93c2Vycy5cblxuICBzdWIsXG4gIHN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIHN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xuICB9XG5cbiAgc3VwIHtcbiAgICB0b3A6IC0wLjVlbTtcbiAgfVxuXG4gIC8vIEVtYmVkZGVkIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuXG4gIGltZyB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICB9XG5cbiAgLy8gRm9ybXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMTAwJTsgLy8gMVxuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgbWFyZ2luOiAwOyAvLyAyXG4gIH1cblxuICAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgLy8gMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cblxuICBidXR0b24sXG4gIGlucHV0IHsgLy8gMVxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gIC8vIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cblxuICBidXR0b24sXG4gIHNlbGVjdCB7IC8vIDFcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cbiAgYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICAvLyAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gIC8vICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gICAgZGlzcGxheTogdGFibGU7IC8vIDFcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIDFcbiAgICBwYWRkaW5nOiAwOyAvLyAzXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLy8gMVxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cblxuICBwcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG5cbiAgdGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gIC8vIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cblxuICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gMlxuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuXG4gIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gMVxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAyXG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG5cbiAgW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cblxuICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMVxuICAgIGZvbnQ6IGluaGVyaXQ7IC8vIDJcbiAgfVxuXG4gIC8vIEludGVyYWN0aXZlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cblxuICBkZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cblxuICBzdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gIH1cblxuICAvLyBNaXNjXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuXG4gIHRlbXBsYXRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG5cbiAgW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBEaXNhYmxlIG91dGxpbmUgd2hlbiBpbnRlbnQgaXMgY2xlYXJseSBtb3VzZSBhbmQgdG91Y2hcbiAgW2RhdGEtd2hhdGludGVudD1cIm1vdXNlXCJdLFxuICBbZGF0YS13aGF0aW50ZW50PVwidG91Y2hcIl0sXG4gIFtkYXRhLXdoYXRpbnB1dD1cIm1vdXNlXCJdLFxuICBbZGF0YS13aGF0aW5wdXQ9XCJ0b3VjaFwiXSB7XG4gICAgKiwgKjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIERpc2FibGUgaU9TIGNhbGxvdXRzIHdoZW4gZHJhZ2dhYmxlIGlzIGZhbHNlXG4gIFtkcmFnZ2FibGU9ZmFsc2VdIHtcbiAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxufVxuIiwiLy8vXG4vLy8gQ2hlY2tzIHdoZXRoZXIgYCRmdW5jdGlvbnNgIGV4aXN0IGluIGdsb2JhbCBzY29wZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdMaXN0fSAkZnVuY3Rpb25zIC0gbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfSBXaGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgbWlzc2luZyBkZXBlbmRlbmNpZXNcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCRmdW5jdGlvbnMuLi4pIHtcbiAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiAoKTtcbiAgXG4gIEBlYWNoICRmdW5jdGlvbiBpbiAkZnVuY3Rpb25zIHtcbiAgICBAaWYgbm90IGZ1bmN0aW9uLWV4aXN0cygkZnVuY3Rpb24pIHtcbiAgICAgICRtaXNzaW5nLWRlcGVuZGVuY2llczogYXBwZW5kKCRtaXNzaW5nLWRlcGVuZGVuY2llcywgJGZ1bmN0aW9uLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIFxuICBAaWYgbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwIHtcbiAgICBAZXJyb3IgJ1VubWV0IGRlcGVuZGVuY2llcyEgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkOiAjeyRtaXNzaW5nLWRlcGVuZGVuY2llc30uJztcbiAgfVxuXG4gIEByZXR1cm4gbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwO1xufVxuIiwiLy8vXG4vLy8gUmV0dXJucyB0cnV0aGluZXNzIG9mIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNoZWNrXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtaXMtdHJ1ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUgPT0gbnVsbCwgZmFsc2UsICR2YWx1ZSBhbmQgJHZhbHVlICE9IG51bGwgYW5kICR2YWx1ZSAhPSAnJyBhbmQgJHZhbHVlICE9ICgpKTtcbn1cbiIsIi8vL1xuLy8vIFJldHVybnMgd2hldGhlciBgJGxpc3RgIGNvbnRhaW5zIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLWNvbnRhaW5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgIC0gbGlzdCB0byBjaGVja1xuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gdmFsdWUgdG8gbG9vayBmb3Jcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtY29udGFpbihhIGIgYywgYSlcbi8vLyAvLyB0cnVlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIHopXG4vLy8gLy8gZmFsc2Vcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLWNvbnRhaW4oJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIG5vdCBub3QgaW5kZXgoJGxpc3QsICR2YWx1ZSk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1jb250YWluXG4vLy8gQGFsaWFzIHNsLWNvbnRhaW5cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWluY2x1ZGUoJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLWNvbnRhaW4oJGxpc3QsICR2YWx1ZSk7XG59XG4iLCIvLy8gUmVtb3ZlcyBhbGwgZmFsc2UgYW5kIG51bGwgdmFsdWVzIGZyb20gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1wdXJnZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLWlzLXRydWVcbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIGxpc3QgdG8gcHVyZ2Vcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcHVyZ2UobnVsbCBhIGZhbHNlIGIpXG4vLy8gLy8gYSBiXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1wdXJnZSgkbGlzdCkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtdG8tbGlzdCcpO1xuICBcbiAgJHJlc3VsdDogKCk7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBzbC1pcy10cnVlKCRpdGVtKSB7XG4gICAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGl0ZW0sIGxpc3Qtc2VwYXJhdG9yKCRsaXN0KSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBzbC10by1saXN0KCRyZXN1bHQpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcHVyZ2Vcbi8vLyBAYWxpYXMgc2wtcHVyZ2Vcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWNsZWFuKCRsaXN0KSB7XG4gIEByZXR1cm4gc2wtcHVyZ2UoJGxpc3QpO1xufVxuIiwiLy8vXG4vLy8gUmVtb3ZlcyB2YWx1ZShzKSBgJHZhbHVlYCBmcm9tIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVtb3ZlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcmVwbGFjZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgICAgIC0gbGlzdCB0byB1cGRhdGVcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAgICAgLSB2YWx1ZSB0byByZW1vdmVcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVtb3ZlKGEgYiBjLCBhKVxuLy8vIC8vIGIgY1xuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtcmVtb3ZlKCRsaXN0LCAkdmFsdWUpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1yZXBsYWNlJyk7XG5cbiAgQHJldHVybiBzbC1yZXBsYWNlKCRsaXN0LCAkdmFsdWUsIG51bGwpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtcmVtb3ZlXG4vLy8gQGFsaWFzIHNsLXJlbW92ZVxuLy8vXG5cbkBmdW5jdGlvbiBzbC13aXRob3V0KCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSk7XG59XG4iLCIvLy9cbi8vLyBSZXBsYWNlcyBgJG9sZGAgYnkgYCRuZXdgIGluIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcmVwbGFjZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLWlzLXRydWVcbi8vLyBAcmVxdWlyZXMgc2wtcHVyZ2Vcbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgLSBsaXN0IHRvIHVwZGF0ZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJG9sZCAgIC0gdmFsdWUgdG8gcmVwbGFjZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlIC0gbmV3IHZhbHVlIGZvciAkb2xkXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlcGxhY2UoYSBiIGMsIGIsIHopXG4vLy8gLy8gYSB6IGNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgeSwgeilcbi8vLyAvLyBhIGIgY1xuLy8vIFxuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1yZXBsYWNlKCRsaXN0LCAkb2xkLCAkdmFsdWUpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1pcy10cnVlJywgJ3NsLXB1cmdlJywgJ3NsLXRvLWxpc3QnKTtcblxuICAkcnVubmluZzogdHJ1ZTtcblxuICBAd2hpbGUgJHJ1bm5pbmcge1xuICAgICRpbmRleDogaW5kZXgoJGxpc3QsICRvbGQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXgge1xuICAgICAgJHJ1bm5pbmc6IGZhbHNlO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICRsaXN0OiBzZXQtbnRoKCRsaXN0LCAkaW5kZXgsICR2YWx1ZSk7XG4gICAgfVxuXG4gIH1cblxuICAkbGlzdDogaWYoc2wtaXMtdHJ1ZSgkdmFsdWUpLCAkbGlzdCwgc2wtcHVyZ2UoJGxpc3QpKTtcbiAgXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkbGlzdCk7XG59XG4iLCIvLy9cbi8vLyBDYXN0cyBgJHZhbHVlYCBpbnRvIGEgbGlzdC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNhc3QgdG8gbGlzdFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VwYXJhdG9yIFtzcGFjZV0gLSBzZXBhcmF0b3IgdG8gdXNlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXRvLWxpc3QoYSBiIGMsIGNvbW1hKVxuLy8vIC8vIGEsIGIsIGNcbi8vLyBcbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC10by1saXN0KCR2YWx1ZSwgJHNlcGFyYXRvcjogbGlzdC1zZXBhcmF0b3IoJHZhbHVlKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICR2YWx1ZSwgJHNlcGFyYXRvcik7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy8gQGFsaWFzIHNsLXRvLWxpc3Rcbi8vL1xuXG5AZnVuY3Rpb24gc2wtbGlzdGlmeSgkdmFsdWUpIHtcbiAgQHJldHVybiBzbC10by1saXN0KCR2YWx1ZSk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vIHNhc3MtbGludDpkaXNhYmxlIG5vLWNvbG9yLWxpdGVyYWxzLCBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4vLy8vXG5cbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG5cbi8vLyBGb250IHNpemUgYXR0cmlidXRlIGFwcGxpZWQgdG8gYDxodG1sPmAgYW5kIGA8Ym9keT5gLiBXZSB1c2UgMTAwJSBieSBkZWZhdWx0IHNvIHRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgdXNlcidzIGJyb3dzZXIgc2V0dGluZ3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB3aWR0aCBvZiB5b3VyIHNpdGUuIFVzZWQgYnkgdGhlIGdyaWQgdG8gZGV0ZXJtaW5lIHJvdyB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDEyMDApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3IgYWxsIHR5cGUuIGAkZ2xvYmFsLWxpbmVoZWlnaHRgIGlzIDI0cHggd2hpbGUgYCRnbG9iYWwtZm9udC1zaXplYCBpcyAxNnB4XG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuNSAhZGVmYXVsdDtcblxuLy8vIENvbG9ycyB1c2VkIGZvciBidXR0b25zLCBjYWxsb3V0cywgbGlua3MsIGV0Yy4gVGhlcmUgbXVzdCBhbHdheXMgYmUgYSBjb2xvciBjYWxsZWQgYHByaW1hcnlgLlxuLy8vIEB0eXBlIE1hcFxuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxuICBcInByaW1hcnlcIjogIzE3NzliYSxcbiAgXCJzZWNvbmRhcnlcIjogIzc2NzY3NixcbiAgXCJzdWNjZXNzXCI6ICMzYWRiNzYsXG4gIFwid2FybmluZ1wiOiAjZmZhZTAwLFxuICBcImFsZXJ0XCI6ICNjYzRiMzcsXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgbGlnaHQgZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGxpZ2h0LWdyYXk6ICNlNmU2ZTYgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJG1lZGl1bS1ncmF5OiAjY2FjYWNhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgZGFyayBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3IgYmxhY2sgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibGFjazogIzBhMGEwYSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kd2hpdGU6ICNmZWZlZmUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIENvbG9yXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIExpc3RcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYgIWRlZmF1bHQ7XG5cbi8vLyBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBzYWZlIHBhZGRpbmcgb24gdGhlIGJvZHkgZm9yIG5vbi1yZWN0YW5ndWxhciBkZXZpY2VzIChpLmUuIHBob25lcyB3aXRoIG5vdGNoZXMpXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktc2FmZS1wYWRkaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcG9zaXRpb246IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gTmVzdGVkIG1hcmdpbiBmb3Igc3VibWVudS5cbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIENTUy4gQ2FuIGJlIGVpdGhlciBgbHRyYCBvciBgcnRsYC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIGN1cnNvcidzIHZhbHVlLCBgYXV0b2AgYnkgZGVmYXVsdFxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0byAhZGVmYXVsdDtcblxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XG59XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgZmxleCBqdXN0aWZ5aW5nIG9wdGlvbnNcbiQtemYtZmxleC1qdXN0aWZ5OiAtemYtZmxleC1qdXN0aWZ5KCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24pO1xuXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9ycztcblxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbm9ybWFsaXplO1xuXG4gIC8vIFRoZXNlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBhIDxtZXRhPiB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdFxuICAuZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBAaWYgKCRib2R5LXNhZmUtcGFkZGluZykge1xuICAgICAgLy8gdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGFjY291bnQgZm9yIG5vbi1yZWN0YW5ndWxhciBkaXNwbGF5cyBlLmcuIHBob25lcyB3aXRoIG5vdGNoZXNcbiAgICAgIHBhZGRpbmctdG9wOiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG5cbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICAvLyBHZXQgcmlkIG9mIGdhcCB1bmRlciBpbWFnZXMgYnkgbWFraW5nIHRoZW0gZGlzcGxheTogaW5saW5lLWJsb2NrOyBieSBkZWZhdWx0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcbiAgc2VsZWN0IHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gU3R5bGVzIEdvb2dsZSBNYXBzIGFuZCBNYXBRdWVzdCBlbWJlZHMgcHJvcGVybHlcbiAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1pZHNcbiAgLm1hcF9jYW52YXMsXG4gIC5tcWEtZGlzcGxheSB7XG4gICAgaW1nLFxuICAgIGVtYmVkLFxuICAgIG9iamVjdCB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCA8YnV0dG9uPiBzdHlsZXMgY3JlYXRlZCBieSBtb3N0IGJyb3dzZXJzXG4gIGJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiAkZ2xvYmFsLWJ1dHRvbi1jdXJzb3I7XG4gIH1cblxuICAvLyBQcmV2ZW50IHRleHQgb3ZlcmZsb3cgb24gcHJlXG4gIHByZSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG5cbiAgLy8gTWFrZSByZXNldCBpbmhlcml0IGZvbnQtZmFtaWx5IGluc3RlYWQgb2Ygc2V0dGluZ3Mgc2Fucy1zZXJpZlxuICBidXR0b24sXG4gIGlucHV0LFxuICBvcHRncm91cCxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBjbGFzc2VzIHRvIHNob3cvaGlkZSBlbGVtZW50cyBpbiBKYXZhU2NyaXB0XG4gIC5pcy12aXNpYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmlzLWhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEdsb2JhbCBzcGFjaW5nIGZvciBmb3JtIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG5AaW1wb3J0ICd0ZXh0JztcbkBpbXBvcnQgJ2NoZWNrYm94JztcbkBpbXBvcnQgJ2xhYmVsJztcbkBpbXBvcnQgJ2hlbHAtdGV4dCc7XG5AaW1wb3J0ICdpbnB1dC1ncm91cCc7XG5AaW1wb3J0ICdmaWVsZHNldCc7XG5AaW1wb3J0ICdzZWxlY3QnO1xuQGltcG9ydCAncmFuZ2UnO1xuQGltcG9ydCAncHJvZ3Jlc3MnO1xuQGltcG9ydCAnbWV0ZXInO1xuQGltcG9ydCAnZXJyb3InO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS10ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZXJyb3I7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEZvbnQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiBwbGFjZWhvbGRlciB0ZXh0IHdpdGhpbiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBGb250XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1saW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZm9jdXNlZCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZm9jdXM6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgZGlzYWJsZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBmb2N1c2VkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYm9yZGVyLWZvY3VzOiAxcHggc29saWQgJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nICogMC41ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgb3V0c2lkZSB0ZXh0IGlucHV0cyB3aGVuIGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLy8gUHJvcGVydGllcyB0byB0cmFuc2l0aW9uIG9uIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgdGhlIHVwL2Rvd24gYnV0dG9ucyB0aGF0IENocm9tZSBhbmQgRmlyZWZveCBhZGQgdG8gYDxpbnB1dCB0eXBlPSdudW1iZXInPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFJhZGl1cyBmb3IgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGZvcm0gYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tZWxlbWVudCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICB9XG5cbiAgLy8gRm9jdXMgc3RhdGVcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXRleHQge1xuICAvLyBUZXh0IGlucHV0c1xuICAje3RleHQtaW5wdXRzKCl9LFxuICB0ZXh0YXJlYSB7XG4gICAgQGluY2x1ZGUgZm9ybS1lbGVtZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyBUZXh0IGFyZWFzXG4gIHRleHRhcmVhIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAmW3Jvd3NdIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG4gIH1cblxuICBpbnB1dCxcbiAgdGV4dGFyZWEge1xuICAgIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXG4gIFt0eXBlPSdzdWJtaXQnXSxcbiAgW3R5cGU9J2J1dHRvbiddIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWJ1dHRvbi1yYWRpdXM7XG4gIH1cblxuICAvLyBSZXNldCBOb3JtYWxpemUgc2V0dGluZyBjb250ZW50LWJveCB0byBzZWFyY2ggZWxlbWVudHNcbiAgaW5wdXRbdHlwZT0nc2VhcmNoJ10geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xuICBbdHlwZT0nbnVtYmVyJ10ge1xuICAgIEBpZiBub3QgJGlucHV0LW51bWJlci1zcGlubmVycyB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcblxuICAgICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQbGFjZWhvbGRlciB0ZXh0XG4gIDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94IHtcbiAgW3R5cGU9J2ZpbGUnXSxcbiAgW3R5cGU9J2NoZWNrYm94J10sXG4gIFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dC9sYWJlbCBzaWJsaW5nc1xuICBbdHlwZT0nY2hlY2tib3gnXSArIGxhYmVsLFxuICBbdHlwZT0ncmFkaW8nXSArIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgJltmb3JdIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0cyBpbnNpZGUgbGFiZWxzXG4gIGxhYmVsID4gW3R5cGU9J2NoZWNrYm94J10sXG4gIGxhYmVsID4gW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGZpbGUgaW5wdXQgd2lkdGhcbiAgW3R5cGU9J2ZpbGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcblxuICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuQG1peGluIGZvcm0tbGFiZWwtbWlkZGxlIHtcbiAgJGlucHV0LWJvcmRlci13aWR0aDogZ2V0LWJvcmRlci12YWx1ZSgkaW5wdXQtYm9yZGVyLCB3aWR0aCk7XG5cbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgcGFkZGluZzogKCRmb3JtLXNwYWNpbmcgKiAwLjUgKyByZW0tY2FsYygkaW5wdXQtYm9yZGVyLXdpZHRoKSkgMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1sYWJlbCB7XG4gIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBmb3JtLWxhYmVsO1xuXG4gICAgJi5taWRkbGUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1sYWJlbC1taWRkbGU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHN0eWxlIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dCB7XG4gIC5oZWxwLXRleHQge1xuICAgICRtYXJnaW4tdG9wOiAoJGZvcm0tc3BhY2luZyAqIDAuNSkgKiAtMTtcblxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIGZvbnQtc2l6ZTogJGhlbHB0ZXh0LWZvbnQtc2l6ZTtcbiAgICBmb250LXN0eWxlOiAkaGVscHRleHQtZm9udC1zdHlsZTtcbiAgICBjb2xvcjogJGhlbHB0ZXh0LWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGVmdC9yaWdodCBwYWRkaW5nIG9mIGFuIHByZS9wb3N0Zml4ZWQgaW5wdXQgbGFiZWxcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1wcmVwb3N0Zml4IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiAkaW5wdXQtbGluZS1oZWlnaHQpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCB0YWJsZSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDAsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICVpbnB1dC1ncm91cC1jaGlsZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtbGFiZWwge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmc6IDAgJGlucHV0LXByZWZpeC1wYWRkaW5nO1xuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kO1xuXG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC1wcmVmaXgtYm9yZGVyKSB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgYSxcbiAgICBpbnB1dCxcbiAgICBidXR0b24sXG4gICAgbGFiZWwge1xuICAgICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG5cbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIH1cbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNpdHkgYnVtcCBuZWVkZWQgdG8gcHJldmVudCBvdmVycmlkZSBieSBidXR0b25zXG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGJldHdlZW4gdGhlIGxlZ2VuZCB0ZXh0IGFuZCBmaWVsZHNldCBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMykgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmaWVsZHNldCB7XG4gIG1hcmdpbjogJGZpZWxkc2V0LW1hcmdpbjtcbiAgcGFkZGluZzogJGZpZWxkc2V0LXBhZGRpbmc7XG4gIGJvcmRlcjogJGZpZWxkc2V0LWJvcmRlcjtcblxuICBsZWdlbmQge1xuICAgIC8vIENvdmVycyB1cCB0aGUgZmllbGRzZXQncyBib3JkZXIgdG8gY3JlYXRlIGFydGlmaWNpYWwgcGFkZGluZ1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiByZW0tY2FsYygtMyk7XG4gICAgcGFkZGluZzogJGxlZ2VuZC1wYWRkaW5nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQge1xuICBmaWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgbGVnZW5kIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3Igc2VsZWN0IG1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBkcm9wZG93biB0cmlhbmdsZSBpbnNpZGUgc2VsZWN0IG1lbnVzLiBTZXQgdG8gYHRyYW5zcGFyZW50YCB0byByZW1vdmUgaXQgZW50aXJlbHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3Igc2VsZWN0IG1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLXNlbGVjdCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuXG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHNlbGVjdC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3QtYmFja2dyb3VuZDtcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmICRzZWxlY3QtdHJpYW5nbGUtY29sb3IgIT0gdHJhbnNwYXJlbnQge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtdHJpYW5nbGUoJHNlbGVjdC10cmlhbmdsZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46IGNvbnRlbnQtYm94O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRnbG9iYWwtcmlnaHQgKC0kZm9ybS1zcGFjaW5nKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XG5cbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICgkZm9ybS1zcGFjaW5nICogMS41KTtcbiAgfVxuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAmOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBIaWRlIHRoZSBkcm9wZG93biBhcnJvdyBzaG93biBpbiBuZXdlciBJRSB2ZXJzaW9uc1xuICAmOjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJlttdWx0aXBsZV0ge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG4gICY6bm90KFttdWx0aXBsZV0pIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXNlbGVjdCB7XG4gIHNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS1zZWxlY3Q7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzbGlkZXIncyB0cmFjay5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGFjdGl2ZSBmaWxsIGNvbG9yIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgaGFuZGxlIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGhhbmRsZSBmb3IgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgYW1vdW50IG9mIGEgZGlzYWJsZWQgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQge1xuICBpbnB1dFt0eXBlPSdyYW5nZSddIHsgIC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICRtYXJnaW46ICgkc2xpZGVyLWhhbmRsZS1oZWlnaHQgLSAkc2xpZGVyLWhlaWdodCkgKiAwLjU7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiAwO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4XG5cbiAgICAvLyBDaHJvbWUvU2FmYXJpXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIG1hcmdpbi10b3A6IC0kbWFyZ2luO1xuXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpcmVmb3hcbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIG1hcmdpbi10b3A6IC0kbWFyZ2luO1xuXG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEludGVybmV0IEV4cGxvcmVyXG4gICAgJjo6LW1zLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvcmRlci10b3A6ICRtYXJnaW4gc29saWQgJGJvZHktYmFja2dyb3VuZDtcbiAgICAgIGJvcmRlci1ib3R0b206ICRtYXJnaW4gc29saWQgJGJvZHktYmFja2dyb3VuZDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcblxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLXRodW1iIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWZpbGwtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotbXMtZmlsbC11cHBlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgb3V0cHV0IHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb2dyZXNzLWJhclxuLy8vL1xuXG4vLy8gSGVpZ2h0IG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHByb2dyZXNzIGJhcidzIG1ldGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50IHtcbiAgcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAkcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgfVxuXG4gICAgLy8gRm9yIEZpcmVmb3hcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogJHByb2dyZXNzLWJhY2tncm91bmQ7XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgc2V0cyB0aGUgZmlsbCB3aXRoIGNvbG9yXG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBJRSBhbmQgRWRnZVxuICAgICY6Oi1tcy1maWxsIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWV0ZXJcbi8vLy9cblxuLy8vIEhlaWdodCBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIExlbmd0aFxuJG1ldGVyLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYW4gb3B0aW1hbCB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1nb29kOiAkc3VjY2Vzcy1jb2xvciAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIGF2ZXJhZ2UgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtbWVkaXVtOiAkd2FybmluZy1jb2xvciAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGEgc3Vib3B0aW1hbCB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1iYWQ6ICRhbGVydC1jb2xvciAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tbWV0ZXItZWxlbWVudCB7XG4gIG1ldGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRtZXRlci1oZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgIC8vIERpc2FibGUgYC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZWAgZnJvbSBnZXR0aW5nIHByZWZpeGVkLFxuICAgIC8vIFdlIGhhdmUgZGlzYWJsZWQgYXV0b3ByZWZpeGVyIGZpcnN0IGFuZCBhcmUganVzdCBvbmx5IHVzaW5nIFxuICAgIC8vIGAtbW96LWFwcGVhcmFuY2U6IG5vbmVgIGFzIGEgcHJlZml4IGFuZCBuZWdsZWN0aW5nIHRoZSB3ZWJraXQuXG4gICAgXG4gICAgLyohIGF1dG9wcmVmaXhlcjogb2ZmICovXG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgLy8gRm9yIEZpcmVmb3hcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogJG1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAvLyBDaHJvbWUvU2FmYXJpL0VkZ2VcbiAgICAmOjotd2Via2l0LW1ldGVyLWJhciB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1pbm5lci1lbGVtZW50IHtcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1nb29kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtbWVkaXVtO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWJhZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6LW1vei1tZXRlci1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1nb29kO1xuICAgIH1cblxuICAgICY6LW1vei1tZXRlci1zdWItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtbWVkaXVtO1xuICAgIH1cblxuICAgICY6LW1vei1tZXRlci1zdWItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWJhZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhYmlkZVxuLy8vL1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGlucHV0cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtaW5wdXRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGxhYmVscy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtbGFiZWxzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciB0byB1c2UgZm9yIGludmFsaWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB0byB1c2UgZm9yIGxhYmVscyBvZiBpbnZhbGlkIGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGFuIGlucHV0IGZpZWxkIHRvIGhhdmUgYW4gZXJyb3Igc3RhdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGFsZXJ0LWNvbG9yXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhY2tncm91bmQtbGlnaHRlbiBbMTAlXSAtIExpZ2h0bmVzcyBsZXZlbCBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBmb3JtLWlucHV0LWVycm9yKFxuICAkYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQtaW52YWxpZCxcbiAgJGJhY2tncm91bmQtbGlnaHRlbjogMTAlXG4pIHtcbiAgJjpub3QoOmZvY3VzKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGJhY2tncm91bmQsICR3aGl0ZSwgJGJhY2tncm91bmQtbGlnaHRlbik7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogJGJhY2tncm91bmQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGVycm9yIHN0eWxlcyB0byBhIGZvcm0gZWxlbWVudCwgdXNpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc2V0dGluZ3MgZmlsZS5cbkBtaXhpbiBmb3JtLWVycm9yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luLXRvcDogJGZvcm0tc3BhY2luZyAqIC0wLjU7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgZm9udC1zaXplOiAkaW5wdXQtZXJyb3ItZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWVycm9yIHtcbiAgQGlmICRhYmlkZS1pbnB1dHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBpbnZhbGlkIGlucHV0c1xuICAgIC5pcy1pbnZhbGlkLWlucHV0IHtcbiAgICAgIEBpbmNsdWRlIGZvcm0taW5wdXQtZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgQGlmICRhYmlkZS1sYWJlbHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBsYWJlbHMgb2YgaW52YWxpZCBvdXRwdXRzXG4gICAgLmlzLWludmFsaWQtbGFiZWwge1xuICAgICAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBlcnJvciBlbGVtZW50XG4gIC5mb3JtLWVycm9yIHtcbiAgICBAaW5jbHVkZSBmb3JtLWVycm9yO1xuXG4gICAgJi5pcy12aXNpYmxlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHlcbi8vLy9cblxuLy8gQmFzZSB0eXBvZ3JhcGh5IHN0eWxlcyAodGFncyBvbmx5KVxuQGltcG9ydCAnYmFzZSc7XG5cbi8vIFR5cG9ncmFwaHkgaGVscGVyIGNsYXNzZXMgKGNsYXNzZXMgb25seSlcbkBpbXBvcnQgJ2hlbHBlcnMnO1xuXG4vLyBUZXh0IGFsaWdubWVudCBjbGFzc2VzXG5AaW1wb3J0ICdhbGlnbm1lbnQnO1xuXG4vLyBQcmludCBzdHlsZXNcbkBpbXBvcnQgJ3ByaW50JztcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeSB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHktaGVscGVycztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcmludC1zdHlsZXM7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1iYXNlXG4vLy8vXG5cbi8vIEJhc2UgVHlwb2dyYXBoeVxuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cbi8vIFRoZXNlIGFyZSBzdHlsZXMgYXBwbGllZCB0byBiYXNpYyBIVE1MIHRhZ3MsIGluY2x1ZGluZzpcbi8vICAgLSBQYXJhZ3JhcGhzIDxwPlxuLy8gICAtIEJvbGQvaXRhbGljcyA8Yj4gPHN0cm9uZz4gPGk+IDxlbT5cbi8vICAgLSBTbWFsbCB0ZXh0IDxzbWFsbD5cbi8vICAgLSBIZWFkaW5ncyA8aDE+LTxoNj5cbi8vICAgLSBBbmNob3JzIDxhPlxuLy8gICAtIERpdmlkZXJzIDxocj5cbi8vICAgLSBMaXN0cyA8dWw+IDxvbD4gPGRsPlxuLy8gICAtIEJsb2NrcXVvdGVzIDxibG9ja3F1b3RlPlxuLy8gICAtIENvZGUgYmxvY2tzIDxjb2RlPlxuLy8gICAtIEFiYnJldmlhdGlvbnMgPGFiYnI+XG4vLyAgIC0gQ2l0YXRpb25zIDxjaXRlPlxuLy8gICAtIEtleXN0cm9rZXMgPGtiZD5cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBoZWFkZXIgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdHlsZSAoZS5nLiBpdGFsaWNpemVkKSBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIHVzZWQgZm9yIGVsZW1lbnRzIHRoYXQgdXNlIG1vbm9zcGFjZWQgdHlwZSwgc3VjaCBhcyBjb2RlIHNhbXBsZXNcbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItY29sb3I6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyBmb3IgaGVhZGluZ3MgYXQgdmFyaW91cyBzY3JlZW4gc2l6ZXMuIEVhY2gga2V5IGlzIGEgYnJlYWtwb2ludCwgYW5kIGVhY2ggdmFsdWUgaXMgYSBtYXAgb2YgaGVhZGluZyBzdHlsZXMuXG4vLy8gQHR5cGUgTWFwXG4kaGVhZGVyLXN0eWxlczogKFxuICBzbWFsbDogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogMjQpLFxuICAgICdoMic6ICgnZm9udC1zaXplJzogMjApLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMTkpLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMTcpLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxuICApLFxuICBtZWRpdW06IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ4KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDMxKSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDI1KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbikgIWRlZmF1bHQ7XG5cbi8vICRoZWFkZXItc3R5bGVzIG1hcCBpcyBidWlsdCBmcm9tICRoZWFkZXItc2l6ZXMgaW4gb3JkZXIgdG8gZW5zdXJlIGRvd253YXJkIGNvbXBhdGliaWxpdHlcbi8vIHdoZW4gJGhlYWRlci1zaXplcyBpcyBkZXByZWNpYXRlZCwgJGhlYWRlci1zdHlsZXMgbmVlZHMgdG8gZ2V0ICFkZWZhdWx0IHZhbHVlcyBsaWtlIHNldHRpbmdzLnNjc3NcbkBmdW5jdGlvbiBidWlsZC1mcm9tLWhlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKSB7XG4gIEB3YXJuICdOb3RlLCB0aGF0ICRoZWFkZXItc2l6ZXMgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAkaGVhZGVyLXN0eWxlcy4gJGhlYWRlci1zaXplcyBzdGlsbCB3b3JrcywgYnV0IGl0IGlzIGdvaW5nIHRvIGJlIGRlcHJlY2lhdGVkLic7XG4gICRoZWFkZXItc3R5bGVzOiAoKTtcbiAgQGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc2l6ZXMge1xuICAgICRoZWFkZXItbWFwOiAoKTtcbiAgICBAZWFjaCAkaGVhZGVyLCAkZm9udC1zaXplIGluICRoZWFkZXJzIHtcbiAgICAgICRoZWFkZXItbWFwOiBtYXAtbWVyZ2UoJGhlYWRlci1tYXAsICgkaGVhZGVyOiAoJ2ZvbnQtc2l6ZSc6ICRmb250LXNpemUpKSk7XG4gICAgfVxuICAgICRoZWFkZXItc3R5bGVzOiBtYXAtbWVyZ2UoJGhlYWRlci1zdHlsZXMsICgkc2l6ZTogJGhlYWRlci1tYXApKTtcbiAgfVxuICBAcmV0dXJuICRoZWFkZXItc3R5bGVzO1xufVxuXG4vLyBJZiBpdCBleGlzdHMgJGhlYWRlcnMtc2l6ZXMgaXMgdXNlZCB0byBidWlsZCAkaGVhZGVyLXN0eWxlcy4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhoZWFkZXItc2l6ZXMpIHtcbiAgJGhlYWRlci1zdHlsZXM6IGJ1aWxkLWZyb20taGVhZGVyLXNpemVzKCRoZWFkZXItc2l6ZXMpO1xufVxuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYDxzbWFsbD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHNtYWxsLWZvbnQtc2l6ZTogODAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYDxzbWFsbD5gIGVsZW1lbnRzIHdoZW4gcGxhY2VkIGluc2lkZSBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5zaWRlIGA8cD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2QgZm9yIHBhcmFncmFwaCB0ZXh0LlxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gVXNlIHRoZSBgLmNvZGUtaW5saW5lYCBjb21wb25lbnQgYXMgZGVmYXVsdCBmb3IgYDxjb2RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGVuYWJsZS1jb2RlLWlubGluZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIHdpZHRoIG9mIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoci13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGZvciBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTGlzdFxuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGZvciBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGhyLW1hcmdpbjogcmVtLWNhbGMoMjApIGF1dG8gIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgaXRlbXMgaW4gYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tICFkZWZhdWx0O1xuXG4vLy8gQnVsbGV0IHR5cGUgdG8gdXNlIGZvciB1bm9yZGVyZWQgbGlzdHMgKGUuZy4sIGBzcXVhcmVgLCBgY2lyY2xlYCwgYGRpc2NgKS5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2MgIWRlZmF1bHQ7XG5cbi8vLyBQb3NpdGlvbmluZyBmb3IgYnVsbGV0cyBvbiB1bm9yZGVyZWQgbGlzdCBpdGVtcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgbGlzdHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGEgbGlzdCBpbnNpZGUgYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgYDxkbD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRlZm5saXN0LW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBmb3IgYDxkdD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGA8ZHQ+YCBhbmQgYDxkZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTogMC4zcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBhIGA8YmxvY2txdW90ZT5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KSAhZGVmYXVsdDtcblxuLy8vIFNpZGUgYm9yZGVyIGZvciBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kYmxvY2txdW90ZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBVc2UgdGhlIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50IGFzIGRlZmF1bHQgZm9yIGA8Y2l0ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRlbmFibGUtY2l0ZS1ibG9jazogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRrZXlzdHJva2UtZm9udDogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gYm9yZGVyIHN0eWxlIGZvciBgPGFiYnI+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2Uge1xuICAvLyBUeXBvZ3JhcGh5IHJlc2V0c1xuICBkaXYsXG4gIGRsLFxuICBkdCxcbiAgZGQsXG4gIHVsLFxuICBvbCxcbiAgbGksXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYsXG4gIHByZSxcbiAgZm9ybSxcbiAgcCxcbiAgYmxvY2txdW90ZSxcbiAgdGgsXG4gIHRkIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFBhcmFncmFwaHNcbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc7XG4gIH1cblxuICAvLyBFbXBoYXNpemVkIHRleHRcbiAgZW0sXG4gIGkge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFN0cm9uZyB0ZXh0XG4gIHN0cm9uZyxcbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTbWFsbCB0ZXh0XG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBIZWFkaW5nc1xuICBoMSwgLmgxLFxuICBoMiwgLmgyLFxuICBoMywgLmgzLFxuICBoNCwgLmg0LFxuICBoNSwgLmg1LFxuICBoNiwgLmg2IHtcbiAgICBmb250LWZhbWlseTogJGhlYWRlci1mb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkaGVhZGVyLWZvbnQtc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRoZWFkZXItdGV4dC1yZW5kZXJpbmc7XG5cbiAgICBzbWFsbCB7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIGNvbG9yOiAkaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVhZGluZyBzdHlsZXNcbiAgQGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkaGVhZGVyLCAkaGVhZGVyLWRlZnMgaW4gJGhlYWRlcnMge1xuICAgICAgICAkZm9udC1zaXplLXRlbXA6IDFyZW07XG4gICAgICAgICN7JGhlYWRlcn0sIC4jeyRoZWFkZXJ9IHtcblxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkge1xuICAgICAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgZm9udC1zaXplKSk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgZnMpIHtcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZzKSk7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS10ZW1wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCkge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGxpbmUtaGVpZ2h0KSwgJGZvbnQtc2l6ZS10ZW1wKTtcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGgpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaCksICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYygkaGVhZGVyLWxpbmVoZWlnaHQsICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbWFyZ2luLXRvcCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1hcmdpbi10b3ApKTtcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbXQpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtdCkpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbWFyZ2luLWJvdHRvbSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pKTtcbiAgICAgICAgICB9IEBlbHNlIGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbWIpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYikpO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoJGhlYWRlci1tYXJnaW4tYm90dG9tKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaW5rc1xuICBhIHtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogJGFuY2hvci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uO1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yLWhvdmVyO1xuICAgICAgQGlmICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyICE9ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhvcml6b250YWwgcnVsZVxuICBociB7XG4gICAgY2xlYXI6IGJvdGg7XG5cbiAgICBtYXgtd2lkdGg6ICRoci13aWR0aDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgbWFyZ2luOiAkaHItbWFyZ2luO1xuXG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhyLWJvcmRlcjtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgfVxuXG4gIC8vIExpc3RzXG4gIHVsLFxuICBvbCxcbiAgZGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRsaXN0LW1hcmdpbi1ib3R0b207XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogJGxpc3Qtc3R5bGUtcG9zaXRpb247XG4gICAgbGluZS1oZWlnaHQ6ICRsaXN0LWxpbmVoZWlnaHQ7XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1zXG4gIGxpIHtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBVbm9yZGVyZWQgbGlzdHNcbiAgdWwge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LXNpZGUtbWFyZ2luO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogJGxpc3Qtc3R5bGUtdHlwZTtcbiAgfVxuXG4gIC8vIE9yZGVyZWQgbGlzdHNcbiAgb2wge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LXNpZGUtbWFyZ2luO1xuICB9XG5cbiAgLy8gTmVzdGVkIHVub3JkZXJlZC9vcmRlcmVkIGxpc3RzXG4gIHVsLCBvbCB7XG4gICAgJiAmIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmaW5pdGlvbiBsaXN0c1xuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LW1hcmdpbi1ib3R0b207XG5cbiAgICBkdCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tO1xuICAgICAgZm9udC13ZWlnaHQ6ICRkZWZubGlzdC10ZXJtLXdlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBCbG9ja3F1b3Rlc1xuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDAgMCAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4gICAgcGFkZGluZzogJGJsb2NrcXVvdGUtcGFkZGluZztcbiAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAkYmxvY2txdW90ZS1ib3JkZXI7XG5cbiAgICAmLCBwIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgICBjb2xvcjogJGJsb2NrcXVvdGUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5saW5lIENpdGF0aW9uc1xuICBAaWYgKCRlbmFibGUtY2l0ZS1ibG9jayA9PSB0cnVlKSB7XG4gICAgY2l0ZSB7XG4gICAgICAvLyBFeHRlbmRpbmcgYSBjbGFzcyBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAgICAvLyBUT0RPOiBCcmVhayB0aGUgdHlwb2dyYXBoeS1iYXNlL3R5cG9ncmFwaHktaGVscGVycyBzZXBhcmF0aW9uXG4gICAgICBAZXh0ZW5kICVjaXRlLWJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFiYnJldmlhdGlvbnNcbiAgYWJiciwgYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206ICRhYmJyLXVuZGVybGluZTtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRmlndXJlc1xuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC8vIENvZGVcbiAgQGlmICgkZW5hYmxlLWNvZGUtaW5saW5lID09IHRydWUpIHtcbiAgICBjb2RlIHtcbiAgICAgIEBleHRlbmQgJWNvZGUtaW5saW5lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEtleXN0cm9rZXNcbiAga2JkIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogJGtleXN0cm9rZS1wYWRkaW5nO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGtleXN0cm9rZS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRrZXlzdHJva2UtZm9udDtcbiAgICBjb2xvcjogJGtleXN0cm9rZS1jb2xvcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJGtleXN0cm9rZS1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRrZXlzdHJva2UtcmFkaXVzO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktaGVscGVyc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsZWFkLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemUgKiAxLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxlYWQtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kc3ViaGVhZGVyLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdG9wIG1hcmdpbiBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3Igc3RhdGlzdGljIG51bWJlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3RhdC1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2l0ZS1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIFBzZXVkbyBjb250ZW50IGZvciBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjaXRlLXBzZXVkby1jb250ZW50OiAnXFwyMDE0IFxcMDAyMCcgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBhcm91bmQgdGV4dCBvZiB0aGUgYC5jb2RlLWlubGluZWAgY29tcG9uZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRjb2RlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNSAxKSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgYXJvdW5kIHRleHQgb2YgdGhlIGAuY29kZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRjb2RlLWJsb2NrLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gdW5kZXIgdGhlIGAuY29kZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIE51bWJlclxuJGNvZGUtYmxvY2stbWFyZ2luLWJvdHRvbTogMS41cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gY2l0ZS1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogJGNpdGUtY29sb3I7XG4gIGZvbnQtc2l6ZTogJGNpdGUtZm9udC1zaXplO1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAkY2l0ZS1wc2V1ZG8tY29udGVudDtcbiAgfVxufVxuXG4vLy8gQWRkIGJhc2ljIHN0eWxlcyBmb3IgYSBjb2RlIGhlbHBlci5cbi8vLyBTZWUgYGNvZGUtaW5saW5lYCBhbmQgYGNvZGUtYmxvY2tgIG1peGlucy5cbkBtaXhpbiBjb2RlLXN0eWxlIHtcbiAgYm9yZGVyOiAkY29kZS1ib3JkZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XG5cbiAgZm9udC1mYW1pbHk6ICRjb2RlLWZvbnQtZmFtaWx5O1xuICBmb250LXdlaWdodDogJGNvZGUtZm9udC13ZWlnaHQ7XG4gIGNvbG9yOiAkY29kZS1jb2xvcjtcbn1cblxuLy8vIE1ha2UgY29kZSBoZWxwZXIgZnJvbSB0aGUgYGNvZGUtc3R5bGVgIG1peGluIGlubGluZS5cbi8vLyBVc2VkIHRvIGdlbmVyYXRlIGAuY29kZS1pbmxpbmVgXG5AbWl4aW4gY29kZS1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuXG4gIHBhZGRpbmc6ICRjb2RlLXBhZGRpbmc7XG59XG5cbi8vLyBNYWtlIGNvZGUgaGVscGVyIGZyb20gdGhlIGBjb2RlLXN0eWxlYCBtaXhpbiBhIGJsb2NrLlxuLy8vIFVzZWQgdG8gZ2VuZXJhdGUgYC5jb2RlLWJsb2NrYFxuQG1peGluIGNvZGUtYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG5cbiAgcGFkZGluZzogJGNvZGUtYmxvY2stcGFkZGluZztcbiAgbWFyZ2luLWJvdHRvbTogJGNvZGUtYmxvY2stbWFyZ2luLWJvdHRvbTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzIHtcbiAgLy8gVXNlIHRvIGNyZWF0ZSBhIHN1YmhlYWRpbmcgdW5kZXIgYSBtYWluIGhlYWRlclxuICAvLyBNYWtlIHN1cmUgeW91IHBhaXIgdGhlIHR3byBlbGVtZW50cyBpbiBhIDxoZWFkZXI+IGVsZW1lbnQsIGxpa2UgdGhpczpcbiAgLy8gPGhlYWRlcj5cbiAgLy8gICA8aDE+SGVhZGluZzwvaDE+XG4gIC8vICAgPGgyPlN1YmhlYWRpbmc8L2gyPlxuICAvLyA8L2hlYWRlcj5cbiAgLnN1YmhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogJHN1YmhlYWRlci1tYXJnaW4tdG9wO1xuICAgIG1hcmdpbi1ib3R0b206ICRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtd2VpZ2h0OiAkc3ViaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkc3ViaGVhZGVyLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXG4gIC5sZWFkIHtcbiAgICBmb250LXNpemU6ICRsZWFkLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXG4gIC5zdGF0IHtcbiAgICBmb250LXNpemU6ICRzdGF0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIHAgKyAmIHtcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xuICAgIH1cbiAgfVxuXG4gIHVsLCBvbCB7XG4gICAgLy8gVXNlIHRvIHJlbW92ZSBudW1iZXJzIGZyb20gb3JkZXJlZCBsaXN0ICYgYnVsbGV0cyBmcm9tIHVub3JkZXJlZCBsaXN0XG4gICAgJi5uby1idWxsZXQge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJWNpdGUtYmxvY2sge1xuICAgIEBpbmNsdWRlIGNpdGUtYmxvY2s7XG4gIH1cblxuICAuY2l0ZS1ibG9jayB7XG4gICAgQGV4dGVuZCAlY2l0ZS1ibG9jaztcbiAgfVxuXG4gICVjb2RlLWlubGluZSB7XG4gICAgQGluY2x1ZGUgY29kZS1zdHlsZTtcbiAgICBAaW5jbHVkZSBjb2RlLWlubGluZTtcbiAgfVxuXG4gIC5jb2RlLWlubGluZSB7XG4gICAgQGV4dGVuZCAlY29kZS1pbmxpbmU7XG4gIH1cblxuICAuY29kZS1ibG9jayB7XG4gICAgQGluY2x1ZGUgY29kZS1zdHlsZTtcbiAgICBAaW5jbHVkZSBjb2RlLWJsb2NrO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50IHtcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGFsaWduIGluIChsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5KSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIC50ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBJZiBgdHJ1ZWAsIGFsbCBlbGVtZW50cyB3aWxsIGhhdmUgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMgd2hlbiBwcmludGVkLCB0byBzYXZlIG9uIGluay5cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGdyb3VwIGdsb2JhbFxuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBkaXNwbGF5cyBuZXh0IHRvIGFsbCBsaW5rcyB0aGVpciBcImhyZWZcIiB3aGVuIHByaW50ZWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBncm91cCBnbG9iYWxcbiRwcmludC1ocmVmczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gc2Fzcy1saW50OmRpc2FibGUtYWxsXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByaW50LXN0eWxlcyB7XG4gIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgKiB7XG4gICAgICAvLyBFbnN1cmUgYSBcImJsYWNrLW9uLXdoaXRlXCIgcHJpbnQgYnkgcmVtb3ZpbmcgYmFja2dyb3VuZHMsXG4gICAgICAvLyB1c2luZyBibGFjayB0ZXh0IGV2ZXJ5d2hlcmUgYW5kIGZvcmNpbmcgdGhlIGJyb3dzZXIgdG8gZWNvbm9taXplIGluay5cbiAgICAgIEBpZiAkcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjogaDVicC5jb20vc1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGVjb25vbXk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIHByZXZlbnQgYW55IGVjb25vbXkgYnkgdGhlIGJyb3dzZXIuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICB9XG5cbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIC5oaWRlLWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4gICAgdGFibGUuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gICAgdGhlYWQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRib2R5LnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0ci5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XG4gICAgdGQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cbiAgICB0aC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuXG4gICAgLy8gRGlzcGxheSB0aGUgVVJMIG9mIGEgbGluayBhZnRlciB0aGUgdGV4dFxuICAgIGEsXG4gICAgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fVxuICAgIEBpZiAkcHJpbnQtaHJlZnMge1xuICAgICAgYVtocmVmXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cihocmVmKSAnKSc7IH1cbiAgICB9XG5cbiAgICAvLyBEb24ndCBkaXNwbGF5IHRoZSBVUkwgZm9yIGltYWdlcyBvciBKYXZhU2NyaXB0L2ludGVybmFsIGxpbmtzXG4gICAgLmlyIGE6YWZ0ZXIsXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlcixcbiAgICBhW2hyZWZePScjJ106YWZ0ZXIgeyBjb250ZW50OiAnJzsgfVxuXG4gICAgLy8gRGlzcGxheSB3aGF0IGFuIGFiYnJldmlhdGlvbiBzdGFuZHMgZm9yIGFmdGVyIHRoZSB0ZXh0XG4gICAgYWJiclt0aXRsZV06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIodGl0bGUpICcpJzsgfVxuXG4gICAgLy8gUHJldmVudCBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGEgYmxvY2txdW90ZSBvciBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy8gaDVicC5jb20vdFxuICAgIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG5cbiAgICB0cixcbiAgICBpbWcgeyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cblxuICAgIGltZyB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICBAcGFnZSB7IG1hcmdpbjogMC41Y207IH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICAvLyBBdm9pZCBwYWdlIGJyZWFrcyBhZnRlciBhIGhlYWRpbmdcbiAgICBoMixcbiAgICBoMyB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9XG5cbiAgICAvLyBIZWxwZXIgdG8gcmUtYWxsb3cgcGFnZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBjZXJ0YWluIGVsZW1lbnRzIChlLmcuIHByZSwgYmxvY2txdW90ZSwgdHIpXG4gICAgLnByaW50LWJyZWFrLWluc2lkZSB7XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBUaGUgbWF4aW11bSB3aWR0aCBvZiBhIHJvdy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLXJvdy13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBkZWZhdWx0IGNvbHVtbiBjb3VudCBvZiBhIGdyaWQuIENoYW5naW5nIHRoaXMgdmFsdWUgYWZmZWN0cyB0aGUgbG9naWMgb2YgdGhlIGdyaWQgbWl4aW5zLCBhbmQgdGhlIG51bWJlciBvZiBDU1MgY2xhc3NlcyBvdXRwdXQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcy4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbi8vLyBAc2luY2UgNi4xLjBcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcbiAgc21hbGw6IDIwcHgsXG4gIG1lZGl1bTogMzBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyB3aWxsIGFsaWduIHRvIHRoZSBvcHBvc2l0ZSBlZGdlIG9mIHRoZSByb3cuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdyaWQtY29sdW1uLWFsaWduLWVkZ2U6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZWxlY3RvciB1c2VkIGZvciBhbiBhbGlhcyBvZiBjb2x1bW4gKHdpdGggQGV4dGVuZCkuIElmIGBmYWxzZWAsIG5vIGFsaWFzIGlzIGNyZWF0ZWQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kZ3JpZC1jb2x1bW4tYWxpYXM6ICdjb2x1bW5zJyAhZGVmYXVsdDtcblxuLy8vIFRoZSBoaWdoZXN0IG51bWJlciBvZiBgLngtdXBgIGNsYXNzZXMgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlIGJsb2NrIGdyaWQgQ1NTLlxuLy8vIEB0eXBlIE51bWJlclxuJGJsb2NrLWdyaWQtbWF4OiA4ICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbCB2YWx1ZSB0byBzdG9yZSB0aGUgZW5kIGNvbHVtbiBmbG9hdCBkaXJlY3Rpb25cbiQtemYtZW5kLWZsb2F0OiBpZigkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSwgJGdsb2JhbC1yaWdodCwgJGdsb2JhbC1sZWZ0KTtcblxuQGltcG9ydCAncm93JztcbkBpbXBvcnQgJ2NvbHVtbic7XG5AaW1wb3J0ICdzaXplJztcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcbkBpbXBvcnQgJ2d1dHRlcic7XG5AaW1wb3J0ICdjbGFzc2VzJztcbkBpbXBvcnQgJ2xheW91dCc7XG5cbkBpbXBvcnQgJ2ZsZXgtZ3JpZCc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiBjb2x1bW5zIGRlZmluZWQgaW5zaWRlIHRoaXMgbWl4aW4gdG8gdXNlIGEgZGlmZmVyZW50IGNvbHVtbiBjb3VudC5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJvb3QgW2ZhbHNlXVxuLy8vICAgSWYgYGZhbHNlYCwgc2VsZWN0b3JzIGluc2lkZSB0aGlzIG1peGluIHdpbGwgbmVzdCBpbnNpZGUgdGhlIHBhcmVudCBzZWxlY3Rvci5cbi8vLyAgIElmIGB0cnVlYCwgc2VsZWN0b3JzIHdpbGwgbm90IG5lc3QuXG5AbWl4aW4gZ3JpZC1jb250ZXh0KFxuICAkY29sdW1ucyxcbiAgJHJvb3Q6IGZhbHNlXG4pIHtcbiAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY29sdW1uIGNvdW50IHNvIGl0IGNhbiBiZSByZS1zZXQgbGF0ZXJcbiAgJG9sZC1ncmlkLWNvbHVtbi1jb3VudDogJGdyaWQtY29sdW1uLWNvdW50O1xuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRjb2x1bW5zICFnbG9iYWw7XG5cbiAgQGlmICRyb290IHtcbiAgICBAYXQtcm9vdCB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgb2xkIGNvbHVtbiBjb3VudFxuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRvbGQtZ3JpZC1jb2x1bW4tY291bnQgIWdsb2JhbDtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIHJvdy5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIENvbHVtbiBjb3VudCBmb3IgdGhpcyByb3cuIGBudWxsYCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb2x1bW4gY291bnQuXG4vLy8gQHBhcmFtIHtLZXl3b3Jkc30gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93KFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY2Y6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRjZiB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEludmVydHMgdGhlIG1hcmdpbnMgb2YgYSByb3cgdG8gbmVzdCBpdCBpbnNpZGUgb2YgYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93LW5lc3QoJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgJG1hcmdpbjogcmVtLWNhbGMoLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICQtemYtc2l6ZSkpICogMC41ICogLTE7XG5cbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldCBhIGdyaWQgcm93IHNpemVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbkBtaXhpbiBncmlkLXJvdy1zaXplKCRzaXplOiAkZ3JpZC1yb3ctd2lkdGgpIHtcbiAgQGlmICRzaXplID09IGV4cGFuZCB7XG4gICAgJHNpemU6IG5vbmU7XG4gIH1cblxuICBtYXgtd2lkdGg6ICRzaXplO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgbGlzdCBvZiB0aGUgZm9ybWF0IFwieCBvZiB5XCIgKHdpdGhvdXQgcXVvdGVzKSB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gIEByZXR1cm4gZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgkY29sdW1ucywgJGRlbm9taW5hdG9yOiAkZ3JpZC1jb2x1bW4tY291bnQpO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcbiAgLy8gUG9zaXRpb25cbiAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGF1dG8pO1xuXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xuICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uIHJvdy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBhZGRpbmcgYC5yb3dgIGFuZCBgLmNvbHVtbmAgdG8gdGhlIHNhbWUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFdpZHRoIG9mIHRoZSBndXR0ZXJzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBjb2x1bW4gcm93LiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGdyaWQtY29sdW1uLXJvdyhcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLXJvdztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAmLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBmdW5jdGlvbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEByZXR1cm4gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AbWl4aW4gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGNvbHVtbnMsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXJvdygpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tcm93XG5AbWl4aW4gZ3JpZC1jb2wtcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVycyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gU2V0IHRoZSB3aWR0aCBvZiBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHdpZHRoIFskZ3JpZC1jb2x1bW4tY291bnRdIC0gV2lkdGggdG8gbWFrZSB0aGUgY29sdW1uLiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tc2l6ZShcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIHdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1zaXplKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1zaXplXG5AbWl4aW4gZ3JpZC1jb2wtc2l6ZShcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBJdCBjYW4gYmU6XG4vLy8gICAqIEEgbnVtYmVyOiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudFxuLy8vICAgICBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGVcbi8vLyAgICAgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LlxuLy8vICAgKiBgY2VudGVyYDogQ29sdW1uIHdpbGwgYmUgY2VudGVyZWRcbi8vLyAgICogYGF1dG9gOiBDb2x1bW4gd2lsbCBiZSBwdXNoZWQgdG8gdGhlIGxlZnQgKG9yIHRvIHRoZSByaWdodCBmb3IgdGhlIGxhc3QgY29sdW1uKS5cbkBtaXhpbiBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pIHtcbiAgLy8gQXV0byBwb3NpdGlvbmluZ1xuICBAaWYgJHBvc2l0aW9uID09IGF1dG8ge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gTGFzdCBjb2x1bW4gYWxpZ25tZW50XG4gICAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2gvcHVsbFxuICBAZWxzZSBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gJ251bWJlcicge1xuICAgICRvZmZzZXQ6IHBlcmNlbnRhZ2UoZGl2aWRlKCRwb3NpdGlvbiwgJGdyaWQtY29sdW1uLWNvdW50KSk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG5cbiAgLy8gQ2VudGVyIHBvc2l0aW9uaW5nXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKS4gRW50ZXIgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIFwiY2VudGVyXCIgb3IgXCJhdXRvXCIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbihhdXRvKTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTZXQgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW5cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkZ3V0dGVyIFthdXRvXVxuLy8vICAgU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRndXR0ZXJzIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBndXR0ZXIgcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRndXR0ZXJzIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3V0dGVyKFxuICAkZ3V0dGVyOiBhdXRvLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRndXR0ZXIsICRndXR0ZXJzKSB7XG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpICogMC41O1xuXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxufVxuXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIGdyaWQtY29sdW1uLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1ndXR0ZXJcbkBtaXhpbiBncmlkLWNvbC1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXIsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWNvbGxhcHNlKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1jb2xsYXBzZVxuQG1peGluIGdyaWQtY29sLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tY29sbGFwc2U7XG59XG5cbi8vLyBTZXRzIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zIHRvIG1hdGNoIGd1dHRlcnNcbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkbWFyZ2luIFthdXRvXVxuLy8vICAgVGhlIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gQSBzaW5nbGUgdmFsdWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIGJyZWFrcG9pbnQgbmFtZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGUgY29ycmVzcG9uZGluZyBzaXplIGluIHRoZSAkbWFyZ2lucyBtYXAuXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkbWFyZ2lucyBtYXAgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcmdpbnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tbWFyZ2luIChcbiAgJG1hcmdpbjogYXV0byxcbiAgJG1hcmdpbnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkbWFyZ2luLCAkbWFyZ2lucykge1xuICAgICRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKTtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBPdXRwdXRzIENTUyBjbGFzc2VzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBmb3VuZGF0aW9uLWdyaWQoXG4gICRyb3c6ICdyb3cnLFxuICAkY29sdW1uOiAnY29sdW1uJyxcbiAgJGNvbHVtbi1yb3c6ICdjb2x1bW4tcm93JyxcbiAgJGd1dHRlcjogJ2d1dHRlcicsXG4gICRwdXNoOiAncHVzaCcsXG4gICRwdWxsOiAncHVsbCcsXG4gICRjZW50ZXI6ICdjZW50ZXJlZCcsXG4gICR1bmNlbnRlcjogJ3VuY2VudGVyZWQnLFxuICAkY29sbGFwc2U6ICdjb2xsYXBzZScsXG4gICR1bmNvbGxhcHNlOiAndW5jb2xsYXBzZScsXG4gICRvZmZzZXQ6ICdvZmZzZXQnLFxuICAkZW5kOiAnZW5kJyxcbiAgJGV4cGFuZGVkOiAnZXhwYW5kZWQnLFxuICAkYmxvY2s6ICdibG9jaydcbikge1xuICAvLyBSb3dcbiAgLiN7JHJvd30ge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93O1xuXG4gICAgLy8gQ29sbGFwc2luZ1xuICAgICYuI3skY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJiAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRncmlkLWNvbHVtbi1ndXR0ZXIpO1xuXG4gICAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgKGZ1bGwtd2lkdGgpIHJvd1xuICAgICYuI3skZXhwYW5kZWR9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcblxuICAgICAgLiN7JHJvd30ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC4jeyRleHBhbmRlZH0pIC4jeyRyb3d9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkZ3JpZC1jb2x1bW4tZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgICAvLyBTdGF0aWMgKHVucmVzcG9uc2l2ZSkgcm93IGd1dHRlcnNcbiAgICAgIC8vXG4gICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRncmlkLWNvbHVtbi1ndXR0ZXIge1xuICAgICAgICAmLiN7JGd1dHRlcn0tI3skYnJlYWtwb2ludH0ge1xuICAgICAgICAgID4gLiN7JGNvbHVtbn0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCR2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29sdW1uXG4gIC4jeyRjb2x1bW59IHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbDtcblxuICAgIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XG4gICAgICAmLiN7JGVuZH0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1lbmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29sdW1uIHJvd1xuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XG4gIC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cblxuICAvLyBUbyBwcm9wZXJseSBuZXN0IGEgY29sdW1uIHJvdywgcGFkZGluZyBhbmQgbWFyZ2luIGlzIHJlbW92ZWRcbiAgLiN7JHJvd30gLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBDb2x1bW4gd2lkdGhcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1zaXplKCRpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU291cmNlIG9yZGVyaW5nXG4gICAgICBAaWYgJGkgPCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgICBAaWYgJHB1c2gge1xuICAgICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHB1bGwge1xuICAgICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKC0kaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIEBpZiAkb2Zmc2V0IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRvZmZzZXR9LSN7JG99IHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1vZmYoJG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgJy4jeyRjb2x1bW59Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuI3skZXhwYW5kZWR9LiN7JHJvd30gLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0uI3skcm93fSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LSN7JHVuY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uaW5nXG4gICAgQGlmICRjZW50ZXIge1xuICAgICAgLiN7JC16Zi1zaXplfS0jeyRjZW50ZXJ9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGNlbnRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3V0dGVyIGFkanVzdG1lbnRcbiAgICAkLWd1dHRlci11bnBvcy1zZWxlY3RvcjogKFxuICAgICAgaWYoJHVuY2VudGVyLCAnLiN7JC16Zi1zaXplfS0jeyR1bmNlbnRlcn0nLCBudWxsKSxcbiAgICAgIGlmKCRwdXNoLCAnLiN7JC16Zi1zaXplfS0jeyRwdXNofS0wJywgbnVsbCksXG4gICAgICBpZigkcHVsbCwgJy4jeyQtemYtc2l6ZX0tI3skcHVsbH0tMCcsIG51bGwpLFxuICAgICk7XG4gICAgQGlmICgkdW5jZW50ZXIgb3IgJHB1c2ggb3IgJHB1bGwpIHtcbiAgICAgICN7JC1ndXR0ZXItdW5wb3Mtc2VsZWN0b3J9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtdW5wb3M7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC4jeyRjb2x1bW59LSN7JGJsb2NrfSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xuICB9XG5cbiAgQGlmICRjb2x1bW4gPT0gJ2NvbHVtbicgYW5kIGhhcy12YWx1ZSgkZ3JpZC1jb2x1bW4tYWxpYXMpIHtcbiAgICAuI3skZ3JpZC1jb2x1bW4tYWxpYXN9IHtcbiAgICAgIC8vIHNhc3MtbGludDpkaXNhYmxlLWJsb2NrIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuICAgICAgQGV4dGVuZCAuY29sdW1uO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNvbHVtbiddIC0gU2VsZWN0b3IocykgdG8gdXNlIGZvciBjaGlsZCBlbGVtZW50cy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZ3V0dGVyXG4vLy8gICBUaGUgZ3V0dGVyIHRvIGFwcGx5IHRvIGNoaWxkIGVsZW1lbnRzLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gJGdyaWQtY29sdW1uLWd1dHRlciB3aWxsIHVzZSB0aGUgdmFsdWVzIGluIHRoZSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIG1hcCwgaW5jbHVkaW5nIGJyZWFrcG9pbnQgc2l6ZXMuXG4vLy8gICAtIEEgZml4ZWQgbnVtZXJpYyB2YWx1ZSB3aWxsIGFwcGx5IHRoaXMgZ3V0dGVyIHRvIGFsbCBicmVha3BvaW50cy5cbkBtaXhpbiBncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nLFxuICAkZ3V0dGVyOiBudWxsXG4pIHtcbiAgJiA+ICN7JHNlbGVjdG9yfSB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoMSwgJG4pKTtcblxuICAgIC8vIElmIGEgJGd1dHRlciB2YWx1ZSBpcyBwYXNzZWRcbiAgICBAaWYoJGd1dHRlcikge1xuICAgICAgLy8gR3V0dGVyc1xuICAgICAgQGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkdmFsdWUpICogMC41O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkZ3V0dGVyKSA+IDAge1xuICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJGd1dHRlcikgKiAwLjU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoI3skbn1uKzEpIHtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBpdGVtcyB0aGF0IGFwcGVhciBpbiBlYWNoIHJvdy5cbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XG4gICAgQGlmICRpID09IDEge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIGRpdmlkZSgxMDAsICRuKSAqICRpKSAqIDAuNSAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAmOm50aC1jaGlsZCgjeyRufW4rMSk6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICgxMDAgLSBkaXZpZGUoMTAwLCAkbikgKiAkaSkgKiAwLjUgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbGV4LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBmb3IgdGhpcyByb3cuIElmIHNldCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSwgdGhlIGdsb2JhbCBjb2x1bW4gY291bnQgd2lsbCBiZSB1c2VkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBiYXNpYyBzdHlsZXMgZnJvbSBiZWluZyBvdXRwdXQuIFVzZWZ1bCBpZiB5b3UncmUgY2FsbGluZyB0aGlzIG1peGluIG9uIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UsIGFzIGl0IHByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgb3V0cHV0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHdyYXAgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gaGF2ZSByb3cgd3JhcHBpbmcgYmVoYXZpb3Igc2V0IHRvIG5vd3JhcFxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdyhcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJhc2U6IHRydWUsXG4gICR3cmFwOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRiYXNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93ICR3cmFwO1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucywgJGJhc2UpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgYGZsZXhgIHByb3BlcnR5IGZvciBhIGZsZXggZ3JpZCBjb2x1bW4uIEl0IGFjY2VwdHMgYWxsIG9mIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgYmFzaWMgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHR3byBleHRyYXM6XG4vLy8gICAtIGBleHBhbmRgICh0aGUgZGVmYXVsdCkgd2lsbCBtYWtlIHRoZSBjb2x1bW4gZXhwYW5kIHRvIGZpbGwgc3BhY2UuXG4vLy8gICAtIGBzaHJpbmtgIHdpbGwgbWFrZSB0aGUgY29sdW1uIGNvbnRyYWN0LCBzbyBpdCBvbmx5IHRha2VzIHVwIHRoZSBob3Jpem9udGFsIHNwYWNlIGl0IG5lZWRzLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLlxuQGZ1bmN0aW9uIGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnM6IGV4cGFuZCkge1xuICAkZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcblxuICBAaWYgJGNvbHVtbnMgPT0gc2hyaW5rIHtcbiAgICAkZmxleDogMCAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgJGNvbHVtbnMgIT0gZXhwYW5kIHtcbiAgICAkZmxleDogMCAwIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxuXG4gIEByZXR1cm4gJGZsZXg7XG59XG5cbi8vLyBDcmVhdGVzIGEgY29sdW1uIGZvciBhIGZsZXggZ3JpZC4gQnkgZGVmYXVsdCwgdGhlIGNvbHVtbiB3aWxsIHN0cmV0Y2ggdG8gdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lciwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBzaXppbmcgY2xhc3Nlcywgb3IgYnkgdXNpbmcgdGhlIGB1bnN0YWNrYCBjbGFzcyBvbiB0aGUgcGFyZW50IGZsZXggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMgd2lkdGguIFNlZSB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcmAgbWl4aW4uXG5AbWl4aW4gZmxleC1ncmlkLWNvbHVtbihcbiAgJGNvbHVtbnM6IGV4cGFuZCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAvLyBCYXNlIHByb3BlcnRpZXNcbiAgQGluY2x1ZGUgZmxleC1ncmlkLXNpemUoJGNvbHVtbnMpO1xuXG4gIC8vIEd1dHRlcnNcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgLy8gZml4ZXMgcmVjZW50IENocm9tZSB2ZXJzaW9uIG5vdCBsaW1pdGluZyBjaGlsZCB3aWR0aFxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDkzNDU4Ni93aGl0ZS1zcGFjZS1ub3dyYXAtYW5kLWZsZXhib3gtZGlkLW5vdC13b3JrLWluLWNocm9tZVxuICBAaWYgJGNvbHVtbnMgPT0gZXhwYW5kIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBibG9jayBncmlkIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgY29sdW1ucyB0byBkaXNwbGF5IG9uIGVhY2ggcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgLSBTZWxlY3RvciB0byB1c2UgdG8gdGFyZ2V0IGNvbHVtbnMgd2l0aGluIHRoZSByb3cuXG5AbWl4aW4gZmxleC1ncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nXG4pIHtcbiAgZmxleC13cmFwOiB3cmFwO1xuXG4gID4gI3skc2VsZWN0b3J9IHtcbiAgICAkcGN0OiBwZXJjZW50YWdlKGRpdmlkZSgxLCAkbikpO1xuXG4gICAgZmxleDogMCAwICRwY3Q7XG4gICAgbWF4LXdpZHRoOiAkcGN0O1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSB3aWR0aCBmbGV4IGdyaWQgY29sdW1uLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZmxleC1ncmlkLXNpemUoJGNvbHVtbnM6IG51bGwpIHtcbiAgJGNvbHVtbnM6ICRjb2x1bW5zIG9yIGV4cGFuZDtcblxuICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zKTtcblxuICAvLyBtYXgtd2lkdGggZml4ZXMgSUUgMTAvMTEgbm90IHJlc3BlY3RpbmcgdGhlIGZsZXgtYmFzaXMgcHJvcGVydHlcbiAgQGlmICRjb2x1bW5zICE9IGV4cGFuZCBhbmQgJGNvbHVtbnMgIT0gc2hyaW5rIHtcbiAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxufVxuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtZ3JpZCB7XG4gIC8vIFJvd1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93O1xuXG4gICAgLy8gTmVzdGluZyBiZWhhdmlvclxuICAgICYgLnJvdyB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KG5lc3QsICRiYXNlOiBmYWxzZSk7XG5cbiAgICAgICYuY29sbGFwc2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIHJvd1xuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuXG4gICAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZXhwYW5kZWQpIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgICYuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXG4gICAgLy8gRnJvbSBjb2xsYXBzZWQgY2hpbGRcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLmNvbHVtbiB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuY29sdW1uLnJvdy5yb3cge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC5yb3cgLmNvbHVtbi5yb3cucm93IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XG4gICAgICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtbGF5b3V0KCRpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJC16Zi1zaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC8vIFNpemluZyAoZXhwYW5kKVxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS1leHBhbmQge1xuICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBdXRvLXN0YWNraW5nL3Vuc3RhY2tpbmdcbiAgICAgIEBhdC1yb290ICh3aXRob3V0OiBtZWRpYSkge1xuICAgICAgICAucm93LiN7JC16Zi1zaXplfS11bnN0YWNrIHtcbiAgICAgICAgICA+IC5jb2x1bW4ge1xuICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigxMDAlKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xuICAgIC4jeyQtemYtc2l6ZX0tY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LXVuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBTaXppbmcgKHNocmluaylcbiAgLnNocmluayB7XG4gICAgZmxleDogZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xuICAuY29sdW1uLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICAuY29sdW1ucyB7XG4gICAgQGV4dGVuZCAuY29sdW1uOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBFbmFibGVzIHRoZSBYWSBncmlkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiR4eS1ncmlkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSBncmlkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkLlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIG1hcmdpbiBiZXR3ZWVuIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgbWFyZ2luIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogKFxuICBcInNtYWxsXCI6IDIwcHgsXG4gIFwibWVkaXVtXCI6IDMwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIHBhZGRpbmcgaW4gY2VsbHMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcyB3aGVuIHVzaW5nIHRoZSBwYWRkaW5nIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1wYWRkaW5nLWd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIHRvIHVzZSB3aGVuIHBhZGRpbmcgdGhlIGdyaWQtY29udGFpbmVyLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtY29udGFpbmVyLXBhZGRpbmc6ICRncmlkLXBhZGRpbmctZ3V0dGVycyAhZGVmYXVsdDtcblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIHRvIGFwcGx5IHRvIGEgZ3JpZCBjb250YWluZXJcbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2VsbHMgaW4gYW4gWFkgYmxvY2sgZ3JpZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR4eS1ibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuQGltcG9ydCAnZ3V0dGVycyc7XG5AaW1wb3J0ICdncmlkJztcbkBpbXBvcnQgJ2NlbGwnO1xuQGltcG9ydCAnZnJhbWUnO1xuQGltcG9ydCAncG9zaXRpb24nO1xuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ2NvbGxhcHNlJztcbkBpbXBvcnQgJ2NsYXNzZXMnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZSBndXR0ZXJzIGZvciBhIGNlbGwvY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBlaXRoZXIgbWFyZ2luIG9yIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZWdhdGl2ZSBbZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgZ3V0dGVyIGFzIGEgbmVnYXRpdmUgdmFsdWUuIENvbW1vbmx5IHVzZWQgZm9yIG5lc3RlZCBncmlkcy5cbkBtaXhpbiB4eS1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbmVnYXRpdmU6IGZhbHNlXG4pIHtcbiAgJG9wZXJhdG9yOiBpZigkbmVnYXRpdmUsICctJywgJycpO1xuXG4gIC8vIElmIHdlIGhhdmUgZGVjbGFyZWQgbmVnYXRpdmUgZ3V0dGVycywgZm9yY2UgdHlwZSB0byBgbWFyZ2luLlxuICAkZ3V0dGVyLXR5cGU6IGlmKCRuZWdhdGl2ZSwgJ21hcmdpbicsICRndXR0ZXItdHlwZSk7XG5cbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cbiAgQGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRndXR0ZXJzKSB7XG4gICAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAqIDAuNTtcblxuICAgICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZ3V0dGVyIHBvc2l0aW9uXG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06IHVucXVvdGUoXCIjeyRvcGVyYXRvcn0jeyRndXR0ZXJ9XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ251bWJlcicpIHtcbiAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVycykgKiAwLjU7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgbWF4IHdpZHRoIGNvbnRhaW5lciwgZGVzaWduZWQgdG8gaG91c2UgeW91ciBncmlkIGNvbnRlbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1jb250YWluZXJdIC0gYSB3aWR0aCB0byBsaW1pdCB0aGUgY29udGFpbmVyIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJGdyaWQtY29udGFpbmVyLXBhZGRpbmddIC0gcGFkZGluZ3Mgb2YgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiB4eS1ncmlkLWNvbnRhaW5lcihcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsXG4gICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZ1xuKSB7XG4gIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRwYWRkaW5nLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuXG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgeW91ciBmbGV4IGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBJZiB0aGUgY2VsbHMgd2l0aGluIHNob3VsZCB3cmFwIG9yIG5vdC5cbkBtaXhpbiB4eS1ncmlkKFxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxuICAkd3JhcDogdHJ1ZVxuKSB7XG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6ICRkaXJlY3Rpb24gJHdyYXA7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIGZsZXggdmFsdWUgZm9yIGEgY2VsbCBiYXNlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gVGhlIGNlbGwgZmxleCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcbiAgQGlmICgkc2l6ZSA9PSAnYXV0bycpIHtcbiAgICBAcmV0dXJuIDEgMSAwO1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnZ3JvdycpIHtcbiAgICBAcmV0dXJuIDEgMCBhdXRvO1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnc2hyaW5rJyBvciAkc2l6ZSA9PSAnZnVsbCcgb3IgemYtaXMtZnJhY3Rpb24oJHNpemUsICRhbGxvdy1uby1kZW5vbWluYXRvcjogdHJ1ZSkpIHtcbiAgICBAcmV0dXJuIDAgMCBhdXRvO1xuICB9XG4gIEByZXR1cm4gbnVsbDtcbn1cblxuLy8vIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBhIGNlbGwgZ3V0dGVycy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCByZXR1cm5zIHRoZSByZXNwb25zaXZlIGd1dHRlcnMgbWFwIGAkZ3V0dGVyc2AuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ8TWFwfSBUaGUgY2VsbCBndXR0ZXIgc2l6ZSBvciB0aGUgcmVzcG9uc2l2ZSBndXR0ZXJzIG1hcC5cbkBmdW5jdGlvbiB4eS1jZWxsLWd1dHRlcnMoXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAvLyBGb3IgYGF1dG9gLCByZXR1cm5zIHRoZSByZXNwb25zaXZlIG1hcCBgJGd1dHRlcnNgLlxuICBAaWYgKCRicmVha3BvaW50ID09ICdhdXRvJykge1xuICAgIEByZXR1cm4gJGd1dHRlcnM7XG4gIH1cblxuICAvLyBVc2UgdGhlIGNvbnRleHR1YWwgYnJlYWtwb2ludCBieSBkZWZhdWx0LlxuICAkYnJlYWtwb2ludDogLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCk7XG5cbiAgQGlmICgkYnJlYWtwb2ludCkge1xuICAgIEByZXR1cm4gLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJC16Zi16ZXJvLWJyZWFrcG9pbnQpIG9yIDA7XG4gIH1cbn1cblxuLy8vIFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugc2l6ZSBvZiBhIGNlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkc2l6ZSBbJGdyaWQtY29sdW1uc10gLSBTaXplIHRvIG1ha2UgdGhlIGNlbGwuIFlvdSBjYW4gcGFzcyBhIHZhbHVlIGluIG11bHRpcGxlIGZvcm1hdHMsIHN1Y2ggYXMgYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvM2AuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBTaXplIG9mIHRoZSBjZWxsIChpbiBwZXJjZW50KS5cbkBmdW5jdGlvbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiAkZ3JpZC1jb2x1bW5zXG4pIHtcbiAgQHJldHVybiBmcmFjdGlvbi10by1wZXJjZW50YWdlKCRzaXplLCAkZGVub21pbmF0b3I6ICRncmlkLWNvbHVtbnMpO1xufVxuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIHZhbHVlIGZvciBhIGNlbGwgc2l6ZS5cbi8vL1xuLy8vIEd1dHRlcnMtcmVsYXRlZCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIGZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzIChieSBkZWZhdWx0KSBhcyB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCBvciBhbnkgZnJhY3Rpb24gbGlrZSBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgcmV0dXJucyBhIG1hcCBvZiBzaXplcyBhZGFwdGVkIHRvIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxTdHJpbmd8TWFwfSBUaGUgY2VsbCBzaXppbmcgcHJvcGVydHkgdmFsdWUsIG9yIGEgcmVzcG9uc2l2ZSBtYXAgb2YgdGhlbS5cbkBmdW5jdGlvbiB4eS1jZWxsLXNpemUtY3NzKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAkbWFyZ2luLWd1dHRlcjogMDtcblxuICBAaWYgKCRzaXplID09ICdhdXRvJyBvciAkc2l6ZSA9PSAnc2hyaW5rJykge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuXG4gIC8vIEZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzLCB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcbiAgICAkbWFyZ2luLWd1dHRlcjogeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gICAgQGlmICgkbWFyZ2luLWd1dHRlciA9PSBudWxsKSB7XG4gICAgICBAZXJyb3IgJ3h5LWNlbGwtc2l6ZTogbm8gZ3V0dGVycyB3ZXJlIGZvdW5kIGluIGAkZ3V0dGVyc2AgZm9yIFwiJGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCInO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSB0aGUgY2VsbCBzaXplIChudW1iZXIpXG4gICRzaXplLXJhdzogaWYoJHNpemUgPT0gJ2Z1bGwnLCAxMDAlLCB4eS1jZWxsLXNpemUoJHNpemUpKTtcblxuICAvLyBDYWxjdWxhdGUgdGhlIGNlbGwgQ1NTIHNpemUgaW5jbHVkaW5nIGd1dHRlcnMgKHN0cmluZylcbiAgLy8gSWYgdGhlIGNlbGwgaGFzIHJlc3BvbnNpdmUgbWFyZ2luIGd1dHRlcnMsIHJldHVybiBhIHJlc3BvbnNpdmUgbWFwIG9mIHNpemVzLlxuICBAaWYgdHlwZS1vZigkbWFyZ2luLWd1dHRlcikgPT0gJ21hcCcge1xuICAgICRyZXNwb25zaXZlLWNzcy1zaXplczogKCk7XG5cbiAgICBAZWFjaCAkYnAsICRtZyBpbiAkbWFyZ2luLWd1dHRlciB7XG4gICAgICAkbWdjOiByZW0tY2FsYygkbWcpO1xuICAgICAgQGlmICRtZ2MgPT0gMCB7XG4gICAgICAgICRtZ2M6IDByZW07XG4gICAgICB9XG4gICAgICAkc2l6ZS1jc3M6IGlmKCRtZyA9PSAwLCAkc2l6ZS1yYXcsIGNhbGMoI3skc2l6ZS1yYXd9IC0gI3skbWd9KSk7XG4gICAgICAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM6IG1hcC1tZXJnZSgkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXMsICgkYnA6ICRzaXplLWNzcykpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHJlc3BvbnNpdmUtY3NzLXNpemVzO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIGEgc2luZ2xlIENTUyBzaXplLlxuICBAZWxzZSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoYXQgMCBpcyB0cmFuc2xhdGVkIGluIDByZW0gZm9yIGNhbGMoKVxuICAgICRtZ2M6IHJlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKTtcbiAgICBAaWYgJG1nYyA9PSAwIHtcbiAgICAgICRtZ2M6IDByZW07XG4gICAgfVxuICAgICRjc3Mtc2l6ZTogaWYoJG1hcmdpbi1ndXR0ZXIgPT0gMCwgJHNpemUtcmF3LCBjYWxjKCN7JHNpemUtcmF3fSAtICN7JG1nY30pKTtcbiAgICBAcmV0dXJuICRjc3Mtc2l6ZTtcbiAgfVxufVxuXG4vLy8gU2V0cyBiYXNlIGZsZXggcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQWNjZXB0cyBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2AsIGBncm93YCwgb3IgYW55IG90aGVyIHZhbHVlIHJlcHJlc2VudGluZyBhIGNlbGwgc2l6ZSAoaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGBzaHJpbmtgKS5cbkBtaXhpbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcbiAgJGJhc2U6IHh5LWNlbGwtYmFzZSgkc2l6ZSk7XG5cbiAgZmxleDogI3skYmFzZX07XG5cbiAgLy8gU2V0IGJhc2Ugc3R5bGVzIGZvciBcImZ1bGxcIiBvbmx5XG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxufVxuXG4vLy8gUmVzZXRzIGEgY2VsbHMgd2lkdGggKG9yIGhlaWdodCBpZiB2ZXJ0aWNhbCBpcyB0cnVlKSBhcyB3ZWxsIGFzIHN0cmlwcyBpdHMgZ3V0dGVycy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXJlc2V0KCR2ZXJ0aWNhbDogdHJ1ZSkge1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG4gICN7JGRpcmVjdGlvbn06IGF1dG87XG4gIG1heC0jeyRkaXJlY3Rpb259OiBub25lO1xufVxuXG4vLy8gU2V0cyBzaXppbmcgcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBHdXR0ZXJzLXJlbGF0ZWQgYXJndW1lbnRzIGFyZSByZXF1aXJlZCBmb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycyAoYnkgZGVmYXVsdCkgYXMgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyBzaXplcyBhZGFwdGVkIGZvciByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1zaXplKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAkc2l6ZXM6IHh5LWNlbGwtc2l6ZS1jc3MoJHNpemUsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRicmVha3BvaW50KTtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIGhlaWdodCwgd2lkdGgpO1xuXG4gIEBpZiAodHlwZS1vZigkc2l6ZXMpID09ICdtYXAnKSB7XG4gICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoYXV0bywgJHNpemVzKSB7XG4gICAgICAjeyRkaXJlY3Rpb259OiAkLXpmLWJwLXZhbHVlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgI3skZGlyZWN0aW9ufTogJHNpemVzO1xuICB9XG59XG5cbi8vLyBTZXRzIGd1dHRlcnMgcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbbnVsbF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uIEJ5IGRlZmF1bHQgYHJpZ2h0IGxlZnRgIGZvciBob3Jpem9udGFsIGNlbGxzIGFuZCBgdG9wIGJvdHRvbWAgZm9yIHZlcnRpY2FsIGNlbGxzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBEaXJlY3Rpb24gb2YgdGhlIGd1dHRlcnMgdG8gb3V0cHV0LiBTZWUgYCRndXR0ZXItcG9zaXRpb25gLlxuQG1peGluIHh5LWNlbGwtZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAvLyBHZXQgdGhlIGRlZmF1bHQgZ3V0dGVyIHBvc2l0aW9uIGFjY29yZGluZyB0byBjZWxsIGRpcmVjdGlvblxuICBAaWYoJGd1dHRlci1wb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgJGd1dHRlci1wb3NpdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHRvcCBib3R0b20sIGxlZnQgcmlnaHQpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBndXR0ZXIgd2lkdGggZm9yIHRoaXMgYnJlYWtwb2ludFxuICAkZ3V0dGVyLXdpZHRoOiB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgQGlmICgkZ3V0dGVyLXdpZHRoID09IG51bGwpIHtcbiAgICBAZXJyb3IgJ3h5LWNlbGwtZ3V0dGVyczogbm8gZ3V0dGVycyB3ZXJlIGZvdW5kIGluIGAkZ3V0dGVyc2AgZm9yIFwiJGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCInO1xuICB9XG5cbiAgQGlmICgkZ3V0dGVyLXR5cGUgYW5kICRndXR0ZXItdHlwZSAhPSBub25lKSB7XG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLXdpZHRoLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgY2VsbCBmb3IgeW91ciBncmlkLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW251bGxdIC0gW0RFUFJFQ0FURURdIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJG91dHB1dCBbKGJhc2Ugc2l6ZSBndXR0ZXJzKV0gLSBDZWxsIHBhcnRzIHRvIG91dHB1dC4gWW91IHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBvdGhlcnMgcGFydHMgb2YgdGhlIGNlbGwgc2VwZXJhdGVseSwgaXQgbWF5IG5vdCB3b3JrIHByb3Blcmx5IG90aGVyd2lzZS5cbkBtaXhpbiB4eS1jZWxsKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IG51bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkb3V0cHV0OiAoYmFzZSBzaXplIGd1dHRlcnMpXG4pIHtcbiAgLy8gRGVmYXVsdCBmb3IgJGd1dHRlci1vdXRwdXRcbiAgQGlmICgkZ3V0dGVyLW91dHB1dCAhPSBudWxsKSB7XG4gICAgQHdhcm4gJ3h5LWNlbGw6ICRndXR0ZXItb3V0cHV0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wJztcbiAgICBAaWYgKCRndXR0ZXItb3V0cHV0ID09IGZhbHNlKSB7XG4gICAgICAkb3V0cHV0OiBzbC1yZW1vdmUoJG91dHB1dCwgZ3V0dGVycyk7XG4gICAgfVxuICB9XG5cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBiYXNlKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZSgkc2l6ZSk7XG4gIH1cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBzaXplKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkc2l6ZSwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCk7XG4gIH1cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBndXR0ZXJzKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHNpemVkIGdyaWQuIFVzZWQgdG8gZ2VuZXJhdGUgb3VyIGdyaWQgY2xhc3Nlcy5cbi8vL1xuLy8vIGB4eS1jZWxsLXN0YXRpYygpYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuXG4vLy8gVXNlIGB4eS1jZWxsKClgIGluc3RlYWQgd2l0aCBgJG91dHB1dDogKHNpemUgZ3V0dGVycylgIHRvIG5vdCBnZW5lcmF0ZSB0aGUgY2VsbCBiYXNlLlxuLy8vIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMFxuLy8vXG4vLy8gQGRlcHJlY2F0ZWQgdjYuNi4wXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVycy4gQWx3YXlzIGB0cnVlYCBmb3IgbWFyZ2luIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXN0YXRpYyhcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnQsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICBAd2FybiAneHktY2VsbC1zdGF0aWMoKSBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSBcInh5LWNlbGwoKVwiIGluc3RlYWQuIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMCc7XG5cbiAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgJGd1dHRlci1wb3NpdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHRvcCBib3R0b20sIGxlZnQgcmlnaHQpO1xuXG4gICQtZ3V0dGVyLW91dHB1dDogaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nLCB0cnVlLCAkZ3V0dGVyLW91dHB1dCk7XG4gICQtZ3V0dGVyLW1hcmdpbjogaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nLCAkZ3V0dGVyLCAwKTtcblxuICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAkLWd1dHRlci1tYXJnaW4sICR2ZXJ0aWNhbCk7XG4gIEBpZiAoJC1ndXR0ZXItb3V0cHV0KSB7XG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICB9XG59XG4iLCIvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblxuLy8vIE1vZGlmaWVzIGEgZ3JpZCB0byBnaXZlIGl0IFwiZnJhbWVcIiBiZWhhdmlvciAobm8gb3ZlcmZsb3csIG5vIHdyYXAsIHN0cmV0Y2ggYmVoYXZpb3IpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0ZWQgW2ZhbHNlXSAtIElzIGdyaWQgbmVzdGVkIG9yIG5vdC4gSWYgbmVzdGVkIGlzIHRydWUgdGhpcyBzZXRzIHRoZSBmcmFtZSB0byAxMDAlIGhlaWdodCwgb3RoZXJ3aXNlIHdpbGwgYmUgMTAwdmguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbbnVsbF0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlIFt0cnVlXSAtIEluY2x1ZGUgdGhlIGJhc2Ugc3R5bGVzIHRoYXQgZG9uJ3QgdmFyeSBwZXIgYnJlYWtwb2ludC5cbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkbmVzdGVkOiBmYWxzZSxcbiAgJGd1dHRlcnM6IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkaW5jbHVkZS1iYXNlOiB0cnVlXG4pIHtcblxuICBAaWYgJGluY2x1ZGUtYmFzZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cblxuICBAaWYgJGJyZWFrcG9pbnQgPT0gbnVsbCBhbmQgdHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKCR2ZXJ0aWNhbCwgJG5lc3RlZCwgJGd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gR2V0IG91ciBndXR0ZXJzIGlmIGFwcGxpY2FibGVcbiAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBhIGd1dHRlciwgYWRkIGl0IHRvIHRoZSB3aWR0aC9oZWlnaHRcbiAgICBAaWYgJGd1dHRlciB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCAwIGlzIHRyYW5zbGF0ZWQgaW4gMHJlbSBmb3IgY2FsYygpXG4gICAgICAgIEBpZiAkZ3V0dGVyID09IDAge1xuICAgICAgICAgICRndXR0ZXI6IDByZW07XG4gICAgICAgIH1cbiAgICAgICAgaGVpZ2h0OiBjYWxjKCN7JHVuaXR9ICsgI3skZ3V0dGVyfSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdncpO1xuICAgICAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKTtcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgMCBpcyB0cmFuc2xhdGVkIGluIDByZW0gZm9yIGNhbGMoKVxuICAgICAgICBAaWYgJGd1dHRlciA9PSAwIHtcbiAgICAgICAgICAkZ3V0dGVyOiAwcmVtO1xuICAgICAgICB9XG4gICAgICAgIHdpZHRoOiBjYWxjKCN7JHVuaXR9ICsgI3skZ3V0dGVyfSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XG4gICAgICAgIGhlaWdodDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgd2lkdGg6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdncpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gTW9kaWZpZXMgYSBjZWxsIHRvIGdpdmUgaXQgXCJibG9ja1wiIGJlaGF2aW9yIChvdmVyZmxvdyBhdXRvLCBpbmVydGlhbCBzY3JvbGxpbmcpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrKFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJHByb3BlcnR5OiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgJ292ZXJmbG93LXknLCAnb3ZlcmZsb3cteCcpO1xuXG4gIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIH0gQGVsc2Uge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtcbn1cblxuLy8vIENvbnRhaW5lciBmb3IgaW5zaWRlIGEgZ3JpZCBmcmFtZSBjb250YWluaW5nIG11bHRpcGxlIGJsb2Nrcy4gVHlwaWNhbGx5IHVzZWRcbi8vLyBhcyBhIG1vZGlmaWVyIGZvciBhIGAuY2VsbGAgdG8gYWxsb3cgdGhlIGNlbGwgdG8gcGFzcyBhbG9uZyBmbGV4IHNpemluZ1xuLy8vIGNvbnN0cmFpbnRzIC8gZnJvbSBwYXJlbnRzIHRvIGNoaWxkcmVuLlxuQG1peGluIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuXG4gID4gLmdyaWQteCB7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyB2YWx1ZSB0byBvZmZzZXQgYSBjZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxTdHJpbmd9IFRoZSBjZWxsIG9mZnNldCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLW9mZnNldChcbiAgJG4sXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQsICRkZWZhdWx0OiAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gICRzaXplOiB4eS1jZWxsLXNpemUoJG4pO1xuXG4gICRvZmZzZXQ6ICRzaXplO1xuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGF0IDAgaXMgdHJhbnNsYXRlZCBpbiAwcmVtIGZvciBjYWxjKClcbiAgICAkZ3V0dGVyOiByZW0tY2FsYyh4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KSk7XG4gICAgQGlmICRndXR0ZXIgPT0gMCB7XG4gICAgICAkZ3V0dGVyOiAwcmVtO1xuICAgIH1cbiAgICAkb2Zmc2V0OiBpZigkZ3V0dGVyID09IDAsICRzaXplLCBjYWxjKCN7JHNpemV9ICsgI3skZ3V0dGVyfSAvIDIpKTtcbiAgfVxuICBAcmV0dXJuICRvZmZzZXQ7XG59XG5cbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodC9ib3R0b20gYnkgYCRuYCBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJGJyZWFrcG9pbnQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgZm9yIGAkZ3V0dGVyc2AuIEl0IGNhbiBiZSBhIGJyZWFrcG9pbnQgbmFtZSwgbGlzdCBvZiBicmVha3BvaW50cyBvciBgYXV0b2AgZm9yIGFsbCBicmVha3BvaW50cy4gSWYgYSBsaXN0IGlzIGdpdmVuLCBtZWRpYS1xdWVyaWVzIHdpbGwgYmUgZ2VuZXJhdGVkLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG9mZnNldC4gSWYgc2V0IHRvIHRydWUgd2lsbCBhcHBseSBtYXJnaW4tdG9wIGluc3RlYWQuXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXG4gICRuLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50LCAkZGVmYXVsdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwsICd0b3AnLCAkZ2xvYmFsLWxlZnQpO1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oJGJyZWFrcG9pbnQsICRtZWRpYS1xdWVyaWVzOiAnZm9yLWxpc3RzJykge1xuICAgICRvZmZzZXQ6IHh5LWNlbGwtb2Zmc2V0KCRuLCAkZ3V0dGVycywgJGd1dHRlci10eXBlKTtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skb2Zmc2V0fTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNlbGwnXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIGJyZWFrcG9pbnQgdG8gdXNlIGZvciB0aGUgY2VsbCBnZW5lcmF0aW9uLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJG91dHB1dCBbKGJhc2Ugc2l6ZSBndXR0ZXJzKV0gLSBDZWxsIHBhcnRzIHRvIG91dHB1dC4gWW91IHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBvdGhlcnMgcGFydHMgb2YgdGhlIGNlbGwgc2VwZXJhdGVseSwgaXQgbWF5IG5vdCB3b3JrIGNvcnJlY3RseSBvdGhlcndpc2UuXG5AbWl4aW4geHktZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItb3V0cHV0OiBudWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG91dHB1dDogKGJhc2Ugc2l6ZSBndXR0ZXJzKVxuKSB7XG4gICRzaXplOiBwZXJjZW50YWdlKGRpdmlkZSgxLCAkbikpO1xuXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsLCAkb3V0cHV0KTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENvbGxhcHNlcyB0aGUgZ3JpZCBhIGNlbGxzIHdpdGhpbiBpdC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWy5jZWxsXSAtIFRoZSBjaGlsZCBlbGVtZW50IHRvIHJlbW92ZSB0aGUgZ3V0dGVyIGZyb20uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gcmVtb3ZlLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb25zIHRvIHJlbW92ZSBndXR0ZXJzIGZyb20uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG1pbi1icmVha3BvaW50IFskLXpmLXplcm8tYnJlYWtwb2ludF0gLSBNaW5pbXVtIGJyZWFrcG9pbnQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGZvciB3aGljaCB0byBjb2xsYXBzZSB0aGUgZ3V0dGVyLlxuQG1peGluIHh5LWdyaWQtY29sbGFwc2UoXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRtaW4tYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnRcbikge1xuICAvLyBGaXJzdCwgbGV0cyBuZWdhdGUgYW55IG1hcmdpbnMgb24gdGhlIHRvcCBsZXZlbFxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgIH1cblxuICAgICAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRleGNsdWRlZC1icHM6IC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJG1pbi1icmVha3BvaW50KTtcblxuICAgIC8vIE91dHB1dCBuZXcgd2lkdGhzIHRvIG5vdCBpbmNsdWRlIGd1dHRlcnNcbiAgICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYoc2wtY29udGFpbigkZXhjbHVkZWQtYnBzLCAkYnApKSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgICAgID4gLiN7JGJwfS0jeyRpfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICB9XG5cbiAgICAgID4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAgIHBhZGRpbmctI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmFzZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEdyaWQgQ29udGFpbmVyXG4gIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XG5cbiAgICAmLmZsdWlkIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUpO1xuICAgIH1cblxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlLCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIC5ncmlkLXgge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQ7XG4gIH1cblxuICAuY2VsbCB7XG4gICAgQGluY2x1ZGUgeHktY2VsbChmdWxsLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuXG4gICAgJi5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcbiAgICB9XG5cbiAgICAmLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgfVxuICAuZ3JpZC14IHtcbiAgICA+IC5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF1dG8gd2lkdGhcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzICYgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzEwMjQ0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgIC5ncmlkLXgge1xuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIjtcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXG4gIC5ncmlkLW1hcmdpbi14Om5vdCguZ3JpZC14KSA+IC5jZWxsIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xuICA+IC4jeyRwcmVmaXh9YXV0byB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcblxuICAgID4gI3skY2xhc3NuYW1lfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xuKXtcbiAgI3skd3JhcHBpbmctc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgfVxuXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jZWxsIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgLy8gZm9yIGFsbCBwcmlvciBicmVha3BvaW50cy5cbiAgICAgIC8vIEFzIHRoZWlyIGd1dHRlciBpcyBkZWZpbmVkIHdpdGggdGhlaXIgd2lkdGgvaGVpZ2h0LCBldmVuIGJyZWFrcG9pbnQgd2l0aG91dCBhIG5ldyBtYXJnaW4gbXVzdCBiZVxuICAgICAgLy8gZ2VuZXJhdGVkIHRvIG5vdCBoYXZpbmcgdGhlaXIgd2lkdGgvaGVpZ2h0IG92ZXJyaWRlZCBieSByZS1hZGp1c3RlZCBzbWFsbGVyIGJyZWFrcG9pbnRzLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGJwLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIGdyaWRzIHdpdGhpbiBgZ3JpZC1jb250YWluZXIvZ3JpZC1jb250YWluZXIuZmx1aWRgXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbGxhcHNlIGNsYXNzZXNcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE9mZnNldCBjbGFzc2VzXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBWZXJ0aWNhbCBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgLy8gQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgLy8gICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC5ncmlkLXkge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQodmVydGljYWwsIGZhbHNlKTtcblxuXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XG4gICAgfVxuXG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyBhbmQgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIjtcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICAvLyBSZXNwb25zaXZlIFwiYXV0b1wiIG1vZGlmaWVyXG4gICAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xuICAgICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcbiAgICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgICAgPiAuY2VsbCB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICB9XG5cbn1cblxuQG1peGluIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZDogdHJ1ZSwgJG1hcmdpbi1ncmlkOiB0cnVlKSB7XG4gIC8vIEZyYW1lZCBncmlkIHN0eWxlc1xuICAuZ3JpZC1mcmFtZSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcbiAgfVxuXG4gIC5jZWxsIC5ncmlkLWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgfVxuXG4gIC5jZWxsLWJsb2NrIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gIH1cblxuICAuY2VsbC1ibG9jay15IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICB9XG5cblxuICAuY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XG4gIH1cblxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcblxuICAgIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICAgIH1cblxuICAgIC5jZWxsIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2sge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2steSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdmVydGljYWwtZ3JpZCB7XG4gICAgLmdyaWQteSB7XG4gICAgICAmLmdyaWQtZnJhbWUge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAmLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgLmNlbGwge1xuICAgICAgLmdyaWQteS5ncmlkLWZyYW1lIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAuZ3JpZC15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKTtcbiAgICAuZ3JpZC1mcmFtZS5ncmlkLW1hcmdpbi15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkaW5jbHVkZS1iYXNlOiBmYWxzZSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgIC5ncmlkLW1hcmdpbi15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5hbCBjbGFzc2VzXG5AbWl4aW4gZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXMoXG4gICRiYXNlLWdyaWQ6IHRydWUsXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZSxcbiAgJGJsb2NrLWdyaWQ6IHRydWUsXG4gICRjb2xsYXBzZTogdHJ1ZSxcbiAgJG9mZnNldDogdHJ1ZSxcbiAgJHZlcnRpY2FsLWdyaWQ6IHRydWUsXG4gICRmcmFtZS1ncmlkOiB0cnVlXG4pIHtcblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIEBpZigkYmFzZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktYmFzZS1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIE1hcmdpbiBncmlkXG4gIEBpZigkbWFyZ2luLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBQYWRkaW5nIGdyaWRcbiAgQGlmKCRwYWRkaW5nLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZFxuICBAaWYoJGJsb2NrLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIC8vIENvbGxhcHNlIGd1dHRlcnNcbiAgQGlmKCRjb2xsYXBzZSkge1xuICAgIEBpbmNsdWRlIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gT2Zmc2V0IGd1dHRlcnNcbiAgQGlmKCRvZmZzZXQpIHtcbiAgICBAaW5jbHVkZSB4eS1vZmZzZXQtY2VsbC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBncmlkXG4gIEBpZigkdmVydGljYWwtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgQGlmICgkZnJhbWUtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZCwgJG1hcmdpbi1ncmlkKVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uXG4vLy8vXG5cbi8vLyBGb250IGZhbWlseSBmb3IgYnV0dG9uIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEZvbnRcbiRidXR0b24tZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBmb3IgYnV0dG9uIGVsZW1lbnRzLlxuLy8vIElnbm9yZWQgaWYgbnVsbCAoZGVmYXVsdClcbi8vLyBAdHlwZSBGb250LVdlaWdodFxuJGJ1dHRvbi1mb250LXdlaWdodDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmlsbCBmb3IgYnV0dG9ucy4gQ2FuIGVpdGhlciBiZSBgc29saWRgIG9yIGBob2xsb3dgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIGZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBidXR0b25zLCB0cmFuc3BhcmVudCBieSBkZWZhdWx0XG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1ib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciB3aWR0aCBmb3IgaG9sbG93IG91dGxpbmUgYnV0dG9uc1xuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tc2l6ZXM6IChcbiAgdGlueTogMC42cmVtLFxuICBzbWFsbDogMC43NXJlbSxcbiAgZGVmYXVsdDogMC45cmVtLFxuICBsYXJnZTogMS4yNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIG9wYWNpdHkgZm9yIGEgZGlzYWJsZWQgYnV0dG9uLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogLTIwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgaG9sbG93IGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCUgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsOiBmbGlwIGZyb20gbWFyZ2luLXJpZ2h0IHRvIG1hcmdpbi1sZWZ0IGZvciBkZWZhdWx0c1xuQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAkYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xufVxuXG4vLy8gdHJhbnNpdGlvbnMgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIEFkZGl0aW9uYWwgcmVzcG9uc2l2ZSBjbGFzc2VzIGZvciAuZXhwYW5kZWRcbi8vLyBAdHlwZSBCb29sZWFuXG4kYnV0dG9uLXJlc3BvbnNpdmUtZXhwYW5kZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUT0RPOiBEb2N1bWVudCBidXR0b24tYmFzZSgpIG1peGluXG5AbWl4aW4gYnV0dG9uLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcblxuICBAaWYgKHR5cGUtb2YoJGJ1dHRvbi1wYWRkaW5nKSA9PSAnbWFwJykge1xuICAgIEBlYWNoICRzaXplLCAkcGFkZGluZyBpbiAkYnV0dG9uLXBhZGRpbmcge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBhZGRpbmc6ICRidXR0b24tcGFkZGluZztcbiAgfVxuXG4gIGJvcmRlcjogJGJ1dHRvbi1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICB0cmFuc2l0aW9uOiAkYnV0dG9uLXRyYW5zaXRpb247XG4gIGZvbnQtZmFtaWx5OiAkYnV0dG9uLWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG4gIGZvbnQtd2VpZ2h0OiAkYnV0dG9uLWZvbnQtd2VpZ2h0O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLy8vIEV4cGFuZHMgYSBidXR0b24gdG8gbWFrZSBpdCBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbdHJ1ZV0gLSBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB0aGUgZXhwYW5kIGJlaGF2aW9yLiBTZXQgdG8gYGZhbHNlYCB0byByZXZlcnNlIHRoaXMgYmVoYXZpb3IuXG5AbWl4aW4gYnV0dG9uLWV4cGFuZCgkZXhwYW5kOiB0cnVlKSB7XG4gIEBpZiAkZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGhvbGxvdyBvciBjbGVhciBidXR0b24gZmlsbGluZyBhY2NvcmRpbmcgdG8gYCRmaWxsYC5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1maWxsLXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGZpbGwgWyRidXR0b24tZmlsbF0gLSBUeXBlIG9mIGZpbGxpbmcgYmV0d2VlbiBgaG9sbG93YCBhbmQgYGNsZWFyYC4gYHNvbGlkYCBoYXMgbm8gZWZmZWN0cy5cbkBtaXhpbiBidXR0b24tZmlsbChcbiAgJGZpbGw6ICRidXR0b24tZmlsbFxuKSB7XG4gIEBpZiAkZmlsbCA9PSBob2xsb3cge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gIH1cbiAgQGVsc2UgaWYgJGZpbGwgPT0gY2xlYXIge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1jbGVhcjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlcyBvZiBhIHNvbGlkL2hvbGxvdy9jbGVhciBidXR0b24gZmlsbGluZyBhY2NvcmRpbmcgdG8gYCRmaWxsYC5cbi8vLyBTZWUgbWl4aW5zIGBidXR0b24tc3R5bGVgLCBgYnV0dG9uLWhvbGxvdy1zdHlsZWAgYW5kIGBidXR0b24tY2xlYXItc3R5bGVgIGZvciBlZmZlY3RzIG9mIHZpc3VhbCBzdHlsaW5nIHBhcmFtZXRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZmlsbCBbJGJ1dHRvbi1maWxsXSAtIFR5cGUgb2YgZmlsbGluZyBiZXR3ZWVuIGBob2xsb3dgIGFuZCBgY2xlYXJgLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gLVxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gLVxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSAtXG5AbWl4aW4gYnV0dG9uLWZpbGwtc3R5bGUoXG4gICRmaWxsOiAkYnV0dG9uLWZpbGwsXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvclxuKSB7XG4gIEBpZiAkZmlsbCA9PSBzb2xpZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcbiAgfVxuICBAZWxzZSBpZiAkZmlsbCA9PSBob2xsb3cge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG4gIEBlbHNlIGlmICRmaWxsID09IGNsZWFyIHtcbiAgICBAaW5jbHVkZSBidXR0b24tY2xlYXItc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuQG1peGluIGJ1dHRvbi1zdHlsZShcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6ICRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3Ncbikge1xuICBAaWYgJGNvbG9yID09IGF1dG8ge1xuICAgICRjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRidXR0b24tY29sb3IsICRidXR0b24tY29sb3ItYWx0KSk7XG4gIH1cblxuICBAaWYgJGJhY2tncm91bmQtaG92ZXIgPT0gYXV0byB7XG4gICAgJGJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRiYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3MpO1xuICB9XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGhvbGxvdyBidXR0b24uXG4vLy8gU2VlIG1peGluIGBidXR0b24taG9sbG93LXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xuICAmLCAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGhvbGxvdyBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWJhY2tncm91bmRdIC0gVGV4dCBhbmQgYm9yZGVyIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGhvdmVyLWxpZ2h0bmVzcyBbJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXSAtIENvbG9yIGxpZ2h0bmVzcyBvbiBob3Zlci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYm9yZGVyLXdpZHRoIFskYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhdIC0gQm9yZGVyIHdpZHRoIG9mIHRoZSBidXR0b24uXG5AbWl4aW4gYnV0dG9uLWhvbGxvdy1zdHlsZShcbiAgJGNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRob3Zlci1saWdodG5lc3M6ICRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzcyxcbiAgJGJvcmRlci13aWR0aDogJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXG4pIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xuXG4gIC8vIERlZmF1bHQgYW5kIGRpc2FibGVkIHN0YXRlc1xuICAmLFxuICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSxcbiAgJi5kaXNhYmxlZDpob3ZlciwgJltkaXNhYmxlZF06aG92ZXIsXG4gICYuZGlzYWJsZWQ6Zm9jdXMsICZbZGlzYWJsZWRdOmZvY3VzIHtcbiAgICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGNvbG9yO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGNsZWFyIGJ1dHRvbi5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1jbGVhci1zdHlsZWAgZm9yIHRoZSBmaWxsaW5nIHN0eWxlcy5cbkBtaXhpbiBidXR0b24tY2xlYXIge1xuICAmLCAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBjbGVhciBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWJhY2tncm91bmRdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRob3Zlci1saWdodG5lc3MgWyRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzc10gLSBDb2xvciBsaWdodG5lc3Mgb24gaG92ZXIuXG5AbWl4aW4gYnV0dG9uLWNsZWFyLXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXG4pIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xuXG4gIC8vIERlZmF1bHQgYW5kIGRpc2FibGVkIHN0YXRlc1xuICAmLFxuICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSxcbiAgJi5kaXNhYmxlZDpob3ZlciwgJltkaXNhYmxlZF06aG92ZXIsXG4gICYuZGlzYWJsZWQ6Zm9jdXMsICZbZGlzYWJsZWRdOmZvY3VzIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBkaXNhYmxlZCBzdHlsZXMgdG8gYSBidXR0b24gYnkgZmFkaW5nIHRoZSBlbGVtZW50IGFuZCByZXNldGluZyB0aGUgY3Vyc29yLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3BhY2l0eSBbJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkXSAtIE9wYWNpdHkgb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24tZGlzYWJsZWQoXG4gICRvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWRcbikge1xuICBvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8vLyBBZGRzIGEgZHJvcGRvd24gYXJyb3cgdG8gYSBidXR0b24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIFswLjRlbV0gLSBTaXplIG9mIHRoZSBhcnJvdy4gV2UgcmVjb21tZW5kIHVzaW5nIGFuIGBlbWAgdmFsdWUgc28gdGhlIHRyaWFuZ2xlIHNjYWxlcyB3aGVuIHVzZWQgaW5zaWRlIGRpZmZlcmVudCBzaXplcyBvZiBidXR0b25zLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbd2hpdGVdIC0gQ29sb3Igb2YgdGhlIGFycm93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb2Zmc2V0IFskYnV0dG9uLXBhZGRpbmddIC0gRGlzdGFuY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0IG9mIHRoZSBidXR0b24uIERlZmF1bHRzIHRvIHdoYXRldmVyIHRoZSByaWdodCBwYWRkaW5nIG9mIGEgYnV0dG9uIGlzLlxuQG1peGluIGJ1dHRvbi1kcm9wZG93bihcbiAgJHNpemU6IDAuNGVtLFxuICAkY29sb3I6ICR3aGl0ZSxcbiAgJG9mZnNldDogZ2V0LXNpZGUoJGJ1dHRvbi1wYWRkaW5nLCByaWdodClcbikge1xuICAmOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRzaXplLCAkY29sb3IsIGRvd24pO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDAuNGVtOyAvLyBBbGlnbnMgdGhlIGFycm93IHdpdGggdGhlIHRleHQgb2YgdGhlIGJ1dHRvblxuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtcmlnaHR9O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRvZmZzZXQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgYWxsIHN0eWxlcyBmb3IgYSBidXR0b24uIEZvciBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciBzdHlsZXMsIHVzZSB0aGUgaW5kaXZpZHVhbCBidXR0b24gbWl4aW5zLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbZmFsc2VdIC0gU2V0IHRvIGB0cnVlYCB0byBtYWtlIHRoZSBidXR0b24gZnVsbC13aWR0aC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3R5bGUgW3NvbGlkXSAtIFNldCB0byBgaG9sbG93YCB0byBjcmVhdGUgYSBob2xsb3cgYnV0dG9uLiBUaGUgY29sb3IgZGVmaW5lZCBpbiBgJGJhY2tncm91bmRgIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJpbWFyeSBjb2xvciBvZiB0aGUgYnV0dG9uLlxuQG1peGluIGJ1dHRvbihcbiAgJGV4cGFuZDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvcixcbiAgJHN0eWxlOiAkYnV0dG9uLWZpbGxcbikge1xuICBAaW5jbHVkZSBidXR0b24tYmFzZTtcbiAgQGluY2x1ZGUgYnV0dG9uLWZpbGwoJHN0eWxlKTtcbiAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJHN0eWxlLCAkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtaG92ZXIsICRjb2xvcik7XG5cbiAgQGlmICRleHBhbmQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uIHtcbiAgLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uKCRzdHlsZTogbm9uZSk7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9IHtcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5leHBhbmRlZCB7IEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7IH1cblxuICAgIEBpZiAkYnV0dG9uLXJlc3BvbnNpdmUtZXhwYW5kZWQge1xuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0gb25seSkge1xuICAgICAgICAgICYuI3skc2l6ZX0tb25seS1leHBhbmRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0gZG93bikge1xuICAgICAgICAgICAgJi4jeyRzaXplfS1kb3duLWV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9KSB7XG4gICAgICAgICAgICAmLiN7JHNpemV9LWV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb2xpZCwgaG9sbG93ICYgY2xlYXIgc3R5bGVzXG4gICAgQGVhY2ggJGZpbGxpbmcgaW4gKHNvbGlkIGhvbGxvdyBjbGVhcikge1xuICAgICAgJHNlbGVjdG9yOiBpZigkYnV0dG9uLWZpbGwgPT0gJGZpbGxpbmcsIG51bGwsICcuI3skZmlsbGluZ30nKTtcblxuICAgICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsKCRmaWxsaW5nKTtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcpO1xuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nLCAkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRpc2FibGVkO1xuICAgIH1cblxuICAgIC8vIERyb3Bkb3duIGFycm93XG4gICAgJi5kcm9wZG93biB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZHJvcGRvd247XG5cbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgPT0gaG9sbG93IHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmhvbGxvdywgJi5jbGVhciB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCdXR0b24gd2l0aCBkcm9wZG93biBhcnJvdyBvbmx5XG4gICAgJi5hcnJvdy1vbmx5OjphZnRlciB7XG4gICAgICB0b3A6IC0wLjFlbTtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB9XG4gIH1cblxuICBhLmJ1dHRvbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uLWdyb3VwXG4vLy8vXG5cbi8vLyBNYXJnaW4gZm9yIGJ1dHRvbiBncm91cHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHggIWRlZmF1bHQ7XG5cbi8vLyBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbicgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIG51bWJlciBvZiBidXR0b25zIHRoYXQgY2FuIGJlIGluIGFuIGV2ZW4td2lkdGggYnV0dG9uIGdyb3VwLiAoT25seSBuZWVkZWQgd2hlbiAkZ2xvYmFsLWZsZXhib3g6IGZhbHNlOylcbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2ICFkZWZhdWx0O1xuXG4vLy8gRGV0ZXJtaW5lcyBpZiAkYnV0dG9uLXJhZGl1cyBpcyBhcHBsaWVkIHRvIGVhY2ggYnV0dG9uIG9yIHRoZSBidXR0b24gZ3JvdXAgYXMgYSB3aG9sZS4gVXNlICRnbG9iYWwtcmFkaXVzIGluIF9zZXR0aW5ncy5zY3NzIHRvIGNoYW5nZSByYWRpdXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQWRkIHN0eWxlcyBmb3IgYSBidXR0b24gZ3JvdXAgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY2hpbGQtc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2luZyBbJGJ1dHRvbmdyb3VwLXNwYWNpbmddIC0gU3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwKFxuICAkY2hpbGQtc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJHNwYWNpbmc6ICRidXR0b25ncm91cC1zcGFjaW5nXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi1ib3R0b206ICRidXR0b25ncm91cC1tYXJnaW47XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIERpc2FibGUgY2xlYXJmaXhcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgfVxuXG4gICN7JGNoaWxkLXNlbGVjdG9yfSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gTWFrZSBidXR0b25zIGJvbmRlZCB3aXRob3V0IGdhcCBiZXR3ZWVuIHRoZW0uIEJvcmRlcnMgYmV0d2VlbiBidXR0b25zIGFyZSBtZXJnZWRcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtbm8tZ2FwcyhcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRib3JkZXItd2lkdGg6ICRidXR0b24taG9sbG93LWJvcmRlci13aWR0aFxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IHJlbS1jYWxjKC0kYm9yZGVyLXdpZHRoKTtcblxuICAgICsgI3skc2VsZWN0b3J9IHtcbiAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtd2lkdGggYnV0dG9uIGdyb3VwLCBtYWtpbmcgZWFjaCBidXR0b24gZXF1YWwgd2lkdGguXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtZXhwYW5kKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJHNwYWNpbmc6ICRidXR0b25ncm91cC1zcGFjaW5nLFxuICAkY291bnQ6IG51bGxcbikge1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IC0kc3BhY2luZztcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyAvLyBEaXNhYmxlIGNsZWFyZml4XG4gICAgfVxuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIE9uZSBjaGlsZFxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUd28gb3IgbW9yZSBjaGlsZHJlZW5cbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXgge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKGRpdmlkZSgxLCAkaSkpfSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nICogLSRidXR0b25ncm91cC1leHBhbmQtbWF4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gU3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgQGlmIG5vdCAkYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2gge1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci10b3AtI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC11bnN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwIHtcbiAgLmJ1dHRvbi1ncm91cCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFdmVuLXdpZHRoIEdyb3VwXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kO1xuICAgIH1cblxuICAgIC8vIFNvbGlkLCBob2xsb3cgJiBjbGVhciBzdHlsZXNcbiAgICBAZWFjaCAkZmlsbGluZyBpbiAoc29saWQgaG9sbG93IGNsZWFyKSB7XG4gICAgICAkYmFzZS1zZWxlY3RvcjogaWYoJGJ1dHRvbi1maWxsID09ICRmaWxsaW5nLCBudWxsLCAnLiN7JGZpbGxpbmd9Jyk7XG5cbiAgICAgICYjeyRiYXNlLXNlbGVjdG9yfSB7XG4gICAgICAgIC8vIERvIG5vdCBnZW5lcmF0ZSBidXR0b24gYmFzZSBzdHlsZXMgZm9yIHRoZSBkZWZhdWx0IGZpbGxpbmdcbiAgICAgICAgQGlmKCRidXR0b24tZmlsbCAhPSAkZmlsbGluZykge1xuICAgICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbCgkZmlsbGluZyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgIEBpZigkYnV0dG9uLWZpbGwgIT0gJGZpbGxpbmcpIHtcbiAgICAgICAgICAgICRpbmRpdmlkdWFsLXNlbGVjdG9yOiAnICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfS4jeyRuYW1lfSc7XG4gICAgICAgICAgICAmLiN7JG5hbWV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSwgJiN7JGluZGl2aWR1YWwtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcsICRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcsICRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICAmLm5vLWdhcHMge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLW5vLWdhcHM7XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLFxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwsXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXN0YWNrO1xuXG4gICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbC5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNsb3NlLWJ1dHRvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLiBUaGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGByaWdodGAgb3IgYGxlZnRgLCBhbmQgdGhlIHNlY29uZCB2YWx1ZSBzaG91bGQgYmUgYHRvcGAgb3IgYGJvdHRvbWAuXG4vLy8gQHR5cGUgTGlzdFxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlclxuJGNsb3NlYnV0dG9uLXotaW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIHNpemUgdG8gdXNlIGFzIGRlZmF1bHRcbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1zaXplXG4vLy8gQHNlZSAkY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWxcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWxcbiRjbG9zZWJ1dHRvbi1kZWZhdWx0LXNpemU6IG1lZGl1bSAhZGVmYXVsdDtcblxuLy8vIFJpZ2h0IChvciBsZWZ0KSBvZmZzZXQocykgZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlcnxNYXBcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxuICBzbWFsbDogMC42NnJlbSxcbiAgbWVkaXVtOiAxcmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRvcCAob3IgYm90dG9tKSBvZmZzZXQocykgZm9yIGEgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIE51bWJlcnxNYXBcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IChcbiAgc21hbGw6IDAuMzNlbSxcbiAgbWVkaXVtOiAwLjVyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gU2l6ZShzKSBvZiB0aGUgY2xvc2UgYnV0dG9uLiBVc2VkIHRvIGdlbmVyYXRlIHNpemluZyBtb2RpZmllcnMuXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24gd2hlbiBiZWluZyBob3ZlcmVkIG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcblxuXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHNpemUgbmFtZSBleGlzdHMgaW4gdGhlIHZhbHVlIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkdmFsdWUsICRzaXplKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXG5AbWl4aW4gY2xvc2UtYnV0dG9uLXNpemUoJHNpemUpIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcbiAgZm9udC1zaXplOiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1zaXplLCAkc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJGNsb3NlYnV0dG9uLXotaW5kZXg7XG4gIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3I7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbiB7XG4gIC5jbG9zZS1idXR0b24ge1xuICAgIC8vIFVzZSBieSBkZWZhdWx0IHRoZSBwbGFjZWhvbGRlciBvZiB0aGUgZGVmYXVsdCBzaXplXG4gICAgQGV4dGVuZCAlemYtY2xvc2UtYnV0dG9uLS0jeyRjbG9zZWJ1dHRvbi1kZWZhdWx0LXNpemV9O1xuXG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgLy8gR2VuZXJhdGUgYSBwbGFjZWhvbGRlciBhbmQgYSBjbGFzcyBmb3IgZWFjaCBzaXplXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRjbG9zZWJ1dHRvbi1zaXplIHtcbiAgICAgIEBhdC1yb290IHtcbiAgICAgICAgJXpmLWNsb3NlLWJ1dHRvbi0tI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKCRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGV4dGVuZCAlemYtY2xvc2UtYnV0dG9uLS0jeyRuYW1lfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBsYWJlbFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcGFkZGluZzogMC4zMzMzM3JlbSAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBiYXNlIHN0eWxlcyBmb3IgYSBsYWJlbC5cbkBtaXhpbiBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogJGxhYmVsLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJGxhYmVsLXJhZGl1cztcblxuICBmb250LXNpemU6ICRsYWJlbC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWxhYmVsIHtcbiAgLmxhYmVsIHtcbiAgICBAaW5jbHVkZSBsYWJlbDtcblxuICAgIGJhY2tncm91bmQ6ICRsYWJlbC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRsYWJlbC1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRsYWJlbC1jb2xvciwgJGxhYmVsLWNvbG9yLWFsdCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiBwcm9ncmVzcy1jb250YWluZXIge1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1iYXIge1xuICAvLyBQcm9ncmVzcyBiYXJcbiAgLnByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1jb250YWluZXI7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC5wcm9ncmVzcy1tZXRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXJcbiAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlcjtcbiAgfVxuXG4gIC8vIElubmVyIG1ldGVyIHRleHRcbiAgLnByb2dyZXNzLW1ldGVyLXRleHQge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyLXRleHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gW1RPRE9dIENoZWNrIGhvdyBwbHVnaW4gY29uZmlybXMgZGlzYWJsZWQgb3IgdmVydGljYWwgc3RhdHVzXG4vLyBbVE9ET10gQ2hlY2sgaWYgdHJhbnNpdGlvbjogYWxsOyBpcyBuZWNlc3NhcnlcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgc2xpZGVyIHdpZHRoIG9mIGEgdmVydGljYWwgc2xpZGVyLiAoRG9lc24ndCBhcHBseSB0byB0aGUgbmF0aXZlIHNsaWRlci4pXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnRpZXMgdG8gYXBwbHkgdG8gdGhlIHNsaWRlciBoYW5kbGUgYW5kIGZpbGwuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHNsaWRlcnMuXG5AbWl4aW4gc2xpZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciBhY3RpdmUgZmlsbCBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItZmlsbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc2xpZGVyLXRyYW5zaXRpb247XG5cbiAgJi5pcy1kcmFnZ2luZyB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDBzIGxpbmVhcjtcbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRoZSBzbGlkZXIgaGFuZGxlcy5cbkBtaXhpbiBzbGlkZXItaGFuZGxlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG4gIGN1cnNvcjogZ3JhYjtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlci1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuQG1peGluIHNsaWRlci12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzbGlkZXItd2lkdGgtdmVydGljYWw7XG4gIGhlaWdodDogMTIuNXJlbTtcbiAgbWFyZ2luOiAwIDEuMjVyZW07XG4gIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xuXG4gIC5zbGlkZXItZmlsbCB7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zbGlkZXIge1xuICAvLyBDb250YWluZXJcbiAgLnNsaWRlciB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIEZpbGwgYXJlYVxuICAuc2xpZGVyLWZpbGwge1xuICAgIEBpbmNsdWRlIHNsaWRlci1maWxsO1xuICB9XG5cbiAgLy8gRHJhZ2dhYmxlIGhhbmRsZVxuICAuc2xpZGVyLWhhbmRsZSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWhhbmRsZTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlXG4gIC5zbGlkZXIuZGlzYWJsZWQsXG4gIC5zbGlkZXJbZGlzYWJsZWRdIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBzbGlkZXJcbiAgLnNsaWRlci52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gUlRMIHN1cHBvcnRcbiAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsIHtcbiAgICAuc2xpZGVyOm5vdCgudmVydGljYWwpIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHN3aXRjaFxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnRpbnkgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2hcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBhIGRpc2FibGVkIHN3aXRjaC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtb3BhY2l0eS1kaXNhYmxlZDogMC41ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIGZvciBhIGRpc2FibGVkIHN3aXRjaC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcblxuLy8gbWFrZSB0aGVtIHZhcmlhYmxlc1xuLy8gYXNrIGFib3V0IGFjY2Vzc2liaWxpdHkgb24gbGFiZWxcbi8vIGNoYW5nZSBjbGFzcyBuYW1lIGZvciB0ZXh0XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgY29udGFpbmVyIGNsYXNzLlxuQG1peGluIHN3aXRjaC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206ICRzd2l0Y2gtbWFyZ2luO1xuICBvdXRsaW5lOiAwO1xuXG4gIC8vIFRoZXNlIHByb3BlcnRpZXMgY2FzY2FkZSBkb3duIHRvIHRoZSBzd2l0Y2ggdGV4dFxuICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggaW5wdXQuIEFwcGx5IHRoaXMgdG8gYW4gYDxpbnB1dD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIHBhZGRsZSBvZiBhIHN3aXRjaC4gQXBwbHkgdGhpcyB0byBhIGA8bGFiZWw+YCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXBhZGRsZSB7XG4gICRzd2l0Y2gtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0ICogMjtcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkc3dpdGNoLXBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJHN3aXRjaC13aWR0aDtcbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuXG4gIC8vIFJlc2V0dGluZyB0aGVzZSA8bGFiZWw+IHByZXNldHMgc28gdHlwZSBzdHlsZXMgY2FzY2FkZSBkb3duXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHNwZWNpZmljaXR5XG4gIGlucHV0ICsgJiB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gVGhlIHBhZGRsZSBpdHNlbGZcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcbiAgICAjeyRnbG9iYWwtbGVmdH06ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkcGFkZGxlLXdpZHRoO1xuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcGFkZGxlLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBDaGFuZ2UgdGhlIHZpc3VhbCBzdHlsZSB3aGVuIHRoZSBzd2l0Y2ggaXMgYWN0aXZlXG4gIGlucHV0OmNoZWNrZWQgfiAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5kaWNhdGUgYSBkaXNhYmxlZCBzd2l0Y2hcbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmIHtcbiAgICBjdXJzb3I6ICRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkO1xuICAgIG9wYWNpdHk6ICRzd2l0Y2gtb3BhY2l0eS1kaXNhYmxlZDtcbiAgfVxuXG4gIGlucHV0OmZvY3VzIH4gJiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB9XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhY3RpdmUvaW5hY3RpdmUgdGV4dCBpbnNpZGUgYSBzd2l0Y2guIEFwcGx5IHRoaXMgdG8gdGV4dCBlbGVtZW50cyBpbnNpZGUgdGhlIHN3aXRjaCBgPGxhYmVsPmAuXG5AbWl4aW4gc3dpdGNoLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1hY3RpdmUge1xuICAjeyRnbG9iYWwtbGVmdH06IDglO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluYWN0aXZlIHN0YXRlIHRleHQgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC10ZXh0LWluYWN0aXZlIHtcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMTUlO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHNpemUgb2YgYSBzd2l0Y2ggYnkgbW9kaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSBib2R5IGFuZCBwYWRkbGUuIEFwcGx5IHRoaXMgdG8gYSBzd2l0Y2ggY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZm9udC1zaXplIFsxcmVtXSAtIEZvbnQgc2l6ZSBvZiBsYWJlbCB0ZXh0IHdpdGhpbiB0aGUgc3dpdGNoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3dpdGNoLWhlaWdodCBbMnJlbV0gLSBIZWlnaHQgb2YgdGhlIHN3aXRjaCBib2R5LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGxlLW9mZnNldCBbMC4yNXJlbV0gLSBTcGFjaW5nIGJldHdlZW4gdGhlIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBzd2l0Y2ggYm9keS5cbkBtaXhpbiBzd2l0Y2gtc2l6ZShcbiAgJGZvbnQtc2l6ZTogMXJlbSxcbiAgJHN3aXRjaC1oZWlnaHQ6IDJyZW0sXG4gICRwYWRkbGUtb2Zmc2V0OiAwLjI1cmVtXG4pIHtcblxuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtaGVpZ2h0OiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHBhZGRsZS1vZmZzZXQ7XG5cbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgd2lkdGg6ICRzd2l0Y2gtd2lkdGg7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIH1cblxuICAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgIHRvcDogJHBhZGRsZS1vZmZzZXQ7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLW9mZnNldDtcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRwYWRkbGUtaGVpZ2h0O1xuICB9XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+IC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc3dpdGNoIHtcbiAgLy8gQ29udGFpbmVyIGNsYXNzXG4gIC5zd2l0Y2gge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgfVxuXG4gIC8vIDxpbnB1dD4gZWxlbWVudFxuICAuc3dpdGNoLWlucHV0IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtaW5wdXQ7XG4gIH1cblxuICAvLyA8bGFiZWw+IGVsZW1lbnRcbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1wYWRkbGU7XG4gIH1cblxuICAvLyBCYXNlIGxhYmVsIHRleHQgc3R5bGVzXG4gICVzd2l0Y2gtdGV4dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQ7XG4gIH1cblxuICAvLyBBY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcbiAgLnN3aXRjaC1hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWFjdGl2ZTtcbiAgfVxuXG4gIC8vIEluYWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtaW5hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWluYWN0aXZlO1xuICB9XG5cbiAgLy8gU3dpdGNoIHNpemVzXG4gIC5zd2l0Y2gudGlueSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTApLCAkc3dpdGNoLWhlaWdodC10aW55LCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG5cbiAgLnN3aXRjaC5zbWFsbCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTIpLCAkc3dpdGNoLWhlaWdodC1zbWFsbCwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2gubGFyZ2Uge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDE2KSwgJHN3aXRjaC1oZWlnaHQtbGFyZ2UsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYmxlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciB0YWJsZSBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlICAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgc3RyaXBlZCB0YWJsZSByb3dzIGFuZCB0aGUgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc3R5bGUgZm9yIHRhYmxlIGJvcmRlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYmxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RhbmRhcmQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0cmlwZWQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0YWJsZXMgYXJlIHN0cmlwZWQgYnkgZGVmYXVsdCBhbmQgYW4gLnVuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLiBJZiBgZmFsc2VgLCBhIC5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kdGFibGUtc3RyaXBlOiBldmVuICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKiAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvb3Rlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHN0YWNrZWQgdGFibGUgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUpIHtcbiAgdHIge1xuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXG4gICAgQGlmICRzdHJpcGUgPT0gZXZlbiB7XG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tOiAkdGFibGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsICRpcy1zdHJpcGVkOiAkdGFibGUtaXMtc3RyaXBlZCkge1xuICB0aGVhZCxcbiAgdGJvZHksXG4gIHRmb290IHtcbiAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDYXB0aW9uXG4gIGNhcHRpb24ge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICB9XG5cbiAgLy8gVGFibGUgaGVhZFxuICB0aGVhZCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWhlYWQtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWhlYWQtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGZvb3RcbiAgdGZvb3Qge1xuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1mb290LWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0YWJsZS1mb290LWZvbnQtY29sb3I7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkIGFuZCBmb290XG4gIHRoZWFkLFxuICB0Zm9vdCB7XG4gICAgLy8gUm93cyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgIHRyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8vIENlbGxzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICAgIHRleHQtYWxpZ246ICN7JGdsb2JhbC1sZWZ0fTtcbiAgICB9XG4gIH1cblxuICAvLyBUYWJsZSByb3dzXG4gIHRib2R5IHtcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIHN0cmlwZWRcbiAgQGlmICRpcy1zdHJpcGVkID09IHRydWUge1xuICAgIHRib2R5IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZSk7XG4gICAgfVxuXG4gICAgJi51bnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGFibGVzIGFyZSBub3Qgc3RyaXBlZFxuICBAZWxzZSBpZiAkaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXVuc3RyaXBlKCk7XG4gICAgfVxuXG4gICAgJi5zdHJpcGVkIHtcbiAgICAgIHRib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciB0YWJsZXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RyaXBlIFskdGFibGUtc3RyaXBlXSAtIFVzZXMga2V5d29yZHMgZXZlbiwgb2RkLCBvciBub25lIHRvIGRhcmtlbiByb3dzIG9mIHRoZSB0YWJsZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZXZlbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0IFtmYWxzZV0gLSBOZWVkZWQgaWYgeW91IG9ubHkgd2FudCB0byBhcHBseSB0aGlzIHRvIGEgc3BlY2lmaWMgdGFibGUuXG5AbWl4aW4gdGFibGUoXG4gICRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsXG4gICRuZXN0OiBmYWxzZVxuKSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbiAgQGlmICRuZXN0IHtcbiAgICBAaW5jbHVkZSAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGUpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgYWJpbGl0eSB0byBob3Jpem9udGFsbHkgc2Nyb2xsIHRoZSB0YWJsZSB3aGVuIHRoZSBjb250ZW50IG92ZXJmbG93cyBob3Jpem9udGFsbHkuXG5AbWl4aW4gdGFibGUtc2Nyb2xsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4vLy8gU2xpZ2h0bHkgZGFya2VucyB0aGUgdGFibGUgcm93cyBvbiBob3Zlci5cbkBtaXhpbiB0YWJsZS1ob3ZlciB7XG4gIHRoZWFkIHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGhlYWRlciByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWhlYWQtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGZvb3RlciByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWZvb3Qtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIG5vbi1zdHJpcGVkIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSB0cnVlIHtcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XG4gICAgICAmOm5vdCgudW5zdHJpcGVkKSB0cjpudGgtb2YtdHlwZShldmVuKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGVsc2UgaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZSBpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN0YWNrZWQgdGFibGUuIFVzZWZ1bCBmb3Igc21hbGwtc2NyZWVuIGxheW91dHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaGVhZGVyIFskc2hvdy1oZWFkZXItZm9yLXN0YWNrZWRdIC0gU2hvdyB0aGUgZmlyc3QgdGggb2YgaGVhZGVyIHdoZW4gc3RhY2tlZC5cbkBtaXhpbiB0YWJsZS1zdGFjaygkaGVhZGVyOiAkc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQpIHtcbiAgQGlmICRoZWFkZXIge1xuICAgIHRoZWFkIHtcbiAgICAgIHRoIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgdHIsXG4gIHRoLFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICB0ZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJsZSgkbmVzdDogZmFsc2UpIHtcbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHRhYmxlKCRuZXN0OiAkbmVzdCk7XG4gIH1cblxuICB0YWJsZS5zdGFjayB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGUtc3RhY2stYnJlYWtwb2ludCBkb3duKSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZS1zdGFjaztcbiAgICB9XG4gIH1cblxuICB0YWJsZS5zY3JvbGwge1xuICAgIEBpbmNsdWRlIHRhYmxlLXNjcm9sbDtcbiAgfVxuXG4gIHRhYmxlLmhvdmVyIHtcbiAgICBAaW5jbHVkZSB0YWJsZS1ob3ZlcjtcbiAgfVxuXG4gIC50YWJsZS1zY3JvbGwge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJhZGdlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRlIHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXG4vLy8gQHR5cGUgTWFwXG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCBvZiBhIGJhZGdlLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLW1pbndpZHRoOiAyLjFlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIGJhZGdlLlxuQG1peGluIGJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtaW4td2lkdGg6ICRiYWRnZS1taW53aWR0aDtcbiAgcGFkZGluZzogJGJhZGdlLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1iYWRnZSB7XG4gIC5iYWRnZSB7XG4gICAgQGluY2x1ZGUgYmFkZ2U7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYmFkZ2UtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGJhZGdlLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYmFkZ2UtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkYmFkZ2UtY29sb3IsICRiYWRnZS1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVhZGNydW1ic1xuLy8vL1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBhY3RpdmUgYnJlYWRjcnVtYiBsaW5rLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBPcGFjaXR5IG9mIGRpc2FibGVkIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnJlYWRjcnVtYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgbWFrZXMgYnJlYWRjcnVtYiBsaW5rcyB1cHBlcmNhc2UuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIGEgc2VwZXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoKSB7XG4gICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g7XG59XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLycgIWRlZmF1bHQ7XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yIGluIHJ0bCBtb2RlLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgICBmb250LXNpemU6ICRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvciB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2VwYXJhdG9yOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdsdHInLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbSwgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBtYXJnaW46IDAgJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgY29udGVudDogJHNlcGFyYXRvcjtcbiAgICAgICAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1icmVhZGNydW1icyB7XG4gIC5icmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgYnJlYWRjcnVtYnMtY29udGFpbmVyO1xuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FsbG91dFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgdmFsdWUgZm9yIGNhbGxvdXQgYmFja2dyb3VuZHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIENhbGxvdXQgcGFkZGluZ3MuXG4vLy8gQHR5cGUgTWFwXG4kY2FsbG91dC1zaXplczogKFxuICBzbWFsbDogMC41cmVtLFxuICBkZWZhdWx0OiAxcmVtLFxuICBsYXJnZTogM3JlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cywgaWYgdGhlIGNhbGxvdXQgaGFzIGEgZGFyayBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cyBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBbW91bnQgdG8gdGludCBsaW5rcyB1c2VkIHdpdGhpbiBjb2xvcmVkIHBhbmVscy4gU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuXG4vLy8gQHR5cGUgTnVtYmVyIHwgQm9vbGVhblxuJGNhbGxvdXQtbGluay10aW50OiAzMCUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYSBjYWxsb3V0LCBpbmNsdWRpbmcgcGFkZGluZyBhbmQgbWFyZ2luLlxuQG1peGluIGNhbGxvdXQtYmFzZSgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46ICRjYWxsb3V0LW1hcmdpbjtcbiAgcGFkZGluZzogbWFwLWdldCgkY2FsbG91dC1zaXplcywgZGVmYXVsdCk7XG5cbiAgYm9yZGVyOiAkY2FsbG91dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRjYWxsb3V0LXJhZGl1cztcblxuICAvLyBSZXNwZWN0IHRoZSBwYWRkaW5nLCBmb29sLlxuICA+IDpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHF1aWNrIHN0eWxlcyBmb3IgYSBjYWxsb3V0IHVzaW5nIGEgc2luZ2xlIGNvbG9yIGFzIGEgYmFzZWxpbmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0LXN0eWxlKCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICAkYmFja2dyb3VuZDogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGUpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRjYWxsb3V0LWZvbnQtY29sb3IsICRjYWxsb3V0LWZvbnQtY29sb3ItYWx0KSk7XG59XG5cbkBtaXhpbiBjYWxsb3V0LXNpemUoJHBhZGRpbmcpIHtcbiAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYWxsb3V0LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dCgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgQGluY2x1ZGUgY2FsbG91dC1iYXNlO1xuICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhbGxvdXQge1xuICAuY2FsbG91dCB7XG4gICAgQGluY2x1ZGUgY2FsbG91dDtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRzaXplLCAkcGFkZGluZyBpbiBtYXAtcmVtb3ZlKCRjYWxsb3V0LXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKCRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYXJkXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FyZHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZS5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY2FyZCBzaGFkb3cuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhcmQtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luLlxuLy8vIEB0eXBlIG51bWJlclxuJGNhcmQtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gZm9udCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiAtIEJvdHRvbSBtYXJnaW4gb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkYm9yZGVyIC0gQm9yZGVyIGFyb3VuZCB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYWRpdXMgLSBib3JkZXIgcmFkaXVzIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHNoYWRvdyAtIGJveCBzaGFkb3cgb2YgdGhlIGNhcmQuXG5AbWl4aW4gY2FyZC1jb250YWluZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRjYXJkLWZvbnQtY29sb3IsXG4gICRtYXJnaW46ICRjYXJkLW1hcmdpbi1ib3R0b20sXG4gICRib3JkZXI6ICRjYXJkLWJvcmRlcixcbiAgJHJhZGl1czogJGNhcmQtYm9yZGVyLXJhZGl1cyxcbiAgJHNoYWRvdzogJGNhcmQtc2hhZG93XG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuXG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGRpdmlkZXIuXG5AbWl4aW4gY2FyZC1kaXZpZGVyKFxuICAkYmFja2dyb3VuZDogJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kLFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIHNlY3Rpb24uXG5AbWl4aW4gY2FyZC1zZWN0aW9uKFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhcmQge1xuICAuY2FyZCB7XG4gICAgQGluY2x1ZGUgY2FyZC1jb250YWluZXI7XG4gIH1cblxuICAuY2FyZC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBjYXJkLWRpdmlkZXI7XG4gIH1cblxuICAuY2FyZC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBjYXJkLXNlY3Rpb247XG4gIH1cblxuICAvLyBGb3IgSUUgMTEgLSBGbGV4YnVnXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MvaXNzdWVzLzc1XG4gIC5jYXJkLWltYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93blxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGRyb3Bkb3duIHBhbmVzLiBFYWNoIHNpemUgaXMgYSBDU1MgY2xhc3MgeW91IGNhbiBhcHBseS5cbi8vLyBAdHlwZSBNYXBcbiRkcm9wZG93bi1zaXplczogKFxuICB0aW55OiAxMDBweCxcbiAgc21hbGw6IDIwMHB4LFxuICBsYXJnZTogNDAwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIGEgYmFzaWMgZHJvcGRvd24uXG5AbWl4aW4gZHJvcGRvd24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nO1xuXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmFja2dyb3VuZDtcblxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XG5cblxuICAvLyBBbGxvdyBhbiBpbnRlcm1pdHRlbnQgc3RhdGUgdG8gZG8gcG9zaXRpb25pbmcgYmVmb3JlIG1ha2luZyB2aXNpYmxlLlxuICAmLmlzLW9wZW5pbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJi5pcy1vcGVuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcbiAgLmRyb3Bkb3duLXBhbmUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWNvbnRhaW5lcjtcbiAgfVxuXG4gIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkZHJvcGRvd24tc2l6ZXMge1xuICAgIC5kcm9wZG93bi1wYW5lIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcGFnaW5hdGlvblxuLy8vL1xuXG4vLy8gRm9udCBzaXplIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFnaW5hdGlvbiBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCBtYXJnaW4gdG8gc2VwYXJhdGUgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBlbGxpcHNpcyBpbiBhIHBhZ2luYXRpb24gbWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3Ncbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXkgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgb24gbW9iaWxlIGV2ZW4gaWYgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGBmYWxzZWAuXG4vLy8gVGhpcyBwYXJhbWV0ZXIgd2lsbCBvbmx5IG92ZXJyaWRlIHRoZSB2aXNpYmlsaXR5IHNldHRpbmcgb2YgdGhlIGN1cnJlbnQgaXRlbSBmb3IgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7YCxcbi8vLyBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgdmlzaWJpbGl0eSB3aGVuIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgdHJ1ZWAuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFycm93cyBhcmUgYWRkZWQgdG8gdGhlIG5leHQgYW5kIHByZXZpb3VzIGxpbmtzIG9mIHBhZ2luYXRpb24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIHByZXZpb3VzIGFycm93IHdoZW4gYCRwYWdpbmF0aW9uLWFycm93c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFnaW5hdGlvbi1hcnJvdy1wcmV2aW91czogJ1xcMDBBQicgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgbmV4dCBhcnJvdyB3aGVuIGAkcGFnaW5hdGlvbi1hcnJvd3NgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhZ2luYXRpb24tYXJyb3ctbmV4dDogJ1xcMDBCQicgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwYWdpbmF0aW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWNvbnRhaW5lciAoXG4gICRtYXJnaW4tYm90dG9tOiAkcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tLFxuICAkZm9udC1zaXplOiAkcGFnaW5hdGlvbi1mb250LXNpemUsXG4gICRzcGFjaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmcsXG4gICRyYWRpdXM6ICRwYWdpbmF0aW9uLXJhZGl1cyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gIC8vIExpc3QgaXRlbVxuICBsaSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuXG4gICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtcyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICY6bGFzdC1jaGlsZCxcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtIHtcbiAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgbGlua3NcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBjdXJyZW50IHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRiYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50LFxuICAkY29sb3ItY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50XG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWN1cnJlbnQ7XG4gIGNvbG9yOiAkY29sb3ItY3VycmVudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgZGlzYWJsZWQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZFxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb2xvcjogJGNvbG9yO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gZWxsaXBzaXMgZm9yIHVzZSBpbiBhIHBhZ2luYXRpb24gbGlzdC5cbkBtaXhpbiBwYWdpbmF0aW9uLWVsbGlwc2lzIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvclxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb250ZW50OiAnXFwyMDI2JztcbiAgY29sb3I6ICRjb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcGFnaW5hdGlvbiB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWNvbnRhaW5lcjtcblxuICAgIC5jdXJyZW50IHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1jdXJyZW50O1xuICAgIH1cblxuICAgIC5kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLmVsbGlwc2lzOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWVsbGlwc2lzO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFnaW5hdGlvbi1hcnJvd3Mge1xuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzIGE6OmJlZm9yZSxcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cy5kaXNhYmxlZDo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjVyZW07XG4gICAgICBjb250ZW50OiAkcGFnaW5hdGlvbi1hcnJvdy1wcmV2aW91cztcbiAgICB9XG5cbiAgICAucGFnaW5hdGlvbi1uZXh0IGE6OmFmdGVyLFxuICAgIC5wYWdpbmF0aW9uLW5leHQuZGlzYWJsZWQ6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRwYWdpbmF0aW9uLWFycm93LW5leHQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9vbHRpcFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjdXJzb3Igb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBib3R0b20gb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBMaXN0XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4IHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLW1heC13aWR0aDogMTByZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoYXMtdGlwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xuICBjdXJzb3I6ICRoYXMtdGlwLWN1cnNvcjtcbn1cblxuQG1peGluIHRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIHotaW5kZXg6IDEyMDA7XG5cbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yO1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgJi5ib3R0b20ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XG4gICAgICBib3R0b206IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi50b3Age1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBkb3duKTtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmxlZnQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5yaWdodCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGxlZnQpO1xuICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi10b3A6OmJlZm9yZSB7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHRvcDogMTAlO1xuICB9XG5cbiAgJi5hbGlnbi1ib3R0b206OmJlZm9yZSB7XG4gICAgYm90dG9tOiAxMCU7XG4gICAgdG9wOiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1sZWZ0OjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwJTtcbiAgICByaWdodDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQ6OmJlZm9yZSB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogMTAlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvb2x0aXAge1xuICAuaGFzLXRpcCB7XG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcbiAgfVxuXG4gIC50b29sdGlwIHtcbiAgICBAaW5jbHVkZSB0b29sdGlwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWNjb3JkaW9uXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYW4gYWNjb3JkaW9uIGdyb3VwLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBwbHVzIGFuZCBtaW51cyBpY29ucyB0byB0aGUgc2lkZSBvZiBlYWNoIGFjY29yZGlvbiB0aXRsZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9uLXBsdXNtaW51czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBwbHVzIGljb24gd2hlbiBgJGFjY29yZGlvbi1wbHVzbWludXNgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJGFjY29yZGlvbi1wbHVzLWNvbnRlbnQ6ICdcXDAwMkInICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIG1pbnVzIGljb24gd2hlbiBgJGFjY29yZGlvbi1wbHVzbWludXNgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJGFjY29yZGlvbi1taW51cy1jb250ZW50OiAnXFwyMDEzJyAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBhY2NvcmRpb24gdGl0bGVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhbiBhY2NvcmRpb24gaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBhY2NvcmRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBnZXRzIGBkYXRhLWFjY29yZGlvbmAuXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRhaW5lciAoXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWJhY2tncm91bmRcbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gICZbZGlzYWJsZWRdIHtcbiAgICAuYWNjb3JkaW9uLXRpdGxlIHtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaXN0IGl0ZW0gd2l0aGluIGFuIGFjY29yZGlvbiB1bC5cbkBtaXhpbiBhY2NvcmRpb24taXRlbSB7XG4gICY6Zmlyc3QtY2hpbGQgPiA6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzIDAgMDtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCA+IDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgdGl0bGUgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpbmsgd2l0aGluIGFuIGFjY29yZGlvbiBpdGVtLlxuQG1peGluIGFjY29yZGlvbi10aXRsZSAoXG4gICRwYWRkaW5nOiAkYWNjb3JkaW9uLWl0ZW0tcGFkZGluZyxcbiAgJGZvbnQtc2l6ZTogJGFjY29yZGlvbi10aXRsZS1mb250LXNpemUsXG4gICRjb2xvcjogJGFjY29yZGlvbi1pdGVtLWNvbG9yLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcbikge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDA7XG5cbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICRjb2xvcjtcblxuICA6bGFzdC1jaGlsZDpub3QoLmlzLWFjdGl2ZSkgPiAmIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG5cbiAgQGlmICRhY2NvcmRpb24tcGx1c21pbnVzIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRhY2NvcmRpb24tcGx1cy1jb250ZW50O1xuICAgIH1cblxuICAgIC5pcy1hY3RpdmUgPiAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGFjY29yZGlvbi1taW51cy1jb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFjY29yZGlvbiBjb250ZW50LiBBcHBseSB0aGlzIHRvIHRoZSBjb250ZW50IHBhbmUgYmVsb3cgYW4gYWNjb3JkaW9uIGl0ZW0ncyB0aXRsZS5cbkBtaXhpbiBhY2NvcmRpb24tY29udGVudCAoXG4gICRwYWRkaW5nOiAkYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZyxcbiAgJGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcixcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRhY2NvcmRpb24tY29udGVudC1jb2xvclxuKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgY29sb3I6ICRjb2xvcjtcblxuICA6bGFzdC1jaGlsZCA+ICY6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24ge1xuICAuYWNjb3JkaW9uIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGFpbmVyO1xuICB9XG5cbiAgLmFjY29yZGlvbi1pdGVtIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24taXRlbTtcbiAgfVxuXG4gIC5hY2NvcmRpb24tdGl0bGUge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi10aXRsZTtcbiAgfVxuXG4gIC5hY2NvcmRpb24tY29udGVudCB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZWRpYS1vYmplY3Rcbi8vLy9cblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBtZWRpYSBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9uIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGltYWdlcyB3aXRoaW4gYSBtZWRpYSBvYmplY3QsIHdoZW4gdGhlIG9iamVjdCBpcyBzdGFja2VkIHZlcnRpY2FsbHkuIFNldCB0byAnYXV0bycgdG8gdXNlIHRoZSBpbWFnZSdzIG5hdHVyYWwgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1lZGlhIG9iamVjdCBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgYmxvY2spO1xuICBtYXJnaW4tYm90dG9tOiAkbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgJi5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nXSAtIFBhZGRpbmcgYmV0d2VlbiBzZWN0aW9ucy5cbkBtaXhpbiBtZWRpYS1vYmplY3Qtc2VjdGlvbigkcGFkZGluZzogJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZykge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAkcGFkZGluZztcbiAgfVxuXG4gICY6bGFzdC1jaGlsZDpub3QoOm50aC1jaGlsZCgyKSkge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGluZztcbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9ICYge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICYubWFpbi1zZWN0aW9uIHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmLm1pZGRsZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgICYuYm90dG9tIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBzdGFjayBzZWN0aW9ucyBvZiBhIG1lZGlhIG9iamVjdC4gQXBwbHkgdGhpcyB0byB0aGUgc2VjdGlvbiBlbGVtZW50cywgbm90IHRoZSBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXN0YWNrIHtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1ib3R0b206ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0IHtcbiAgLm1lZGlhLW9iamVjdCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXNlY3Rpb247XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvcmJpdFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpYW1ldGVyIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmcm9tIE9yYml0J3MgYnVsbGV0cyB0byB3aGF0ZXZlciBjb250ZW50IG1heSBsdXJrIGJlbG93IGl0LlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY29udHJvbHMgd2hlbiBob3ZlcmVkLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBvdXRlciBPcmJpdCB3cmFwcGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXRgIGNsYXNzLlxuQG1peGluIG9yYml0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1zbGlkZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgJi5uby1tb3Rpb251aSB7XG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9yYml0LWZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHNsaWRlIGNvbnRhaW5pbmcgYW4gaW1hZ2UuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1pbWFnZWAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gb3JiaXQgc2xpZGUgY2FwdGlvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNhcHRpb25gIGNsYXNzLlxuQG1peGluIG9yYml0LWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmc6ICRvcmJpdC1jYXB0aW9uLXBhZGRpbmc7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZCk7XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGluIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgYC5vcmJpdC1uZXh0YCBhbmQgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3NlcyBpbiB0aGUgZGVmYXVsdCBDU1MuXG5AbWl4aW4gb3JiaXQtY29udHJvbCB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyO1xuICB6LWluZGV4OiAkb3JiaXQtY29udHJvbC16aW5kZXg7XG4gIHBhZGRpbmc6ICRvcmJpdC1jb250cm9sLXBhZGRpbmc7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzLlxuQG1peGluIG9yYml0LXByZXZpb3VzIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBuZXh0IGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LW5leHRgIGNsYXNzLlxuQG1peGluIG9yYml0LW5leHQge1xuICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICN7JGdsb2JhbC1yaWdodH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjb250YWluZXIgb2YgT3JiaXQgYnVsbGV0cy4gLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtYnVsbGV0c2AgY2xhc3MuXG5AbWl4aW4gb3JiaXQtYnVsbGV0cyB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A7XG4gIG1hcmdpbi1ib3R0b206ICRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGJ1dHRvbiB7XG4gICAgd2lkdGg6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XG4gICAgaGVpZ2h0OiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIG1hcmdpbjogJG9yYml0LWJ1bGxldC1tYXJnaW47XG5cbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW9yYml0IHtcbiAgLm9yYml0IHtcbiAgICBAaW5jbHVkZSBvcmJpdC13cmFwcGVyO1xuICB9XG5cbiAgLm9yYml0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udGFpbmVyO1xuICB9XG5cbiAgLm9yYml0LXNsaWRlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1zbGlkZTtcbiAgfVxuXG4gIC5vcmJpdC1maWd1cmUge1xuICAgIEBpbmNsdWRlIG9yYml0LWZpZ3VyZTtcbiAgfVxuXG4gIC5vcmJpdC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtaW1hZ2U7XG4gIH1cblxuICAub3JiaXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY2FwdGlvbjtcbiAgfVxuXG4gICVvcmJpdC1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250cm9sO1xuICB9XG5cbiAgLm9yYml0LXByZXZpb3VzIHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LXByZXZpb3VzO1xuICB9XG5cbiAgLm9yYml0LW5leHQge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtbmV4dDtcbiAgfVxuXG4gIC5vcmJpdC1idWxsZXRzIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1idWxsZXRzO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmVzcG9uc2l2ZS1lbWJlZFxuLy8vL1xuXG4vLy8gTWFyZ2luIGJlbG93IGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBBc3BlY3QgcmF0aW9zIHVzZWQgdG8gZGV0ZXJtaW5lIHBhZGRpbmctYm90dG9tIG9mIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVycy5cbi8vLyBAdHlwZSBNYXBcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxuICBkZWZhdWx0OiA0IGJ5IDMsXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXG4pICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyBhIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfExpc3R9ICRyYXRpbyBbZGVmYXVsdF0gLSBSYXRpbyBvZiB0aGUgY29udGFpbmVyLiBDYW4gYmUgYSBrZXkgZnJvbSB0aGUgYCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvc2AgbWFwIG9yIGEgbGlzdCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG5AbWl4aW4gcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpIHtcbiAgQGlmIHR5cGUtb2YoJHJhdGlvKSA9PSAnc3RyaW5nJyB7XG4gICAgJHJhdGlvOiBtYXAtZ2V0KCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcywgJHJhdGlvKTtcbiAgfVxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luLWJvdHRvbTogJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTtcbiAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBpZnJhbWUsXG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCB7XG4gIC5yZXNwb25zaXZlLWVtYmVkLFxuICAuZmxleC12aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpO1xuXG4gICAgJHJhdGlvczogbWFwLXJlbW92ZSgkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3MsIGRlZmF1bHQpO1xuXG4gICAgQGVhY2ggJG5hbWUsICRyYXRpbyBpbiAkcmF0aW9zIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYnNcbi8vLy9cblxuLy8vIERlZmF1bHQgbWFyZ2luIG9mIHRoZSB0YWIgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEFjdGl2ZSBmb250IGNvbG9yIG9mIHRhYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGFiIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGEgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHRhYnMtY29udGFpbmVyIChcbiAgJG1hcmdpbjogJHRhYi1tYXJnaW4sXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkbWFyZ2luO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXG5AbWl4aW4gdGFicy1jb250YWluZXItdmVydGljYWwge1xuICA+IGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXRpdGxlIChcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxuICAkY29sb3I6ICR0YWItY29sb3IsXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXG4gICRiYWNrZ3JvdW5kLWFjdGl2ZTogJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZVxuKSB7XG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgPiBhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgY29sb3I6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJGNvbG9yLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgd3JhcHBlciB0aGF0IHN1cnJvdW5kcyBhIHRhYiBncm91cCdzIGNvbnRlbnQgcGFuZXMuXG5AbWl4aW4gdGFicy1jb250ZW50IChcbiAgJGJhY2tncm91bmQ6ICR0YWItY29udGVudC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICR0YWItY29udGVudC1jb2xvcixcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGNvbG9yO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGVudCBjb250YWluZXIgdG8gaGF2ZSBhIHZlcnRpY2FsIHN0eWxlLCBieSBzaGlmdGluZyB0aGUgYm9yZGVyIGFyb3VuZC4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250ZW50KClgLlxuQG1peGluIHRhYnMtY29udGVudC12ZXJ0aWNhbCAoXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGluZGl2aWR1YWwgdGFiIGNvbnRlbnQgcGFuZWwgd2l0aGluIHRoZSB0YWIgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gdGFicy1wYW5lbCAoXG4gICRwYWRkaW5nOiAkdGFiLWNvbnRlbnQtcGFkZGluZ1xuKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gICYuaXMtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJzIHtcbiAgLnRhYnMge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gVmVydGljYWxcbiAgLnRhYnMudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gU2ltcGxlXG4gIC50YWJzLnNpbXBsZSB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByaW1hcnkgY29sb3JcbiAgLnRhYnMucHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG5cbiAgICA+IGxpID4gYSB7XG4gICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkcHJpbWFyeS1jb2xvcik7XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJzLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0YWJzLXRpdGxlO1xuICB9XG5cbiAgLnRhYnMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50O1xuICB9XG5cbiAgLnRhYnMtY29udGVudC52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50LXZlcnRpY2FsO1xuICB9XG5cbiAgLnRhYnMtcGFuZWwge1xuICAgIEBpbmNsdWRlIHRhYnMtcGFuZWw7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0aHVtYm5haWxcbi8vLy9cblxuLy8vIEJvcmRlciBhcm91bmQgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBCb3JkZXJcbiR0aHVtYm5haWwtYm9yZGVyOiA0cHggc29saWQgJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBUcmFuc2l0aW9uIHByb3BydGllcyBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kdGh1bWJuYWlsLXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0aHVtYm5haWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgdGh1bWJuYWlsIHN0eWxlcyB0byBhbiBlbGVtZW50LlxuQG1peGluIHRodW1ibmFpbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkdGh1bWJuYWlsLW1hcmdpbi1ib3R0b207XG5cbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHRodW1ibmFpbC1yYWRpdXM7XG4gIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93O1xuXG4gIGxpbmUtaGVpZ2h0OiAwO1xufVxuXG5AbWl4aW4gdGh1bWJuYWlsLWxpbmsge1xuICB0cmFuc2l0aW9uOiAkdGh1bWJuYWlsLXRyYW5zaXRpb247XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI7XG4gIH1cblxuICBpbWFnZSB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10aHVtYm5haWwge1xuICAudGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB0aHVtYm5haWw7XG4gIH1cblxuICBhLnRodW1ibmFpbCB7XG4gICAgQGluY2x1ZGUgdGh1bWJuYWlsLWxpbms7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZW51XG4vLy8vXG5cbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gTGVmdC1oYW5kIG1hcmdpbiBvZiBhIG5lc3RlZCBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBpdGVtcyBpbiBhIHBpbGwgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWl0ZW1zLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gbWFyZ2luIGZvciBpdGVtcyBpbiBhIHNpbXBsZSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtc2ltcGxlLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIHRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS4uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWx0LWFjdGl2ZTogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYW4gaWNvbiBhbmQgdGV4dCBpbiBhIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgc3RhdGUuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGBhY3RpdmVgIHdpdGggYGlzLWFjdGl2ZWAuXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYGFjdGl2ZWAgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LXN0YXRlLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBjZW50ZXJlZC4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYC5tZW51LWNlbnRlcmVkID4gLm1lbnVgIHdpdGggYC5tZW51LmFsaWduLWNlbnRlcmAuXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYG1lbnUtY2VudGVyZWRgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIHVzaW5nIGBpY29uLSpgIGNsYXNzZXMgd2l0aG91dCBgLmljb25zYCBjbGFzc2VzXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgdGhpcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1pY29ucy1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIENyZWF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIE1lbnUuXG5AbWl4aW4gbWVudS1iYXNlIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cblxuICBsaSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB9XG5cbiAgYSxcbiAgLmJ1dHRvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRtZW51LWl0ZW1zLXBhZGRpbmc7XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb2YgaW5uZXIgZWxlbWVudHNcbiAgaW5wdXQsXG4gIHNlbGVjdCxcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgaW5wdXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4vLy8gRXhwYW5kcyB0aGUgaXRlbXMgb2YgYSBNZW51LCBzbyBlYWNoIGl0ZW0gaXMgdGhlIHNhbWUgd2lkdGguXG5AbWl4aW4gbWVudS1leHBhbmQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBsaSB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICA+IGxpIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWxpZ24gbWVudSBpdGVtcy5cbkBtaXhpbiBtZW51LWFsaWduKCRhbGlnbm1lbnQpIHtcbiAgQGlmICRhbGlnbm1lbnQgPT0gbGVmdCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSByaWdodCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICYudmVydGljYWwge1xuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1yaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IGNlbnRlciB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGRpcmVjdGlvbiBvZiBhIE1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIFtob3Jpem9udGFsXSAtIERpcmVjdGlvbiBvZiB0aGUgTWVudS4gQ2FuIGJlIGBob3Jpem9udGFsYCBvciBgdmVydGljYWxgLlxuQG1peGluIG1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBtZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2ltcGxlIE1lbnUsIHdoaWNoIGhhcyBubyBwYWRkaW5nIG9yIGhvdmVyIHN0YXRlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbJGdsb2JhbC1sZWZ0XSAtIERpcmVjdGlvbiBvZiB0aGUgbWVudS4gVGhpcyBlZmZlY3RzIHRoZSBzaWRlIG9mIHRoZSBgPGxpPmAgdGhhdCByZWNlaXZlcyB0aGUgbWFyZ2luLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWFyZ2luIFskbWVudS1zaW1wbGUtbWFyZ2luXSAtIFRoZSBtYXJnaW4gdG8gYXBwbHkgdG8gZWFjaCBgPGxpPmAuXG5AbWl4aW4gbWVudS1zaW1wbGUoJGRpcjogJGdsb2JhbC1sZWZ0LCAkbWFyZ2luOiAkbWVudS1zaW1wbGUtbWFyZ2luKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICBsaSArIGxpIHtcbiAgICBtYXJnaW4tI3skZGlyfTogJG1hcmdpbjtcbiAgfVxuXG4gIGEge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG5lc3RlZCBNZW51LCBieSBhZGRpbmcgYG1hcmdpbi1sZWZ0YCB0byB0aGUgbWVudS5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkbWFyZ2luIFskbWVudS1uZXN0ZWQtbWFyZ2luXSAtIExlbmd0aCBvZiB0aGUgbWFyZ2luLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG5lc3RlZC1hbGlnbm1lbnQgW2xlZnRdIC0gQWxpZ25tZW50IG9mIHRoZSBuZXN0ZWQgY2xhc3NcbkBtaXhpbiBtZW51LW5lc3RlZChcbiAgJG1hcmdpbjogJG1lbnUtbmVzdGVkLW1hcmdpbixcbiAgJG5lc3RlZC1hbGlnbm1lbnQ6IGxlZnRcbikge1xuICBAaWYgJG5lc3RlZC1hbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkbWFyZ2luO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRtYXJnaW47XG4gIH1cblxufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGljb25zIGluIG1lbnVzLlxuQG1peGluIG1lbnUtaWNvbnMoKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGEge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGltZyxcbiAgICBpLFxuICAgIHN2ZyB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICArIHNwYW4ge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWxpZ24gdG9wL2JvdHRvbSBpY29ucyB3aXRoaW4gYSBtZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGFsaWdubWVudCBbY2VudGVyXSAtIEFsaWdubWVudCBvZiB0aGUgaWNvblxuQG1peGluIG1lbnUtaWNvbi1hbGlnbm1lbnQoJGFsaWdubWVudDogY2VudGVyKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICYuaWNvbi10b3AsXG4gICAgJi5pY29uLWJvdHRvbSB7XG4gICAgICBsaSBhIHtcbiAgICAgICAgaW1nLFxuICAgICAgICBpLFxuICAgICAgICBzdmcge1xuICAgICAgICAgIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWxzZSBpZiAkYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgcG9zaXRpb24gY2xhc3NlcyBmb3IgaWNvbnMgd2l0aGluIGEgbWVudS5cbkBtaXhpbiBtZW51LWljb24tcG9zaXRpb24oJHBvc2l0aW9uOiBsZWZ0LCAkc3BhY2luZzogJG1lbnUtaWNvbi1zcGFjaW5nKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRzcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIHBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xuXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiBtZW51LXN0YXRlLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmUsICgkbWVudS1pdGVtLWNvbG9yLWFjdGl2ZSwgJG1lbnUtaXRlbS1jb2xvci1hbHQtYWN0aXZlKSk7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUge1xuICAubWVudSB7XG4gICAgQGluY2x1ZGUgbWVudS1iYXNlO1xuXG4gICAgLy8gRGVmYXVsdCBvcmllbnRhdGlvbjogaG9yaXpvbnRhbFxuICAgICYsICYuaG9yaXpvbnRhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICB9XG5cbiAgICAvLyBWZXJ0aWNhbCBvcmllbnRhdGlvbiBtb2RpZmllclxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLWFsaWdubWVudChsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBFdmVuLXdpZHRoIG1vZGlmaWVyIGZvciBob3Jpem9udGFsIG9yaWVudGF0aW9uXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1hbGlnbm1lbnQobGVmdCk7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlXG4gICAgJi5zaW1wbGUge1xuICAgICAgQGluY2x1ZGUgbWVudS1zaW1wbGU7XG4gICAgfVxuXG4gICAgLy8gQnJlYWtwb2ludCBzcGVjaWZpYyB2ZXJzaW9uc1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiBmYWxzZSkge1xuICAgICAgJi4jeyQtemYtc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tc2ltcGxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYubmVzdGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkO1xuICAgIH1cblxuICAgIC8vIEljb24gQmFzZSBTdHlsZXNcbiAgICAmLmljb25zIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXG4gICAgQGlmICRtZW51LWljb25zLWJhY2stY29tcGF0IHtcbiAgICAgICYuaWNvbi10b3AsXG4gICAgICAmLmljb24tcmlnaHQsXG4gICAgICAmLmljb24tYm90dG9tLFxuICAgICAgJi5pY29uLWxlZnQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1lbnUgaWNvbiBwb3NpdGlvblxuICAgIC8vIEluY2x1ZGVzIHNwZWNpZmljaXR5IHRvIG5lc3RlZCBpY29ucyB3aXRoIGEgZGlmZmVyZW50IHBvc2l0aW9uXG4gICAgJixcbiAgICAmLm5lc3RlZCB7XG4gICAgICAvLyBJY29uIExlZnRcbiAgICAgICYuaWNvbi1sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKGxlZnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBJY29uIFJpZ2h0XG4gICAgICAmLmljb24tcmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24ocmlnaHQpO1xuICAgICAgfVxuXG4gICAgICAvLyBJY29uIFRvcFxuICAgICAgJi5pY29uLXRvcCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbih0b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBJY29uIEJvdHRvbVxuICAgICAgJi5pY29uLWJvdHRvbSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihib3R0b20pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxuICAgIC5pcy1hY3RpdmUgPiBhIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xuICAgIH1cblxuICAgIC8vIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgZm9yIGFjdGl2ZSBzdGF0ZVxuICAgIEBpZiAkbWVudS1zdGF0ZS1iYWNrLWNvbXBhdCB7XG4gICAgICAuYWN0aXZlID4gYSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsaWduIGxlZnRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1sZWZ0fSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGxlZnQpO1xuICAgIH1cblxuICAgIC8vIEFsaWduIHJpZ2h0XG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24ocmlnaHQpO1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLWFsaWdubWVudChyaWdodCk7XG5cbiAgICAgIC5uZXN0ZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkbmVzdGVkLWFsaWdubWVudDogcmlnaHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsaWduIGNlbnRlclxuICAgICYuYWxpZ24tY2VudGVyIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcbiAgICB9XG5cbiAgICAubWVudS10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtdGV4dDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQge1xuICAgIC5tZW51LWNlbnRlcmVkIHtcbiAgICAgID4gLm1lbnUge1xuICAgICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmV2ZW50IEZPVUMgd2hlbiB1c2luZyB0aGUgUmVzcG9uc2l2ZSBNZW51IHBsdWdpblxuICAubm8tanMgW2RhdGEtcmVzcG9uc2l2ZS1tZW51XSB1bCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tbWVudS1pY29uIHtcbiAgLm1lbnUtaWNvbiB7XG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyKCRjb2xvcjogJHRpdGxlYmFyLWljb24tY29sb3IsICRjb2xvci1ob3ZlcjogJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXIpO1xuICB9XG5cbiAgLm1lbnUtaWNvbi5kYXJrIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXI7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBAZ3JvdXAgYWNjb3JkaW9uLW1lbnVcbi8vLy9cblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBuZXN0ZWQgbWFyZ2luXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBhY2NvcmRpb24gbWVudXMgaGF2ZSB0aGUgZGVmYXVsdCBhcnJvdyBzdHlsZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIGJvcmRlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtYm9yZGVyOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBMaXN0XG4kYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjogJGFjY29yZGlvbm1lbnUtYm9yZGVyICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHRvZ2dsZSBiYWNrZ3JvdW5kIHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHggIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgaGVpZ2h0LlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gemYtYWNjb3JkaW9uLW1lbnUtbGVmdC1yaWdodC1hcnJvd3Mge1xuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50Om5vdCguaGFzLXN1Ym1lbnUtdG9nZ2xlKSA+IGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplLCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IC0xICogKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUgKiAwLjUpO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLWxlZnQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cbn1cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51IHtcblxuICAuYWNjb3JkaW9uLW1lbnUge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgICBib3JkZXItdG9wOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1yaWdodDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgICBib3JkZXItbGVmdDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgfVxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgYSB7XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4sIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzO1xuXG4gICAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50W2FyaWEtZXhwYW5kZWQ9J3RydWUnXSA+IGE6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgbGkge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmhhcy1zdWJtZW51LXRvZ2dsZSA+IGEge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgfVxuXG4gIC8vIFN1Ym1lbnUgdG9nZ2xlXG4gIC5zdWJtZW51LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xuXG4gICAgd2lkdGg6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuICAgIGhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0O1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI7XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgYXJyb3cgdG8gdGhlIHRvZ2dsZVxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplLCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG5cbiAgICAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cblxuICAvLyBSb3RhdGUgdGhlIGFycm93IHdoZW4gbWVudSBpcyBvcGVuXG4gIC5zdWJtZW51LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgfVxuXG4gIC5zdWJtZW51LXRvZ2dsZS10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyaWxsZG93blxuLy8vL1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eSB0byB1c2UgZm9yIGFuaW1hdGluZyBtZW51cy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGFycm93cyB0byBkcmlsbGRvd24gaXRlbXMgd2l0aCBzdWJtZW51cywgYXMgd2VsbCBhcyB0aGUgYmFjayBidXR0b24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyaWxsZG93bi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcgaW4gdGhlIHN1Ym1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHN1Ym1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyaWxsZG93bi1hcnJvdy1zaXplLCAkZHJpbGxkb3duLWFycm93LWNvbG9yLCAkZ2xvYmFsLXJpZ2h0KTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJpbGxkb3duLWFycm93LXNpemU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tbGVmdCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIHJpZ2h0KTtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cblxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5hbmltYXRlLWhlaWdodCB7XG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgdG9wIGxldmVsIDx1bD5cbiAgLmRyaWxsZG93biB7XG4gICAgYSB7XG4gICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLy8gQXBwbGllZCB0byBzdWJtZW51IDx1bD5zXG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICAgIHotaW5kZXg6IC0xO1xuXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgICAgdHJhbnNpdGlvbjogJGRyaWxsZG93bi10cmFuc2l0aW9uO1xuXG4gICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XG4gICAgICB9XG5cbiAgICAgICYuaXMtY2xvc2luZyB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgMTAwJSwgLTEwMCUpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3VibWVudSBpdGVtIHBhZGRpbmdcbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgLmRyaWxsZG93bi1zdWJtZW51LWNvdmVyLXByZXZpb3VzIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1sZWZ0KTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC43NXJlbTsgLy8gQ3JlYXRlcyBzcGFjZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHBhZGRpbmcgZm9yIGFsaWduaW5nIHRoZSBhcnJvdyBjb3JyZWN0bHkuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gID4gYTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1yaWdodH06IDE0cHg7XG4gIH1cblxuICAmLm9wZW5zLWxlZnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogNXB4O1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpLm9wZW5zLXJpZ2h0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGEgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplICogMC41KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgPiBsaSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1sZWZ0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1yaWdodCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xuICAuZHJvcGRvd24ubWVudSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbVxuICAgID4gbGkgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDtcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbSBhY3RpdmUgc3RhdGVcbiAgICA+IGxpLmlzLWFjdGl2ZSA+IGEge1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAubm8tanMgJiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgYTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLWlubmVyID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuXG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xuXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDtcblxuICAgIC5kcm9wZG93biAmIGEge1xuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAodHlwZS1vZigkZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCkgPT0gJ251bWJlcicpIHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgbWFyZ2luLXRvcDogKC0kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBsaSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBbVE9ET10gQ3V0IGJhY2sgc3BlY2lmaWNpdHlcbiAgICAvLyY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsIC8vIHdoeSBpcyB0aGlzIGxpbmUgbmVlZGVkPyBPcGVuaW5nIGlzIGhhbmRsZWQgYnkgSlMgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdWdseSBmbGlja2VyaW5nIHdoZW4gdGhlIHN1YiBpcyByZS1wb3NpdGlvbmVkIGF1dG9tYXRpY2FsbHkuLi5cbiAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvZmYtY2FudmFzXG4vLy8vXG5cbi8vLyBXaWR0aCBtYXAgb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTWFwXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgbWFwIG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE1hcFxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxuICBzbWFsbDogMjUwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBmb3IgdGhlIG9mZi1jYW52YXMgb3ZlcmxhcCBwYW5lbC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIGNvbnRlbnQgb3ZlcmxheS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB1c2luZyB0aGUgYHJldmVhbC1mb3ItKmAgY2xhc3NlcyBvciBtaXhpbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cyAhZGVmYXVsdDtcblxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgS2V5d29yZFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYSByZXZlYWxlZCBvZmYtY2FudmFzIHdpbGwgYmUgZml4ZWQtcG9zaXRpb24sIGFuZCBzY3JvbGwgd2l0aCB0aGUgc2NyZWVuLlxuLy8vIEB0eXBlIEJvb2xcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2ljcyB7XG5cbiAgLy8vIFRyYW5zZm9ybSBkZXByZWNhdGVkIHNpemUgc2V0dGluZ3MgaW50byBtYXAgJiBzaG93IHdhcm5pbmdcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtc2l6ZSkge1xuICAgICRvZmZjYW52YXMtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtc2l6ZSkgIWdsb2JhbDtcbiAgICBAd2FybiAnJG9mZmNhbnZhcy1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy1zaXplcyBpbnN0ZWFkJztcbiAgfVxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSB7XG4gICAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSAhZ2xvYmFsO1xuICAgIEB3YXJuICckb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzIGluc3RlYWQnO1xuICB9XG5cbiAgLy8gQ2hlY2tzIHRoZSB6LWluZGV4ZXMgYW5kIGluY3JlYXNlIHRoZW0gZHVlIHRvIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXggPD0gJG9mZmNhbnZhcy1wdXNoLXppbmRleCB7ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG5cbiAgLy8gSGlkZXMgb3ZlcmZsb3cgb24gYm9keSB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXG4gIC5qcy1vZmYtY2FudmFzLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAmLmlzLW92ZXJsYXktZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyB3cmFwcGVyLlxuQG1peGluIG9mZi1jYW52YXMtd3JhcHBlcigpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNlKFxuICAkYmFja2dyb3VuZDogJG9mZmNhbnZhcy1iYWNrZ3JvdW5kLFxuICAkdHJhbnNpdGlvbjogJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLFxuICAkZml4ZWQ6IHRydWVcbikge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgQGlmICRmaXhlZCA9PSB0cnVlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgb2ZmLWNhbnZhcyB6LWluZGV4LlxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxuICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcbiAgfVxuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gIC8vIEhpZGUgaW5hY3RpdmUgb2ZmLWNhbnZhcyB3aXRoaW4gdGhlIGNvbnRlbnQgdGhhdCBoYXZlIHRoZSBzYW1lIHBvc2l0aW9uXG4gICYuaXMtY2xvc2VkIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBPdmVybGFwIG9ubHkgc3R5bGVzLlxuICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICBib3gtc2hhZG93OiAkb2ZmY2FudmFzLXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAvLyBTZXRzIHRyYW5zZm9ybSB0byAwIHRvIHNob3cgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbiAgJi5pcy1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gcG9zaXRpb24gYW4gb2ZmLWNhbnZhcyBwYW5lbCB0byB0aGUgbGVmdC9yaWdodC90b3AvYm90dG9tLlxuQG1peGluIG9mZi1jYW52YXMtcG9zaXRpb24oXG4gICRwb3NpdGlvbjogbGVmdCxcbiAgJG9yaWVudGF0aW9uOiBob3Jpem9udGFsLFxuICAkc2l6ZXM6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemVzLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzKVxuKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcblxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIGlzIHNldCwgYWRkIGlubmVyIGJveC1zaGFkb3cuXG4gIC8vIFRoaXMgbWltaWNzIHRoZSBvZmYtY2FudmFzIHBhbmVsIGhhdmluZyBhIGxvd2VyIHotaW5kZXgsIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgb25lLlxuICBAaWYgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSB7XG4gICAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cocmlnaHQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGxlZnQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhib3R0b20sICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyh0b3AsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG4vLy8gU2V0cyB0aGUgc3R5bGVzIGZvciB0aGUgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gb2ZmLWNhbnZhcy1jb250ZW50KCkge1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAvLyBCaW5kIHRvIGhhcy10cmFuc2l0aW9uLVggY2xhc3MgdG8gcHJldmVudCB0cmFuc2l0aW9uIGZvciB0cmFuc2Zvcm06bm9uZVxuICAmLmhhcy10cmFuc2l0aW9uLW92ZXJsYXAsXG4gICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBzY29wZSB1bnRpbCB0aGUgZWxlbWVudCBpcyBjbG9zZWQgKG1ha2VzIHN1cmUgdHJhbnNpdGlvbmVuZCBnZXRzIHRyaWdnZXJlZClcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxuXG4gIC8vIENvbnNpZGVyIGVsZW1lbnQgJiBjb250ZW50LCBuZXN0ZWQgaW4gYW5vdGhlciBjb250ZW50XG4gIC5vZmYtY2FudmFzLmlzLW9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0aGF0IHJldmVhbCBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtcmV2ZWFsKFxuICAkcG9zaXRpb246IGxlZnQsXG4gICR6aW5kZXg6ICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCxcbiAgJGNvbnRlbnQ6ICRtYWluY29udGVudC1jbGFzcyxcbiAgJGJyZWFrcG9pbnQ6IHNtYWxsXG4pIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICB6LWluZGV4OiAkemluZGV4O1xuICB0cmFuc2l0aW9uOiBub25lO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gIEBpZiBub3QgJG9mZmNhbnZhcy1maXhlZC1yZXZlYWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBDb25zaWRlciByZXZlYWxlZCBlbGVtZW50IGlzIG5lc3RlZCBpbiBjb250ZW50XG4gIC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgQGF0LXJvb3QgLiN7JGNvbnRlbnR9Lmhhcy1yZXZlYWwtI3skcG9zaXRpb259IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XG4gIH1cblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAocHJpb3IgdG8gdjYuNClcbiAgJiB+IC4jeyRjb250ZW50fSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xuICB9XG59XG5cbi8vLyBPdmVycmlkZXMgdGhlIG9mZi1jYW52YXMgc3R5bGVzXG5AbWl4aW4gaW4tY2FudmFzKCkge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHdpZHRoOiBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbm9uZTtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5wb3NpdGlvbi1sZWZ0LFxuICAmLnBvc2l0aW9uLXJpZ2h0LFxuICAmLnBvc2l0aW9uLXRvcCxcbiAgJi5wb3NpdGlvbi1ib3R0b20ge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XG5cbiAgLy8gT2ZmLWNhbnZhcyB3cmFwcGVyXG4gIC5vZmYtY2FudmFzLXdyYXBwZXIge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtd3JhcHBlcjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyXG4gIC5vZmYtY2FudmFzIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2U7XG5cbiAgICAvLyBGb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSBmb3IgbmVzdGVkIG9mZi1jYW52YXMgYmVjYXVzZSBmaXhlZCBkb2Vzbid0IHdvcmsgZm9yIHB1c2ggdHJhbnNpdGlvbiB3aXRoaW4gdGhlIHRyYW5zZm9ybSBzY29wZS5cbiAgICAvLyBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgIC8vICAgLy8gTk9URTogc2luY2Ugb3ZlcmxhcCB0cmFuc2l0aW9uIGlzIGN1cnJlbnRseSBmb3JjZWQgaWYgbmVzdGVkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgdW50aWwgbmVzdGVkIHB1c2ggdHJhbnNpdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAgLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgLy8gfVxuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxuICAub2ZmLWNhbnZhcy1hYnNvbHV0ZSB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi1yaWdodCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCwgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cblxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5wb3NpdGlvbi1sZWZ0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tcmlnaHQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwocmlnaHQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tdG9wLnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHRvcCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1ib3R0b20ucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTW92ZSBpbi1jYW52YXMgZm9yIGxhcmdlciBzY3JlZW5zXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRuYW1lICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgLm9mZi1jYW52YXMuaW4tY2FudmFzLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgaW4tY2FudmFzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXZlYWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIG1vZGFsLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgYSBtb2RhbCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC13aWR0aDogNjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1heGltdW0gd2lkdGggb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgbW9kYWxzLiBUaGUgb3ZlcmxheSB1c2VzIHRoaXMgdmFsdWUsIHdoaWxlIHRoZSBtb2RhbCBpdHNlbGYgdXNlcyB0aGlzIHZhbHVlIHBsdXMgb25lLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC16aW5kZXg6IDEwMDUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIG1vZGFsIG92ZXJsYXlzLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpICFkZWZhdWx0O1xuXG5cbi8vIFBsYWNlaG9sZGVyIHNlbGVjdG9yIGZvciBtZWRpdW0tYW5kLXVwIG1vZGFsc1xuLy8gUHJldmVudHMgZHVwbGljYXRlIENTUyB3aGVuIGRlZmluaW5nIG11bHRpcGxlIFJldmVhbCBzaXplc1xuLy8gVGhpcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgYnJlYWtwb2ludCB0aGVuIGBAbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoYFxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgJXJldmVhbC1jZW50ZXJlZCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtb2RhbCBvdmVybGF5LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBvdmVybGF5LlxuQG1peGluIHJldmVhbC1vdmVybGF5KCRiYWNrZ3JvdW5kOiAkcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZCkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXg7XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIGEgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4ICsgMTtcbiAgLy8gV29ya2Fyb3VuZCBhbmRyb2lkIGJyb3dzZXIgei1pbmRleCBidWdcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRyZXZlYWwtcGFkZGluZztcblxuICBib3JkZXI6ICRyZXZlYWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmV2ZWFsLXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHJldmVhbC1iYWNrZ3JvdW5kO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSByb3dzIGRvbid0IGhhdmUgYSBtaW4td2lkdGggb24gdGhlbVxuICAuY29sdW1uIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cblxuICAvLyBTdHJpcCBtYXJnaW5zIGZyb20gdGhlIGxhc3QgaXRlbSBpbiB0aGUgbW9kYWxcbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRqdXN0cyB0aGUgd2lkdGggb2YgYSBtb2RhbC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIG1vZGFsLiBHZW5lcmFsbHkgYSBwZXJjZW50YWdlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4LXdpZHRoIFskcmV2ZWFsLW1heC13aWR0aF0gLSBNYXhpbXVtIHdpZHRoIG9mIHRoZSBtb2RhbC5cbkBtaXhpbiByZXZlYWwtbW9kYWwtd2lkdGgoXG4gICR3aWR0aDogJHJldmVhbC13aWR0aCxcbiAgJG1heC13aWR0aDogJHJldmVhbC1tYXgtd2lkdGhcbikge1xuICAvLyBFeHRlbmRzIG11c3QgYmUgbWFkZSBvdXRzaWRlIG9mIGJyZWFrcG9pbnRzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbmV3ZXIgU2FzcyB2ZXJzaW9ucyAobGlic2FzcyB2My41KVxuICBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBmdWxsLXNjcmVlbiBtb2RhbCwgd2hpY2ggc3RyZXRjaGVzIHRoZSBmdWxsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbkBtaXhpbiByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbiB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcblxuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmV2ZWFsIHtcblxuICAvLy8gRGlzYWJsZXMgdGhlIHNjcm9sbCB3aGVuIFJldmVhbCBpcyBzaG93biB0byBwcmV2ZW50IHRoZSBiYWNrZ3JvdW5kIGZyb20gc2hpZnRpbmdcbiAgaHRtbC5pcy1yZXZlYWwtb3BlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcblxuICAgICYuemYtaGFzLXNjcm9sbCB7XG4gICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgfVxuXG4gICAgYm9keSB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJsYXlcbiAgLnJldmVhbC1vdmVybGF5IHtcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxuICAucmV2ZWFsIHtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtYmFzZTtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTAwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLy8gUmVtb3ZlIHBhZGRpbmdcbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcbiAgICAmLnRpbnkgIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDMwJSk7IH1cbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cblxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN0aWNreSB7XG4gIC5zdGlja3ktY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAuc3RpY2t5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgLnN0aWNreS5pcy1zdHVjayB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IDU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAmLmlzLWF0LXRvcCB7XG4gICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5zdGlja3kuaXMtYW5jaG9yZWQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRpdGxlLWJhclxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWJhY2tncm91bmQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIFdlaWdodFxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWljb24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIHRoZSBtZW51IGljb24gYW5kIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdGl0bGUtYmFyIHtcbiAgLnRpdGxlLWJhciB7XG4gICAgcGFkZGluZzogJHRpdGxlYmFyLXBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogJHRpdGxlYmFyLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIC5tZW51LWljb24ge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50aXRsZS1iYXItbGVmdCxcbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50aXRsZS1iYXItbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aXRsZS1iYXItdGl0bGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkdGl0bGViYXItdGV4dC1mb250LXdlaWdodDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvcC1iYXJcbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igc3VibWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLiBVc2VmdWxsIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyB0cmFuc3BhcmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgZm9yIHRoZSB0b3AgYmFyIHRpdGxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMCAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYDxpbnB1dD5gIGVsZW1lbnRzIGluc2lkZSB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBhdCB3aGljaCB0b3AgYmFyIHN3aXRjaGVzIGZyb20gbW9iaWxlIHRvIGRlc2t0b3Agdmlldy5cbi8vLyBAdHlwZSBCcmVha3BvaW50XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdG9wIGJhciBjb250YWluZXIuXG5AbWl4aW4gdG9wLWJhci1jb250YWluZXIge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxuXG4gIHBhZGRpbmc6ICR0b3BiYXItcGFkZGluZztcblxuICAmLFxuICB1bCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIGRpZmZlcm50IGZyb20gJHRvcGJhci1iYWNrZ3JvdW5kLXN1Ym1lbnVcbiAgQGlmICgkdG9wYmFyLWJhY2tncm91bmQgIT0gJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQpIHtcbiAgICB1bCB1bCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0cmFpbiB3aWR0aCBvZiBpbnB1dHMgYnkgZGVmYXVsdCB0byBtYWtlIHRoZW0gZWFzaWVyIHRvIGFycmFuZ2VcbiAgaW5wdXQge1xuICAgIG1heC13aWR0aDogJHRvcGJhci1pbnB1dC13aWR0aDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgfVxuXG4gIC8vIFRoZSBhYm92ZSBzdHlsZXMgc2hvdWxkbid0IGFwcGx5IHRvIGlucHV0IGdyb3VwIGZpZWxkc1xuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICB9XG5cbiAgaW5wdXQuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLy8vIE1ha2VzIHNlY3Rpb25zIG9mIGEgdG9wIGJhciBzdGFjayBvbiB0b3Agb2YgZWFjaCBvdGhlci5cbkBtaXhpbiB0b3AtYmFyLXN0YWNrZWQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuZG9lcyB0aGUgQ1NTIGFwcGxpZWQgYnkgdGhlIGB0b3AtYmFyLXN0YWNrZWQoKWAgbWl4aW4uXG5AbWl4aW4gdG9wLWJhci11bnN0YWNrIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10b3AtYmFyIHtcbiAgLy8gVG9wIGJhciBjb250YWluZXJcbiAgLnRvcC1iYXIge1xuICAgIEBpbmNsdWRlIHRvcC1iYXItY29udGFpbmVyO1xuXG4gICAgLy8gU3RhY2sgb24gc21hbGwgc2NyZWVucyBieSBkZWZhdWx0XG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludCkge1xuICAgICAgQGluY2x1ZGUgdG9wLWJhci11bnN0YWNrO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNsYXNzZXMgZm9yIHN0YWNraW5nIG9uIGVhY2ggc2NyZWVuIHNpemUgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcylcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICYuc3RhY2tlZC1mb3ItI3skc2l6ZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgICAgICAgICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN1Yi1zZWN0aW9uc1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIG1hcmdpbjogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHBhZGRpbmc6ICR0b3BiYXItdGl0bGUtc3BhY2luZztcblxuICAgICAgLm1lbnUtaWNvbiB7XG4gICAgICAgIGJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsb2F0XG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXMge1xuICAuZmxvYXQtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZmxvYXQtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICAuY2xlYXJmaXgge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgRmxleGJveCBVdGlsaXRpZXNcbi8vLy9cbi8vXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvdW50IG9mIHNvdXJjZSBvcmRlcmluZ2Bcbi8vLyBAdHlwZSBOdW1iZXJcbiRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudDogNiAhZGVmYXVsdDtcblxuLy8vIFF1aWNrbHkgZGlzYWJsZS9lbmFibGUgUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgVmFuaWxsYSBGbGV4IEhlbHBlcnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZSAhZGVmYXVsdDtcblxuQG1peGluIGZsZXgtaGVscGVycyB7XG4gIC5mbGV4LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmxleDtcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWF1dG8ge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1zaHJpbmsge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG5cbiAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgLmZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY29udGFpbmVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtYXV0byB7XG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1ncm93IHtcbiAgICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLXNocmluayB7XG4gICAgICAgICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWNsYXNzZXMge1xuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCB1c2luZyBqdXN0aWZ5LWNvbnRlbnRcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluICQtemYtZmxleC1qdXN0aWZ5IHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgU3BlY2lmaWNhbGx5IGZvciBWZXJ0aWNhbCBNZW51XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnanVzdGlmeScsICdzcGFjZWQnKSB7XG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcbiAgICAgICYudmVydGljYWwge1xuICAgICAgICAmLm1lbnUgPiBsaSA+IGEge1xuICAgICAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGFsaWdubWVudCB1c2luZyBhbGlnbi1pdGVtcyBhbmQgYWxpZ24tc2VsZlxuICBAZWFjaCAkdmRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWFsaWduIHtcbiAgICAuYWxpZ24tI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeTogJHZkaXIpO1xuICAgIH1cblxuICAgIC5hbGlnbi1zZWxmLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24tc2VsZigkeTogJHZkaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENlbnRyYWwgYWxpZ25tZW50IG9mIGNvbnRlbnRcbiAgLmFsaWduLWNlbnRlci1taWRkbGUge1xuICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6IGNlbnRlciwgJHk6IG1pZGRsZSk7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgLy8gU291cmNlIG9yZGVyaW5nXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tb3JkZXItI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LW9yZGVyKCRpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWYW5pbGxhIEZsZXhib3ggSGVscGVyc1xuICBAaW5jbHVkZSBmbGV4LWhlbHBlcnM7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XG4gICRzaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAwLjAwMTI1O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCB3aXRoaW4gYSBjZXJ0YWluIGJyZWFrcG9pbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XG4gICRsb3dlci1ib3VuZC1zaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAkdXBwZXItYm91bmQtc2l6ZTogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJHNpemUpO1xuXG4gIC8vIG1vcmUgb2Z0ZW4gdGhhbiBub3QgdGhpcyB3aWxsIGJlIGNvcnJlY3QsIGp1c3Qgb25lIHRpbWUgcm91bmQgdGhlIGxvb3AgaXQgd29uJ3Qgc28gc2V0IGluIHNjb3BlIGhlcmVcbiAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpIC0gMC4wMDEyNTtcbiAgLy8gdGVzdCBhY3R1YWwgbG93ZXItYm91bmQtc2l6ZSwgaWYgMCBzZXQgaXQgdG8gMGVtXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XG4gIH1cblxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yLW9ubHkoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcyB7XG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbiAgLnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xuICAgICAgfVxuXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcigkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgc2hvdy1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxuICAuc2hvdy1mb3Itc3IsXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxuXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZS1vZmY7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXG4gIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuaGlkZS1mb3ItbGFuZHNjYXBlLFxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBEYXJrIE1vZGUgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItZGFyay1tb2RlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5oaWRlLWZvci1kYXJrLW1vZGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgIC5zaG93LWZvci1kYXJrLW1vZGUge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmhpZGUtZm9yLWRhcmstbW9kZSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gSUUxMCsgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItaWUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgQG1lZGlhIGFsbCBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAuc2hvdy1mb3ItaWUge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmhpZGUtZm9yLWllIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBTdGlja3kgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3Itc3RpY2t5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5pcy1zdHVjayAuc2hvdy1mb3Itc3RpY2t5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAuaXMtc3R1Y2sgLmhpZGUtZm9yLXN0aWNreSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZVxuLy8vL1xuXG4vLyBSZWxhdGlvbmFsIE1peGluc1xuQGltcG9ydCAncmVsYXRpb24nO1xuXG4vLyBCb3ggTWl4aW5cbkBpbXBvcnQgJ2JveCc7XG5cbi8vIFJvdGF0ZSBNaXhpblxuQGltcG9ydCAncm90YXRlJztcblxuLy8gVGV4dCB1dGlsaXRpZXNcbkBpbXBvcnQgJ3RleHQtdXRpbGl0aWVzJztcblxuLy8gVGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXG5AaW1wb3J0ICd0ZXh0LXRyYW5zZm9ybWF0aW9uJztcblxuLy8gVGV4dCBEZWNvcmF0aW9uIGNsYXNzZXNcbkBpbXBvcnQgJ3RleHQtZGVjb3JhdGlvbic7XG5cbi8vIEZvbnQgU3R5bGluZ1xuQGltcG9ydCAnZm9udC1zdHlsaW5nJztcblxuLy8gTGlzdCBTdHlsZSB0eXBlXG5AaW1wb3J0ICdsaXN0LXN0eWxlLXR5cGUnO1xuXG4vLyBSb3VuZGVkIFV0aWxpdHlcbkBpbXBvcnQgJ3JvdW5kZWQnO1xuXG4vLyBCb3JkZXJlZCBVdGlsaXR5XG5AaW1wb3J0ICdib3JkZXJlZCc7XG5cbi8vIFNoYWRvdyBVdGlsaXR5XG5AaW1wb3J0ICdzaGFkb3cnO1xuXG4vLyBBcnJvdyBVdGlsaXR5XG5AaW1wb3J0ICdhcnJvdyc7XG5cbi8vIFNlcGFyYXRvciBVdGlsaXR5XG5AaW1wb3J0ICdzZXBhcmF0b3InO1xuXG4vLyBPdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xuQGltcG9ydCAnb3ZlcmZsb3cnO1xuXG4vLyBEaXNwbGF5IGNsYXNzZXNcbkBpbXBvcnQgJ2Rpc3BsYXknO1xuXG4vLyBQb3NpdGlvbiBIZWxwZXJzXG5AaW1wb3J0ICdwb3NpdGlvbic7XG5cbi8vIEJvcmRlciBib3hcbkBpbXBvcnQgJ2JvcmRlci1ib3gnO1xuXG4vLyBCb3JkZXIgbm9uZSBVdGlsdHlcbkBpbXBvcnQgJ2JvcmRlci1ub25lJztcblxuLy8gU2l6aW5nIFV0aWxpdGllc1xuQGltcG9ydCAnc2l6aW5nJztcblxuLy8gU3BhY2luZyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3NwYWNpbmcnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWZvbnQtc3R5bGluZztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1yb3VuZGVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2hhZG93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1hcnJvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1vdmVyZmxvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZGlzcGxheTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ub25lO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaXppbmc7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmc7XG59XG4iLCIvLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBmaXJzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBGaXJzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBmaXJzdCgkbnVtKSB7XG4gIEBpZiAkbnVtID09IDEge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmOm50aC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBmaXJzdCBleGFjdCBjaGlsZFxuQG1peGluIGZpcnN0LWNoaWxkIHtcbiAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBsYXN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIExhc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gbGFzdCgkbnVtKSB7XG4gICY6bnRoLWxhc3QtY2hpbGQoLW4gKyAjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgbGFzdCBleGFjdCBjaGlsZFxuQG1peGluIGxhc3QtY2hpbGQge1xuICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBjaGlsZHJlbiBldmVyeSBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBFdmVyeSBgbmAgbnVtYmVyIG9mIGFsbCBjaGlsZHJlblxuQG1peGluIGV2ZXJ5KCRudW0pIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IG9ubHkgdGhlIGZpcnN0IGFuZCBsYXN0IGNoaWxkLlxuQG1peGluIGZpcnN0LWxhc3Qge1xuICAmOmZpcnN0LWNoaWxkLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGFmdGVyIHRoZSBmaXJzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBBZnRlciBGaXJzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBhZnRlci1maXJzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKG4gKyAjeyRudW0gKyAxfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJlZm9yZSBgJG51bWAgZnJvbSB0aGUgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEZyb20gTGFzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBmcm9tLWxhc3QoJG51bSkge1xuICAmOm50aC1sYXN0LWNoaWxkKCN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgZmlyc3QgYW5kIHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgY2FsbGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgXG5AbWl4aW4gZnJvbS1maXJzdC1sYXN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfSksXG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJ1dCBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gYWxsIG90aGVyIGNoaWxkcmVuIFxuQG1peGluIGFsbC1idXQoJG51bSkge1xuICAmOm5vdCg6bnRoLWNoaWxkKCN7JG51bX0pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmV0d2VlbiB0aGUgYCRudW1gIGZpcnN0IGFuZCB0aGUgYCRudW1gIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIGV4Y2x1ZGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW5cbkBtaXhpbiBhbGwtYnV0LWZpcnN0LWxhc3QoJG51bSkge1xuICAmOm50aC1jaGlsZChuICsgI3skbnVtfSk6bnRoLWxhc3QtY2hpbGQobiArICN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCB0aGUgY2hpbGQgaWYgaXQncyB1bmlxdWUuIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGVyZSBhcmUgYXQgbGVhc3QgMiBjaGlsZHJlbiwgdGhlIHN0eWxlIHdpbGwgbm90IGJlIGFwcGxpZWQuXG5AbWl4aW4gdW5pcXVlIHtcbiAgJjpvbmx5LWNoaWxkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCBjaGlsZHJlbiBpZiB0aGV5IGFyZSBub3QgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQuXG5AbWl4aW4gbm90LXVuaXF1ZSgpIHtcbiAgJjpub3QoOm9ubHktY2hpbGQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIGJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xuICAmOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGV2ZW4gY2hpbGRyZW4uXG5AbWl4aW4gZXZlbiB7XG4gICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBldmVuIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXG5AbWl4aW4gZXZlbi1iZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQoZXZlbik6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgb2RkIGNoaWxkcmVuLlxuQG1peGluIG9kZCB7XG4gICY6bnRoLWNoaWxkKG9kZCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIG9kZC1iZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQob2RkKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBgJG51bWAgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG5gIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG5gIG51bWJlclxuQG1peGluIG51bWJlci1iZXR3ZWVuKCRudW0sICRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJveFxuLy8vL1xuXG4vLy8gQm94IE1peGluOiBFYXNpbHkgY3JlYXRlIGEgc3F1YXJlLCByZWN0YW5nbGUgb3IgYSBjaXJjbGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoW10gV2lkdGggb2YgdGhlIGJveFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0WyR3aWR0aF0gSGVpZ2h0IG9mIHRoZSBib3gsIGRlZmF1bHRzIHRvIGAkd2lkdGhgIHRvIGVhc2lseSBtYWtlIGEgc3F1YXJlXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2lyY2xlW2ZhbHNlXSBNYWtlcyB0aGUgYm94IGEgY2lyY2xlLCBieSBkZWZhdWx0IGBmYWxzZWAuXG5AbWl4aW4gYm94KFxuICAkd2lkdGgsIFxuICAkaGVpZ2h0OiAkd2lkdGgsIFxuICAkY2lyY2xlOiBmYWxzZVxuKSB7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgQGlmICRjaXJjbGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vIHNhc3MtbGludDpkaXNhYmxlIG1peGluLW5hbWUtZm9ybWF0XG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXJvdGF0ZVxuLy8vL1xuXG4vLy8gUm90YXRlIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGUoJGRlZykge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVggTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWC1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVYKCRkZWcpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGVYKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBZLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVkoJGRlZykge1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVaIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFotQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWigkZGVnKSB7XG4gIHRyYW5zZm9ybTogcm90YXRlWigkZGVnICsgZGVnKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC11dGlsaXRpZXNcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgdXRpbGl0aWVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBWYWx1ZSBmb3IgYHRleHQtb3ZlcmZsb3dgIHZhcmlhYmxlXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFkZWZhdWx0O1xuXG4vLy8gSW1hZ2UgUmVwbGFjZW1lbnQgdXRpbGl0eS4gYHRleHQtaGlkZWBcbkBtaXhpbiB0ZXh0LWhpZGUge1xuICBmb250OiAwLzAgYSAhaW1wb3J0YW50O1xuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBUcnVuY2F0aW5nIHRoZSB0ZXh0LCBlbGlwc2lzIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XSBUZXh0IFRydW5jYXRlXG5AbWl4aW4gdGV4dC10cnVuY2F0ZShcbiAgJG92ZXJmbG93OiAkcHJvdG90eXBlLXRleHQtb3ZlcmZsb3dcbikge1xuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB0ZXh0LW92ZXJmbG93OiAkb3ZlcmZsb3c7IFxuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBObyB3cmFwcGluZyBvZiB0aGUgdGV4dC4gYHRleHQtbm93cmFwYFxuQG1peGluIHRleHQtbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4vLy8gV3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LXdyYXBgXG5AbWl4aW4gdGV4dC13cmFwIHtcbiAgd29yZC13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXV0aWxpdGllcyB7XG4gIC50ZXh0LWhpZGUge1xuICAgIEBpbmNsdWRlIHRleHQtaGlkZTtcbiAgfVxuXG4gIC50ZXh0LXRydW5jYXRlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xuICB9XG5cbiAgLnRleHQtbm93cmFwIHtcbiAgICBAaW5jbHVkZSB0ZXh0LW5vd3JhcDtcbiAgfVxuXG4gIC50ZXh0LXdyYXAge1xuICAgIEBpbmNsdWRlIHRleHQtd3JhcDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LWhpZGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1oaWRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LXRydW5jYXRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtbm93cmFwIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LXdyYXAge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC13cmFwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtdHJhbnNmb3JtYXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxuICBsb3dlcmNhc2UsXG4gIHVwcGVyY2FzZSxcbiAgY2FwaXRhbGl6ZVxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgVHJhbnNmb3JtYXRpb24sIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbmBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRyYW5zZm9ybWF0aW9uIFtdIFRleHQgVHJhbnNmb3JtYXRpb25cbkBtaXhpbiB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pIHtcbiAgdGV4dC10cmFuc2Zvcm06ICR0cmFuc2Zvcm1hdGlvbiAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XG4gIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgIC50ZXh0LSN7JHRyYW5zZm9ybWF0aW9ufSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25cbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgZGVjb3JhdGlvbiBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtZGVjb3JhdGlvbmAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcbiAgb3ZlcmxpbmUsXG4gIHVuZGVybGluZSxcbiAgbGluZS10aHJvdWdoLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgRGVjb3JhdGlvbiwgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25gXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWNvcmF0aW9uIFtdIFRleHQgRGVjb3JhdGlvblxuQG1peGluIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbikge1xuICB0ZXh0LWRlY29yYXRpb246ICRkZWNvcmF0aW9uICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICBAZWFjaCAkZGVjb3JhdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgLnRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1mb250LXN0eWxpbmdcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGZvbnQgc3R5bGluZyB0eXBlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtZm9udC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBMZXR0ZXIgc3BhY2luZyBmb3IgYC5mb250LXdpZGVgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3ZWlnaHQgZm9yIGAuZm9udC1ub3JtYWxgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtbm9ybWFsYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1mb250LW5vcm1hbDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3ZWlnaHQgZm9yIGAuZm9udC1ib2xkYCwgZGVmYXVsdGVkIHRvIGBnbG9iYWwtd2VpZ2h0LWJvbGRgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2lkZSBsZXR0ZXIgc3BhY2luZyFcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldHRlci1zcGFjaW5nIFskcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmddIFdpZGUgbGV0dGVyIHNwYWNpbmcgZm9yIHRoZSBmb250XG5AbWl4aW4gZm9udC13aWRlKFxuICAkbGV0dGVyLXNwYWNpbmc6ICRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ1xuKSB7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG59XG5cbi8vLyBGb250IFdlaWdodCBOb3JtYWwsIGRlZmF1bHQgdmFsdWUgY29taW5nIHRocm91Z2ggYGdsb2JhbC13ZWlnaHQtbm9ybWFsYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFskcHJvdG90eXBlLWZvbnQtbm9ybWFsXSBXZWlnaHQgb2YgdGhlIGZvbnQgKG5vcm1hbClcbkBtaXhpbiBmb250LW5vcm1hbChcbiAgJHdlaWdodDogJHByb3RvdHlwZS1mb250LW5vcm1hbFxuKSB7XG4gIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xufVxuXG4vLy8gRm9udCBXZWlnaHQgQm9sZCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ib2xkYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFskcHJvdG90eXBlLWZvbnQtYm9sZF0gV2VpZ2h0IG9mIHRoZSBmb250IChib2xkKVxuQG1peGluIGZvbnQtYm9sZChcbiAgJHdlaWdodDogJHByb3RvdHlwZS1mb250LWJvbGRcbikge1xuICBmb250LXdlaWdodDogJHdlaWdodDtcbn1cblxuLy8vIEZvbnQgU3R5bGUgSXRhbGljXG5AbWl4aW4gZm9udC1pdGFsaWMge1xuICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWZvbnQtc3R5bGluZyB7XG4gIC5mb250LXdpZGUge1xuICAgIEBpbmNsdWRlIGZvbnQtd2lkZTtcbiAgfVxuXG4gIC5mb250LW5vcm1hbCB7XG4gICAgQGluY2x1ZGUgZm9udC1ub3JtYWw7XG4gIH1cblxuICAuZm9udC1ib2xkIHtcbiAgICBAaW5jbHVkZSBmb250LWJvbGQ7XG4gIH1cblxuICAuZm9udC1pdGFsaWMge1xuICAgIEBpbmNsdWRlIGZvbnQtaXRhbGljO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mb250LXdpZGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC13aWRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LW5vcm1hbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LW5vcm1hbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ib2xkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtYm9sZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1pdGFsaWMge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgbGlzdCBzdHlsaW5nIHR5cGVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHN0eWxlLXR5cGUtdW5vcmRlcmVkYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXG4gIGRpc2MsXG4gIGNpcmNsZSxcbiAgc3F1YXJlXG4pICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS1vcmRlcmVkYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZDogKFxuICBkZWNpbWFsLFxuICBsb3dlci1hbHBoYSxcbiAgbG93ZXItbGF0aW4sXG4gIGxvd2VyLXJvbWFuLFxuICB1cHBlci1hbHBoYSxcbiAgdXBwZXItbGF0aW4sXG4gIHVwcGVyLXJvbWFuXG4pICFkZWZhdWx0O1xuXG5cbi8vLyBTdHlsZSB0eXBlIGZvciB1bm9yZGVyZWQgTGlzdHMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWRgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZS10eXBlLXVub3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciB1bm9yZGVyZWQgTGlzdHNcbkBtaXhpbiBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiAkc3R5bGUtdHlwZS11bm9yZGVyZWQgIWltcG9ydGFudDtcbn1cblxuLy8vIFN0eWxlIHR5cGUgZm9yIG9yZGVyZWQgTGlzdHMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS1vcmRlcmVkIFtdIFN0eWxlIHR5cGUgZm9yIG9yZGVyZWQgTGlzdHNcbkBtaXhpbiBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCkge1xuICBsaXN0LXN0eWxlLXR5cGU6ICRzdHlsZS10eXBlLW9yZGVyZWQgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGxpc3QtdW5vcmRlcmVkIHtcbiAgQGVhY2ggJHN0eWxlLXR5cGUtdW5vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQge1xuICAgIHVsLmxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcbiAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS11bm9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZCB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIHVsLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3Qtb3JkZXJlZCB7XG4gIEBlYWNoICRzdHlsZS10eXBlLW9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQge1xuICAgIG9sLmxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgb2wuI3skc2l6ZX0tbGlzdC0jeyRzdHlsZS10eXBlLW9yZGVyZWR9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlIHtcbiAgQGluY2x1ZGUgbGlzdC11bm9yZGVyZWQ7XG4gIEBpbmNsdWRlIGxpc3Qtb3JkZXJlZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm91bmRlZFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igcm91bmRlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1yYWRpdXNgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDMpICFkZWZhdWx0O1xuXG4vLy8gUm91bmRlZCB1dGlsaXR5IChhbGwgY29ybmVycyk6IEFkZHMgcmFkaXVzIGNvcm5lcnMgKGFsbCBjb3JuZXJzKSB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpdXMgWyRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c10gQm9yZGVyIHJhZGl1cyAoYWxsIGNvcm5lcnMpXG5AbWl4aW4gYm9yZGVyLXJhZGl1cyhcbiAgJHJhZGl1czogJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXG4pIHtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbn1cblxuLy8vIFJvdW5kZWQgc3F1YXJlIHV0aWxpdHkgb3IgcmVjdGFuZ2xlIHV0aWxpdHkgKGFsbCBjb3JuZXJzKTogUm91bmRzIGFsbCBjb3JuZXJzIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCB0byBtYWtlIGEgcGlsbCBzaGFwZS5cbkBtaXhpbiBib3JkZXItcm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwMDBweCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZCB7XG4gIC5yb3VuZGVkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcblxuICAgIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yb3VuZGVkO1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gRm9yIHN3aXRjaGVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnJhZGl1cyB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tcm91bmRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLiN7JHNpemV9LXJhZGl1cyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXJlZFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyZWQgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXdpZHRoYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1ib3JkZXItd2lkdGg6IHJlbS1jYWxjKDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItdHlwZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRwcm90b3R5cGUtYm9yZGVyLXR5cGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItY29sb3JgIGRlZmF1bHRlZCB0byBgbWVkaXVtLWdyYXlgXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtYm9yZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXJlZCBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm9yZGVyIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskcHJvdG90eXBlLWJvcmRlci13aWR0aF0gV2lkdGggb2YgdGhlIGJvcmRlclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSBbJHByb3RvdHlwZS1ib3JkZXItdHlwZV0gVHlwZSBvZiB0aGUgYm9yZGVyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskcHJvdG90eXBlLWJvcmRlci1jb2xvcl0gQ29sb3Igb2YgdGhlIGJvcmRlclxuQG1peGluIGJvcmRlcmVkKFxuICAkd2lkdGg6ICRwcm90b3R5cGUtYm9yZGVyLXdpZHRoLFxuICAkdHlwZTogJHByb3RvdHlwZS1ib3JkZXItdHlwZSxcbiAgJGNvbG9yOiAkcHJvdG90eXBlLWJvcmRlci1jb2xvclxuKSB7XG4gIGJvcmRlcjogJHdpZHRoICR0eXBlICRjb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlcmVkIHtcbiAgLmJvcmRlcmVkIHtcbiAgICBAaW5jbHVkZSBib3JkZXJlZDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlcmVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zaGFkb3dcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNoYWRvdyB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc2hhZG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm94LXNoYWRvd2Bcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE2KSwgMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMikgIWRlZmF1bHQ7XG5cbi8vLyBTaGFkb3cgVXRpbGl0eTogQWRkcyBhIGxpZ2h0IGJveCBzaGFkb3cgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2hhZG93IFskcHJvdG90eXBlLWJveC1zaGFkb3ddIEJveCBTaGFkb3cgb2YgYSBjb21wb25lbnRcbkBtaXhpbiBzaGFkb3coXG4gICRzaGFkb3c6ICRwcm90b3R5cGUtYm94LXNoYWRvd1xuKSB7XG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3cge1xuICAuc2hhZG93IHtcbiAgICBAaW5jbHVkZSBzaGFkb3c7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2hhZG93LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tc2hhZG93IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNoYWRvdztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYXJyb3dcbi8vLy9cblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGFycm93YCBkaXJlY3Rpb25cbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uczogKFxuICBkb3duLFxuICB1cCxcbiAgcmlnaHQsXG4gIGxlZnRcbikgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiB0aGUgQXJyb3csIGAwLjQzNzVyZW1gIGJ5IGRlZmF1bHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWFycm93LXNpemU6IDAuNDM3NXJlbTtcblxuLy8vIENvbG9yIG9mIHRoZSBBcnJvdywgYCRibGFja2AgYnkgZGVmYXVsdC5cbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1hcnJvdy1jb2xvcjogJGJsYWNrO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYXJyb3cge1xuICBAZWFjaCAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbiBpbiAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnMge1xuICAgIC5hcnJvdy0jeyRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9ufSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctc2l6ZSwgXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctY29sb3IsIFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LWRpcmVjdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2VwYXJhdG9yXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhbGlnbm1lbnQgb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0OiByZW0tY2FsYygyKSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRvcCBNYXJnaW4gb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRpdGxlIHNlcGFyYXRvciBVdGlsaXR5LCBtb3N0bHkgdXNlZCB0byBzdHlsZSB0aGUgbWFpbiBoZWFkaW5nIG9mIGEgc2VjdGlvblxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYWxpZ24gWyRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduXSAtIHNlcGFyYXRvciBBbGlnbm1lbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0XSAtIFdpZHRoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGhdIC0gSGVpZ2h0XG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFskcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXSAtIE1hcmdpbiBUb3BcbkBtaXhpbiBzZXBhcmF0b3IgKFxuICAkYWxpZ246ICRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduLFxuICAkaGVpZ2h0OiAkcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQsXG4gICR3aWR0aDogJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGgsXG4gICRiYWNrZ3JvdW5kOiAkcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kLFxuICAkdG9wOiAkcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIHRleHQtYWxpZ246ICRhbGlnbiAhaW1wb3J0YW50O1xuXG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSk7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIG1hcmdpbjogJHRvcCBhdXRvIDA7XG5cbiAgICBAaWYgJGFsaWduID09IGxlZnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaWYgJGFsaWduID09IHJpZ2h0IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yIHtcbiAgLnNlcGFyYXRvci1jZW50ZXIge1xuICAgIEBpbmNsdWRlIHNlcGFyYXRvcihjZW50ZXIpO1xuICB9XG5cbiAgLnNlcGFyYXRvci1sZWZ0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gIH1cblxuICAuc2VwYXJhdG9yLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1jZW50ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItbGVmdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItcmlnaHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtb3ZlcmZsb3dcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIG92ZXJmbG93IGhlbHBlciBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBvdmVyZmxvd2AgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1vdmVyZmxvdzogKFxuICB2aXNpYmxlLFxuICBoaWRkZW4sXG4gIHNjcm9sbFxuKSAhZGVmYXVsdDtcblxuLy8vIE92ZXJmbG93IGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzXG5AbWl4aW4gb3ZlcmZsb3coJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcbiAgQGlmICRvdmVyZmxvdyA9PSAnc2Nyb2xsJyB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIGhvcml6b250YWwgYXhpcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXMgKGhvcml6b250YWwgYXhpcylcbkBtaXhpbiBvdmVyZmxvdy14KCRvdmVyZmxvdykge1xuICBvdmVyZmxvdy14OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcbiAgQGlmICRvdmVyZmxvdyA9PSAnc2Nyb2xsJyB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIHZlcnRpY2FsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzICh2ZXJ0aWNhbCBheGlzKVxuQG1peGluIG92ZXJmbG93LXkoJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93LXk6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xuICBAaWYgJG92ZXJmbG93ID09ICdzY3JvbGwnIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgQGVhY2ggJG92ZXJmbG93IGluICRwcm90b3R5cGUtb3ZlcmZsb3cge1xuICAgIC5vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3coJG92ZXJmbG93KTtcbiAgICB9XG4gICAgLm92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXgoJG92ZXJmbG93KTtcbiAgICB9XG4gICAgLm92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXkoJG92ZXJmbG93KTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtb3ZlcmZsb3ctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXgtI3skb3ZlcmZsb3d9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LXktI3skb3ZlcmZsb3d9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1kaXNwbGF5XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBkaXNwbGF5IGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgZGlzcGxheWAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1kaXNwbGF5OiAoXG4gIGlubGluZSxcbiAgaW5saW5lLWJsb2NrLFxuICBibG9jayxcbiAgdGFibGUsXG4gIHRhYmxlLWNlbGxcbikgIWRlZmF1bHQ7XG5cbi8vLyBEaXNwbGF5IGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtZGlzcGxheWBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW10gRGlzcGxheSBjbGFzc2VzXG5AbWl4aW4gZGlzcGxheSgkZGlzcGxheSkge1xuICBkaXNwbGF5OiAkZGlzcGxheSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtZGlzcGxheSB7XG4gIEBlYWNoICRkaXNwbGF5IGluICRwcm90b3R5cGUtZGlzcGxheSB7XG4gICAgLmRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgICAgQGluY2x1ZGUgZGlzcGxheSgkZGlzcGxheSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWRpc3BsYXktYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tZGlzcGxheS0jeyRkaXNwbGF5fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1wb3NpdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcG9zaXRpb24gaGVscGVyc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgcG9zaXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtcG9zaXRpb246IChcbiAgc3RhdGljLFxuICByZWxhdGl2ZSxcbiAgYWJzb2x1dGUsXG4gIGZpeGVkXG4pICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgZml4ZWQgcG9zaXRpb25pbmdcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1ICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb24gY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1wb3NpdGlvbmAsIHdoZXJlYXMgYWxsIHRoZSBvZmZzZXQgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBvc2l0aW9uYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHBvc2l0aW9uIFtdIFBvc2l0aW9uIGNsYXNzZXMsIEVpdGhlciBgc3RhdGljYCwgYHJlbGF0aXZlYCwgYGFic29sdXRlYCBvciBgZml4ZWRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gVG9wIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUmlnaHQgb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gQm90dG9tIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBMZWZ0IG9mZnNldFxuQG1peGluIHBvc2l0aW9uKFxuICAkcG9zaXRpb24sXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHRvcDogJHRvcCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIHJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBsZWZ0OiAkbGVmdCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gdG9wIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLXRvcGBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC10b3AoXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgMCwgMCwgbnVsbCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gYm90dG9tIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLWJvdHRvbWBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC1ib3R0b20oXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgbnVsbCwgMCwgMCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb24ge1xuICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gIC5wb3NpdGlvbi1maXhlZC10b3Age1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcbiAgfVxuICAucG9zaXRpb24tZml4ZWQtYm90dG9tIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gICAgICAgIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLXRvcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC10b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ib3hcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBib3guXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBib3ggdXRpbGl0eVxuQG1peGluIGJvcmRlci1ib3gge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94IHtcbiAgLmJvcmRlci1ib3gge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3g7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlci1ib3gge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLW5vbmVcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlciBub25lLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIG5vbmUgdXRpbGl0eVxuQG1peGluIGJvcmRlci1ub25lIHtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZSB7XG4gIC5ib3JkZXItbm9uZSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyLW5vbmUtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXItbm9uZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2l6aW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzaXppbmdgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc2l6aW5nOiAoXG4gIHdpZHRoLFxuICBoZWlnaHRcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIHNpemVzLlxuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zaXplczogKFxuICAyNTogMjUlLFxuICA1MDogNTAlLFxuICA3NTogNzUlLFxuICAxMDA6IDEwMCVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXggV2lkdGggMTAwIHV0aWxpdHkuXG5AbWl4aW4gbWF4LXdpZHRoLTEwMCB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4vLy8gTWF4IEhlaWdodCAxMDAgdXRpbGl0eS5cbkBtaXhpbiBtYXgtaGVpZ2h0LTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZyB7XG4gIC8vIEVsZW1lbnQgU2l6aW5nXG4gIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xuICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgLiN7JHNpemluZ30tI3skbGVuZ3RofSB7XG4gICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWF4IHdpZHRoICYgaGVpZ2h0XG4gIC5tYXgtd2lkdGgtMTAwIHtcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgtMTAwO1xuICB9XG4gIC5tYXgtaGVpZ2h0LTEwMCB7XG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodC0xMDA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcbiAgICAgICAgICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgICAgICAgICAuI3skc2l6ZX0tI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcbiAgICAgICAgICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNwYWNpbmdcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNwYWNpbmcgY2xhc3NlcyAobWFyZ2luIGFuZCBwYWRkaW5nKVxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG51bWJlciBvZiBzcGFjZXJzIGNvdW50IChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNwYWNlcnMtY291bnQ6IDMgIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gaGVscGVyIG1peGluLCBhbGwgdGhlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1tYXJnaW5gIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gTWFyZ2luIFRvcFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gTWFyZ2luIFJpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gTWFyZ2luIEJvdHRvbVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBNYXJnaW4gTGVmdFxuQG1peGluIG1hcmdpbihcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIG1hcmdpbi10b3A6ICR0b3AgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBtYXJnaW4tbGVmdDogJGxlZnQgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBQYWRkaW5nIGhlbHBlciBtaXhpbiwgYWxsIHRoZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtcGFkZGluZ2Agd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBQYWRkaW5nIFRvcFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUGFkZGluZyBSaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIFBhZGRpbmcgQm90dG9tXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIFBhZGRpbmcgTGVmdFxuQG1peGluIHBhZGRpbmcoXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBAaWYgJHRvcCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLXRvcDogJHRvcCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XG4gICAgcGFkZGluZy1yaWdodDogJHJpZ2h0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgcGFkZGluZy1ib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbnVsbCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBNYXJnaW4gY2xhc3NlcyBmb3Igc3BlY2lmaWMgZGlyZWN0aW9uIHByb3BlcnRpZXNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpciBbXSBEaXJlY3Rpb25cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNlciBbXSBTcGFjZXJcbkBtaXhpbiBtYXJnaW4tZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpIHtcbiAgQGlmICgkZGlyID09IHRvcCkge1xuICAgIEBpbmNsdWRlIG1hcmdpbigkdG9wOiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSByaWdodCkge1xuICAgIEBpbmNsdWRlIG1hcmdpbigkcmlnaHQ6ICRzcGFjZXIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGJvdHRvbSkge1xuICAgIEBpbmNsdWRlIG1hcmdpbigkYm90dG9tOiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBsZWZ0KSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luKCRsZWZ0OiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBob3Jpem9udGFsKSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luKCRyaWdodDogJHNwYWNlciwgJGxlZnQ6ICRzcGFjZXIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHZlcnRpY2FsKSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luKCR0b3A6ICRzcGFjZXIsICRib3R0b206ICRzcGFjZXIpO1xuICB9XG59XG5cbi8vLyBQYWRkaW5nIGNsYXNzZXMgZm9yIHNwZWNpZmljIGRpcmVjdGlvbiBwcm9wZXJ0aWVzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXIgW10gRGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjZXIgW10gU3BhY2VyXG5AbWl4aW4gcGFkZGluZy1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcikge1xuICBAaWYgKCRkaXIgPT0gdG9wKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZygkdG9wOiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSByaWdodCkge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHJpZ2h0OiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBib3R0b20pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRib3R0b206ICRzcGFjZXIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGxlZnQpIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRsZWZ0OiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBob3Jpem9udGFsKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZygkcmlnaHQ6ICRzcGFjZXIsICRsZWZ0OiAkc3BhY2VyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSB2ZXJ0aWNhbCkge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHRvcDogJHNwYWNlciwgJGJvdHRvbTogJHNwYWNlcik7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmcge1xuICBAZm9yICRzcGFjZXIgZnJvbSAwIHRocm91Z2ggJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50IHtcblxuICAgIEBlYWNoICRwcm9wIGluIChtYXJnaW4sIHBhZGRpbmcpIHtcbiAgICAgIC8vIEFsbCBTaWRlc1xuICAgICAgLiN7JHByb3B9LSN7JHNwYWNlcn0ge1xuICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikge1xuICAgICAgICAgIG1hcmdpbjogJHNwYWNlciAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHtcbiAgICAgICAgICBwYWRkaW5nOiAkc3BhY2VyICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGVhY2ggJGRpciBpbiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBob3Jpem9udGFsLCB2ZXJ0aWNhbCkge1xuICAgICAgICAvLyBUb3AgU2lkZVxuICAgICAgICAuI3skcHJvcH0tI3skZGlyfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmctZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgQGZvciAkc3BhY2VyIGZyb20gMCB0aHJvdWdoICRwcm90b3R5cGUtc3BhY2Vycy1jb3VudCB7XG4gICAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9IHtcbiAgICAgICAgICAgICAgQGVhY2ggJHByb3AgaW4gKG1hcmdpbiwgcGFkZGluZykge1xuICAgICAgICAgICAgICAgIC8vIEFsbCBTaWRlc1xuICAgICAgICAgICAgICAgICYtI3skcHJvcH0tI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjZXIgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNlciAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBlYWNoICRkaXIgaW4gKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgaG9yaXpvbnRhbCwgdmVydGljYWwpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFRvcCBTaWRlXG4gICAgICAgICAgICAgICAgICAmLSN7JHByb3B9LSN7JGRpcn0tI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmctZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIEhlYWRlci5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uaGVhZGVyIHtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy1zIDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDc2KTtcblxuICAgIC5tYWluLW5hdmlnYXRpb25fX21lbnUtdG9nZ2xlIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmx1ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IHJlbS1jYWxjKDIpIHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgcmlnaHQ6ICRzcGFjaW5nO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC5iYXItaW5uZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjU1LCAuMDU1LCAuNjc1LCAuMTkpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNzVtcztcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICAgICAgICAgICAgbGVmdDogMTBweDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRvcCA3NW1zIGVhc2UgLjEycywgb3BhY2l0eSA3NW1zIGVhc2U7XG4gICAgICAgICAgICAgICAgdG9wOiAtNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAtNXB4O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJvdHRvbSA3NW1zIGVhc2UgLjEycywgdHJhbnNmb3JtIDc1bXMgY3ViaWMtYmV6aWVyKC41NSwgLjA1NSwgLjY3NSwgLjE5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5hdi1pcy1vcGVuICYge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IC4xMnM7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMjE1LCAuNjEsIC4zNTUsIDEpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdG9wIDc1bXMgZWFzZSwgb3BhY2l0eSA3NW1zIGVhc2UgLjEycztcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYm90dG9tIDc1bXMgZWFzZSwgdHJhbnNmb3JtIDc1bXMgY3ViaWMtYmV6aWVyKC4yMTUsIC42MSwgLjM1NSwgMSkgLjEycztcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWlzLW9wZW4gJiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWlzLW9wZW4uYWRtaW4tYmFyICYge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgLy8gNDYgKyAxMFxuICAgICAgICAgICAgdG9wOiByZW0tY2FsYyg1Nik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19sb2dvIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbGVmdDogJHNwYWNpbmc7XG4gICAgICAgIHRvcDogcmVtLWNhbGMoMTIpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNTBweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXMtb3BlbiAmIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWlzLW9wZW4uYWRtaW4tYmFyICYge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgLy8gNDYgKyAxMFxuICAgICAgICAgICAgdG9wOiByZW0tY2FsYyg1Nik7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbG9naW4ge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmctcztcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgICAgIGdhcDogcmVtLWNhbGMoMTApO1xuXG4gICAgICAgICYgc3ZnIHtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAkc3BhY2luZztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuXG4gICAgICAgICAgICAmIHN2ZyB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3NpZ251cCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDU1cHg7XG4gICAgICAgIGhlaWdodDogNTVweDtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1NXB4O1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmctcztcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgcGFkZGluZzogOXB4IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogODBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTdweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAkc3BhY2luZztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2lnbnVwLS1zcXVhcmUge1xuICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgIGh5cGhlbnM6IGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgd2lkdGg6IDExMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZyAwO1xuICAgICAgICAmX19sb2dvIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRzcGFjaW5nO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA4MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG5cbiAgICB9XG5cbn1cbiIsIi8qKlxuICogRm9vdGVyLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLnNpdGUtZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy1sO1xuXG4gICAgLmNlbGwtLWxlZnQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNlbGwtLXJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoMjApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdG9wIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZyAwIDA7XG4gICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWdyYXk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLWdyYXksIDAuNSk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICN7JHNwYWNpbmcgKyByZW0tY2FsYygxMCl9IDAgMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICN7JHNwYWNpbmctbSArIHJlbS1jYWxjKDEwKX0gMCAwO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWdyYXk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItZ3JheSwgMC41KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYm90dG9tIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy1sIDA7XG4gICAgfVxuXG4gICAgJl9fY29udGFjdC1pbmZvIHtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmcgMCAwO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19uZXdzbGV0dGVyIHtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmcgMCAwO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19tZXRhIHtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZyAwICRzcGFjaW5nLW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZGFyay1ncmF5O1xuXG4gICAgICAgICYtLXBob25lIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1lbWFpbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZvb3Rlci1uYXZpZ2F0aW9uIHtcbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLXMgMDtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2luZy1zO1xuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBhIHtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4iLCIuY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtYXJnaW46ICRzcGFjaW5nIDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgcGFkZGluZzogMTBweCAwIDA7XG4gICAgbWluLXdpZHRoOiAxMDAlO1xuXG4gICAgLnNlY3Rpb25fX2ZpbmRlciAmIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAvL1xuICAgIC8vJjo6YWZ0ZXIge1xuICAgIC8vICAgIGNvbnRlbnQ6ICcnO1xuICAgIC8vICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIC8vICAgIHdpZHRoOiAxMDAlO1xuICAgIC8vICAgIGhlaWdodDogMTBweDtcbiAgICAvLyAgICBtYXJnaW46IHJlbS1jYWxjKDEwIDApO1xuICAgIC8vICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAvL31cblxuICAgICYtLW1heC13aWR0aCB7XG4gICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoNDAwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICB9XG5cbiAgICAmLS1ob3ZlciB7XG4gICAgICAgIC8vIE9ubHkgZm9yIGZyb250IGVuZFxuICAgICAgICBAaWYgKCRlZGl0b3IgIT0gdHJ1ZSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0zcHgpO1xuXG4gICAgICAgICAgICAgICAgLmNhcmRfX2ltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItYmxhY2ssIDAuMik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuY2FyZF9fYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTRweCwgLTJweCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2FyZF9faW1hZ2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTUwcHg7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItYmxhY2ssIDApO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiA5O1xuICAgIH1cbn1cblxuLmNhcmRfX3RpdGxlIHtcbiAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg1KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgJi0tdm8td2hpdGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIH1cbn1cblxuLmNhcmRfX3RleHQge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgJi0tdm8td2hpdGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIH1cbn1cblxuLmNhcmRfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDExO1xuXG4gICAgYm90dG9tOiAtJHNwYWNpbmc7XG4gICAgcmlnaHQ6IC0kc3BhY2luZztcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI2KTtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgd2lkdGg6IDU1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDUxcHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDM2KTtcbiAgICAgICAgaGVpZ2h0OiA2NXB4O1xuICAgICAgICB3aWR0aDogNjVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDU4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQyKTtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDc0cHg7XG4gICAgfVxufVxuXG4uY2FyZF9fZGF0ZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNCk7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cblxuLmNhcmRfX2xvY2F0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy1zO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbn1cblxuXG4uY2FyZF9fbGluayB7XG4gICAgLy8gRWRpdG9yIG9ubHlcbiAgICBAaWYgKCRlZGl0b3IgPT0gdHJ1ZSkge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmNhcmRfX2lubmVyIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMCAkc3BhY2luZy1sICRzcGFjaW5nLWw7XG5cbiAgICAuY2FyZF9fdGl0bGUge1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgICAgICYuaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoNTIwKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZF9fbGluayB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgJi0tdm8tcHVycGxlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXB1cnBsZTtcblxuICAgICAgICAuY2FyZF9fbGluayB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tdm8tYmx1ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibHVlO1xuXG4gICAgICAgIC5jYXJkX19saW5rIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS12by15ZWxsb3cge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O1xuXG4gICAgICAgIC5jYXJkX19saW5rIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS12by1ibGFjayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcblxuICAgICAgICAuY2FyZF9fbGluayB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbWluLWhlaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyODBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNhcmQtLWtub3dsZWRnZSB7XG4gICAgLmNhcmRfX2lubmVyIHtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctbDtcbiAgICB9XG5cbiAgICAuY2FyZF9fdGV4dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDUpO1xuICAgIH1cblxuICAgIC5jYXJkX190b3Atd3JhcCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAuY2FyZF9fdGl0bGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAua25vd2xlZGdlLWZpbHRlci0tdGVybXMge1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2xhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5saW5lLXNlbGVjdC1maWx0ZXJfX2J1dHRvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgfVxuXG4gICAgLmNhcmRfX2N0YS13cmFwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG5cbiAgICAuY2FyZF9fZm9ybSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5jYXJkX19zdWJtaXQtZm9ybSB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDE0IDMwKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsdWU7XG4gICAgfVxuXG4gICAgLmNhcmRfX2xpbmsge1xuICAgICAgICBmbGV4LWJhc2lzOiB1bnNldDtcbiAgICAgICAgbWluLXdpZHRoOiB1bnNldDtcbiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbn1cblxuLmNhcmRfX2V4Y2VycHQge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAvKiBhdXRvcHJlZml4ZXI6IG9mZiAqL1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLyogYXV0b3ByZWZpeGVyOiBvbiAqL1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoOCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLmNhcmRfX3RhZ3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogcmVtLWNhbGMoOCk7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMjApO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNiAxNCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLmNhcmQtLWxhcmdlIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDMwKTtcblxuICAgICAgICAuY2FyZF9faW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmRfX2luZm8ge1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLyAzKSAqIDIpO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYygzMCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZF9fdGl0bGUgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0Nik7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZF9fZXhjZXJwdCB7XG4gICAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJkX19kYXRlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZF9fdGFncyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygzNik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubWFpbi1uYXZpZ2F0aW9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgdG9wOiAtMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3Itd2hpdGUsIDEpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDk5O1xuICAgIHRyYW5zaXRpb246IGFsbCAuM3MgY3ViaWMtYmV6aWVyKC42OTQsIC4wNDgyLCAuMzM1LCAxKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoNzYpO1xuXG4gICAgLm5hdi1pcy1vcGVuICYge1xuICAgICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgLm5hdi1pcy1vcGVuLmFkbWluLWJhciAmIHtcbiAgICAgICAgdG9wOiByZW0tY2FsYyg0Nik7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDZweCk7XG4gICAgfVxuXG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiByZW0tY2FsYygxNCk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgICAgICAmIC5tYWluLW5hdmlnYXRpb25fX3NlY29uZCB7XG5cbiAgICAgICAgICAgICYgaDMge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjJweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgcCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTYpIHJlbS1jYWxjKDMyKTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY5QzlGQjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6ICRjb2xvci1ibGFjayBzb2xpZCByZW0tY2FsYyg2KTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgIC5zdWJtZW51LWluZGljYXRvciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1ncmF5LCAwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMTApO1xuXG4gICAgICAgICAgICAgICAgaSwgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYTpob3ZlcixcbiAgICAgICAgICAgIGE6Zm9jdXMsXG4gICAgICAgICAgICAmLmN1cnJlbnQtbWVudS1pdGVtID4gYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wdXJwbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuc2hvdy1zdWItbmF2IHtcbiAgICAgICAgICAgICAgICAmLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xuICAgICAgICAgICAgICAgICAgICAuc3VibWVudS1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCkgcm90YXRlKDE4MGRlZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAkY29sb3ItcHVycGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnNob3ctc3ViLW5hdiAuc3ViLW1lbnUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdWwuc3ViLW1lbnUge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIHJlbS1jYWxjKDIwKTtcblxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm1vYmlsZV9fc2VhcmNoIHtcbiAgICAgICAgICAgIGZvcm0ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZztcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXG4gICAgICAgIC5tZW51IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogdW5zZXQgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgICAgIC5zdWJtZW51LWluZGljYXRvciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNpbmctc20gMDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG5cbiAgICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wdXJwbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGE6aG92ZXIsXG4gICAgICAgICAgICAgICAgYTpmb2N1cyxcbiAgICAgICAgICAgICAgICAmLmN1cnJlbnQtbWVudS1pdGVtID4gYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHVycGxlO1xuXG4gICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjZweDtcblxuICAgICAgICAgICAgICAgICAgICA+IGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2luZy14cztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5zdWJtZW51LWluZGljYXRvciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVsLnN1Yi1tZW51IHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSA1cHgpO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTVweCk7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDExMDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGdhcDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDE1MCk7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5zaG93LXN1Yi1uYXYsXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICYubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuc3VibWVudS1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpIHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdWwuc3ViLW1lbnUge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1vYmlsZV9fbG9naW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tb2JpbGVfX3NlYXJjaCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmctc207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnBhZ2luYXRpb25fX2NvbnRhaW5lciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLnBhZ2UtbnVtYmVycyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiAkbGlnaHQtZ3JheTtcbiAgICAgICAgbWFyZ2luOiAwIDVweDtcblxuICAgICAgICAmLmN1cnJlbnQsICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRkYXJrLWdyYXk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubG9hZGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4ubG9hZGVyIGRpdiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMzNweDtcbiAgICB3aWR0aDogMTNweDtcbiAgICBoZWlnaHQ6IDEzcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibGFjaztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMSwgMSwgMCk7XG59XG5cbi5sb2FkZXIgZGl2Om50aC1jaGlsZCgxKSB7XG4gICAgbGVmdDogOHB4O1xuICAgIGFuaW1hdGlvbjogbG9hZGVyMSAwLjZzIGluZmluaXRlO1xufVxuXG4ubG9hZGVyIGRpdjpudGgtY2hpbGQoMikge1xuICAgIGxlZnQ6IDhweDtcbiAgICBhbmltYXRpb246IGxvYWRlcjIgMC42cyBpbmZpbml0ZTtcbn1cblxuLmxvYWRlciBkaXY6bnRoLWNoaWxkKDMpIHtcbiAgICBsZWZ0OiAzMnB4O1xuICAgIGFuaW1hdGlvbjogbG9hZGVyMiAwLjZzIGluZmluaXRlO1xufVxuXG4ubG9hZGVyIGRpdjpudGgtY2hpbGQoNCkge1xuICAgIGxlZnQ6IDU2cHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkZXIzIDAuNnMgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbG9hZGVyMSB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbG9hZGVyMyB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbG9hZGVyMiB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDI0cHgsIDApO1xuICAgIH1cbn1cbiIsIi5wcmljZS1jdGEge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG59XG5cbi5wcmljZS1jdGFfX2lubmVyIHtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ucHJpY2UtY3RhX19pbWFnZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHdpZHRoOiAxMDAlO1xuXG59XG5cbi5wcmljZS1jdGFfX2ltYWdlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgJjpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIH1cbn1cblxuLnByaWNlLWN0YV9fY29udGVudCB7XG4gICAgcGFkZGluZzogJHNwYWNpbmc7XG4gICAgbWF4LXdpZHRoOiByZW0tY2FsYyg0MDApO1xuICAgIG1pbi13aWR0aDogcmVtLWNhbGMoMjMwKTtcbn1cblxuLnByaWNlLWN0YV9fdGl0bGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAucHJpY2UtY3RhX19pbWFnZXMge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAucHJpY2UtY3RhX19pbWFnZTpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5wcmljZS1jdGFfX2NvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygyMCk7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLnByaWNlLWN0YV9faW1hZ2U6bnRoLW9mLXR5cGUoMykge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG4iLCIvKipcbiAqIEdyYXZpdHkgRm9ybXNcbiAqXG4gKiAoISkgRGlzYWJsZSB0aGUgR3Jhdml0eSBGb3JtcyBzdHlsZSBiZWZvcmUgdXNpbmcgdGhpcyBmaWxlLlxuICogVGhpcyBnaXZlcyB0aGUgR3Jhdml0eSBGb3JtcyBmb3JtIHRoZSBiYXNpYyBzdHlsaW5nIGl0IG5lZWRzLlxuICogVGhlIGlucHV0cyBhcmUgbm90IHN0eWxlZCBpbiB0aGlzIGZpbGUuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBTZXR0aW5nc1xuICovXG5cbiRnZi1maWVsZC1tYXJnaW46ICRncmlkLW1hcmdpbi1ndXR0ZXJzO1xuJGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZzogKCRnZi1maWVsZC1tYXJnaW4gLyAyKTtcbiRnZi1maWVsZC12ZXJ0aWNhbC1wYWRkaW5nOiAoJGdmLWZpZWxkLW1hcmdpbiAvIDIpO1xuXG4vKipcbiAqIEhlYWRlciwgYm9keSwgZm9vdGVyXG4gKi9cblxuLmdmb3JtX2hlYWRpbmcsXG4uZ2Zvcm1fYm9keSxcbi5nZm9ybV9mb290ZXIge1xuICAgIGNsZWFyOiBib3RoO1xufVxuXG4vKipcbiAqIENvbnRhaW5lcnNcbiAqL1xuXG51bC5nZm9ybV9maWVsZHMge1xuICAgIEBleHRlbmQgJXVuc3R5bGVkLWxpc3Q7XG59XG5cbi8qKlxuICogRmllbGRzXG4gKi9cblxubGkuZ2ZpZWxkIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBwYWRkaW5nOiAxNXB4IDAgMCAwO1xuXG4gICAgJi5oaWRkZW5fbGFiZWwge1xuICAgICAgICBsYWJlbC5nZmllbGRfbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmdpbnB1dF9jb250YWluZXIge1xuICAgIGxpIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG5cbiAgICBpbnB1dCxcbiAgICBzZWxlY3QsXG4gICAgdGV4dGFyZWEge1xuICAgICAgICAmLmxhcmdlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tZWRpdW0ge1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMjBweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNtYWxsIHtcbiAgICAgICAgICAgIHdpZHRoOiAyNSU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICAgIG1hcmdpbjogMnB4O1xuICAgIH1cbn1cblxubGFiZWwuZ2ZpZWxkX2xhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZy1ib3R0b206ICRnZi1maWVsZC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAubGVmdF9sYWJlbCAmIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiAyNSU7XG4gICAgfVxuXG4gICAgLnJpZ2h0X2xhYmVsICYge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHdpZHRoOiAyNSU7XG4gICAgfVxufVxuXG4uZ2ZpZWxkX3JlcXVpcmVkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICBjb2xvcjogJGFsZXJ0LWNvbG9yO1xufVxuXG4uZ2ZpZWxkX2Rlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogJGRhcmstZ3JheTtcbiAgICBtYXJnaW46IDAgMCAjeyRnZi1maWVsZC1tYXJnaW59IDA7XG59XG5cbi5nZm9ybV9oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5naW5wdXRfcHJldmlldyB7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIHBhZGRpbmc6ICRnZi1maWVsZC1ob3Jpem9udGFsLXBhZGRpbmcgJGdmLWZpZWxkLXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIGltZyB7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4IDAgMDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9uc1xuICovXG5cbnVsLmdmaWVsZF9jaGVja2JveCxcbnVsLmdmaWVsZF9yYWRpbyxcbi5naW5wdXRfY29udGFpbmVyX2NvbnNlbnQge1xuICAgIEBleHRlbmQgJXVuc3R5bGVkLWxpc3Q7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgbGkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMCAxNXB4IDAgMDtcbiAgICB9XG59XG5cbi8qKlxuICogU2VjdGlvbiBicmVha1xuICovXG5cbi5nc2VjdGlvbiB7XG4gICAgaDIge1xuICAgIH1cbn1cblxuLyoqXG4gKiBQcm9ncmVzcyBCYXJcbiAqL1xuXG4uZ2ZfcHJvZ3Jlc3NiYXJfd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICRnZi1maWVsZC12ZXJ0aWNhbC1wYWRkaW5nO1xufVxuXG4uZ2ZfcHJvZ3Jlc3NiYXIge1xuICAgIGJhY2tncm91bmQ6IGdyYXk7XG59XG5cbi5nZl9wcm9ncmVzc2Jhcl9wZXJjZW50YWdlIHtcbiAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi8qKlxuICogU3RlcHNcbiAqL1xuXG4uZ2ZfcGFnZV9zdGVwcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDAgMCAjeyRnZi1maWVsZC1tYXJnaW59IDA7XG5cbiAgICAuZ2Zfc3RlcCB7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAjeyRnZi1maWVsZC12ZXJ0aWNhbC1wYWRkaW5nfSAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMSk7XG4gICAgICAgIGNvbG9yOiAkZGFyay1ncmF5O1xuICAgIH1cblxuICAgIC5nZl9zdGVwX2FjdGl2ZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICAuZ2Zfc3RlcF9udW1iZXIge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcuJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAuZ2Zfc3RlcCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFRpbWUgRmllbGRcbiAqL1xuXG4uZ2ZpZWxkX3RpbWVfaG91cixcbi5nZmllbGRfdGltZV9taW51dGUsXG4uZ2ZpZWxkX3RpbWVfYW1wbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZ2ZpZWxkX3RpbWVfaG91cixcbi5nZmllbGRfdGltZV9taW51dGUge1xuICAgIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uZ2ZpZWxkX3RpbWVfYW1wbSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0aW9uXG4gKi9cblxuLnZhbGlkYXRpb25fZXJyb3Ige1xuICAgIGJhY2tncm91bmQ6ICRhbGVydC1jb2xvcjtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgcGFkZGluZzogJGdmLWZpZWxkLXZlcnRpY2FsLXBhZGRpbmcgJGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZztcbn1cblxubGkuZ2ZpZWxkIHtcbiAgICAmLmdmaWVsZF9jb250YWluc19yZXF1aXJlZCB7XG4gICAgfVxuXG4gICAgLnZhbGlkYXRpb25fbWVzc2FnZSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRnZi1maWVsZC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWxlcnQtY29sb3I7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogNXB4IDE1cHg7XG5cbiAgICAgICAgJjplbXB0eSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZ2Zvcm1fdmFsaWRhdGlvbl9jb250YWluZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICogQWxpZ25tZW50IENsYXNzZXNcbiAqL1xuXG4uZ2lucHV0X2Z1bGwsXG4uZ2lucHV0X2xlZnQsXG4uZ2lucHV0X3JpZ2h0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGlucHV0LFxuICAgIHNlbGVjdCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi5naW5wdXRfbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZy1yaWdodDogJGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZztcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAjeyRnZi1maWVsZC1ob3Jpem9udGFsLXBhZGRpbmd9KTtcbn1cblxuLmdpbnB1dF9yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiA1MCU7XG59XG5cbi8qKlxuICogTGF5b3V0IEJsb2Nrc1xuICovXG5cbmxpLmdmX2xlZnRfaGFsZixcbmxpLmdmX3JpZ2h0X2hhbGYsXG5saS5nZl9sZWZ0X3RoaXJkLFxubGkuZ2ZfbWlkZGxlX3RoaXJkLFxubGkuZ2ZfcmlnaHRfdGhpcmQsXG5saS5nZl9maXJzdF9xdWFydGVyLFxubGkuZ2Zfc2Vjb25kX3F1YXJ0ZXIsXG5saS5nZl90aGlyZF9xdWFydGVyLFxubGkuZ2ZfZm91cnRoX3F1YXJ0ZXIge1xuICAgIGNsZWFyOiBub25lO1xuICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbn1cblxubGkuZ2ZfbGVmdF9oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkZ2YtZmllbGQtaG9yaXpvbnRhbC1wYWRkaW5nO1xuICAgIHdpZHRoOiBjYWxjKDUwJSAtICN7JGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZ30pO1xufVxuXG5saS5nZl9yaWdodF9oYWxmIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgd2lkdGg6IDUwJTtcbn1cblxubGkuZ2ZfbGVmdF90aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZy1yaWdodDogJGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZztcbiAgICB3aWR0aDogY2FsYygzMyUgLSAjeyRnZi1maWVsZC1ob3Jpem9udGFsLXBhZGRpbmd9KTtcbn1cblxubGkuZ2ZfbWlkZGxlX3RoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkZ2YtZmllbGQtaG9yaXpvbnRhbC1wYWRkaW5nO1xuICAgIHdpZHRoOiBjYWxjKDM0JSAtICN7JGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZ30pO1xufVxuXG5saS5nZl9yaWdodF90aGlyZCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiAzMyU7XG59XG5cbmxpLmdmX2ZpcnN0X3F1YXJ0ZXIge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmctcmlnaHQ6ICRnZi1maWVsZC1ob3Jpem9udGFsLXBhZGRpbmc7XG4gICAgd2lkdGg6IGNhbGMoMjUlIC0gI3skZ2YtZmllbGQtaG9yaXpvbnRhbC1wYWRkaW5nfSk7XG59XG5cbmxpLmdmX3NlY29uZF9xdWFydGVyIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkZ2YtZmllbGQtaG9yaXpvbnRhbC1wYWRkaW5nO1xuICAgIHdpZHRoOiBjYWxjKDI1JSAtICN7JGdmLWZpZWxkLWhvcml6b250YWwtcGFkZGluZ30pO1xufVxuXG5saS5nZl90aGlyZF9xdWFydGVyIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogMjUlO1xufVxuXG5saS5nZl9mb3VydGhfcXVhcnRlciB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiAyNSU7XG59XG5cbmxpIHtcbiAgICAmLmdmX2xlZnRfaGFsZixcbiAgICAmLmdmX3JpZ2h0X2hhbGYsXG4gICAgJi5nZl9sZWZ0X3RoaXJkLFxuICAgICYuZ2ZfbWlkZGxlX3RoaXJkLFxuICAgICYuZ2ZfcmlnaHRfdGhpcmQsXG4gICAgJi5nZl9maXJzdF9xdWFydGVyLFxuICAgICYuZ2Zfc2Vjb25kX3F1YXJ0ZXIsXG4gICAgJi5nZl90aGlyZF9xdWFydGVyLFxuICAgICYuZ2ZfZm91cnRoX3F1YXJ0ZXIge1xuICAgICAgICBpbnB1dCxcbiAgICAgICAgaW5wdXQubWVkaXVtLFxuICAgICAgICBpbnB1dC5sYXJnZSxcbiAgICAgICAgaW5wdXQuc21hbGwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZl9saXN0XzJjb2wge1xuICAgIHVsLmdmaWVsZF9jaGVja2JveCxcbiAgICB1bC5nZmllbGRfcmFkaW8ge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZl9saXN0XzNjb2wge1xuICAgIHVsLmdmaWVsZF9jaGVja2JveCxcbiAgICB1bC5nZmllbGRfcmFkaW8ge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbiAgICAgICAgICAgIHdpZHRoOiAzMyU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZl9saXN0XzRjb2wge1xuICAgIHVsLmdmaWVsZF9jaGVja2JveCxcbiAgICB1bC5nZmllbGRfcmFkaW8ge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbiAgICAgICAgICAgIHdpZHRoOiAyNSU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZl9saXN0XzVjb2wge1xuICAgIHVsLmdmaWVsZF9jaGVja2JveCxcbiAgICB1bC5nZmllbGRfcmFkaW8ge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbiAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZl9saXN0X2lubGluZSB7XG4gICAgdWwuZ2ZpZWxkX2NoZWNrYm94LFxuICAgIHVsLmdmaWVsZF9yYWRpbyB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2YtZmllbGQtdmVydGljYWwtcGFkZGluZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgbGkge1xuICAgICAgICAmLmdmX2xlZnRfaGFsZixcbiAgICAgICAgJi5nZl9yaWdodF9oYWxmLFxuICAgICAgICAmLmdmX2xlZnRfdGhpcmQsXG4gICAgICAgICYuZ2ZfbWlkZGxlX3RoaXJkLFxuICAgICAgICAmLmdmX3JpZ2h0X3RoaXJkLFxuICAgICAgICAmLmdmX2ZpcnN0X3F1YXJ0ZXIsXG4gICAgICAgICYuZ2Zfc2Vjb25kX3F1YXJ0ZXIsXG4gICAgICAgICYuZ2ZfdGhpcmRfcXVhcnRlcixcbiAgICAgICAgJi5nZl9mb3VydGhfcXVhcnRlciB7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3skZ3JpZC1tYXJnaW4tZ3V0dGVyc30pO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGdyaWQtbWFyZ2luLWd1dHRlcnM7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIC5nZl9saXN0XzJjb2wsXG4gICAgLmdmX2xpc3RfM2NvbCxcbiAgICAuZ2ZfbGlzdF80Y29sLFxuICAgIC5nZl9saXN0XzVjb2wge1xuICAgICAgICB1bC5nZmllbGRfY2hlY2tib3gsXG4gICAgICAgIHVsLmdmaWVsZF9yYWRpbyB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2lucHV0X3JpZ2h0LFxuICAgIC5naW5wdXRfbGVmdCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEYXRlIFBpY2tlclxuICovXG4udWktZGF0ZXBpY2tlciB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgkYmxhY2ssIDAuMSk7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuXG4gICAgKiB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuXG4gICAgdGFibGUge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgfVxuXG4gICAgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgICAgICAudWktZGF0ZXBpY2tlci1wcmV2LFxuICAgICAgICAudWktZGF0ZXBpY2tlci1uZXh0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGVhZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgIH1cblxuICAgIC51aS1kYXRlcGlja2VyLXRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogMTVweCAxNXB4IDAgMTVweDtcblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoIHtcbiAgICAgICAgcGFkZGluZzogMC43NWVtIDA7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAudWktc3RhdGUtZGVmYXVsdCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIGNvbG9yOiAkZGFyay1ncmF5O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIH1cblxuICAgICAgICAudWktc3RhdGUtYWN0aXZlLFxuICAgICAgICAudWktc3RhdGUtaG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZC51aS1zdGF0ZS1kaXNhYmxlZCxcbiAgICB0ZC51aS1zdGF0ZS1kaXNhYmxlZCAudWktc3RhdGUtZGVmYXVsdCB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgfVxufVxuXG4vLyBmb3JtIGF0IHBhZ2VzXG5cbi5nZm9ybV93cmFwcGVyIHtcbiAgICBmb3JtI2dmb3JtXzEge1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDUwMHB4O1xuXG4gICAgICAgIGlucHV0LCBzZWxlY3Qge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBQYWdlIHRlbXBsYXRlXG4uZmluZC1hIHtcblxuICAgICZfX3NlbGVjdCxcbiAgICAmX190ZXh0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDQ4JTtcblxuICAgICAgICAmLS1zZWN0aW9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tbmFtZSB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1sYW5ndWFnZXMtZnJvbSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxhbmd1YWdlcy10byB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0LCBzZWxlY3Qge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgJl9fcmVzcG9uc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctbDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLSRzcGFjaW5nLWw7XG5cbiAgICAgICAgJi10aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nLWwgMDtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gU2luZ2xlIGl0ZW1cbi5maW5kLWEtaXRlbSB7XG4gICAgbWF4LXdpZHRoOiByZW0tY2FsYyg4MDApO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLXVwO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICRlYXNpbmc7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG5cbiAgICAmX19kZXRhaWxzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmX19nZXQtZGV0YWlscyB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cblxuICAgICZfX21ldGEtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctcztcbiAgICB9XG5cbiAgICAmX19sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJl9fbWV0YSB7XG5cbiAgICB9XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICAgICAgJl9faW5uZXIge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBEZXRhaWxzIGluIGl0ZW1cbi5maW5kLWEtZGV0YWlscyB7XG5cbn1cbiIsIi8qIEd1dGVuYmVyZyAqL1xuQGltcG9ydCAnZ3V0ZW5iZXJnL3dwLWJsb2NrLW1lZGlhLXRleHQnO1xuQGltcG9ydCAnZ3V0ZW5iZXJnL3dwLWJsb2NrLWVtYmVkJztcbkBpbXBvcnQgJ2d1dGVuYmVyZy93cC1ibG9jay1idXR0b24nO1xuXG4vKiBDb21wb25lbnRzICovXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Zvcm1zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Bvc3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9zZWFyY2gtZm9ybSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NvY2lhbC1tZWRpYSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NlY3Rpb25zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWdlbmRhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmVsYXRlZC1wYWdlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2dsb2JhbC1jdGEnO1xuQGltcG9ydCAnY29tcG9uZW50cy9rbm93bGVkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWNrZ3JvdW5kcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZpbHRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NlYXJjaC1maWx0ZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9lbnRyeSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9rbm93bGVkZ2UtaXRlbSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlLW91dCc7XG5cbkBpbXBvcnQgXCJjb21wb25lbnRzL3BhZ2UtaXRlbVwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvcG9zdC1pdGVtXCI7XG5cbi8qIEJsb2NrcyAqL1xuQGltcG9ydCAnYmxvY2tzL2ZlYXR1cmVkJztcbkBpbXBvcnQgJ2Jsb2Nrcy9zZWN0aW9uLWNsb3VkJztcbkBpbXBvcnQgJ2Jsb2Nrcy9wcmljZXMnO1xuQGltcG9ydCAnYmxvY2tzL3VwY29taW5nLWFnZW5kYSc7XG5AaW1wb3J0ICdibG9ja3MvZW1haWxzJztcbkBpbXBvcnQgJ2Jsb2Nrcy9sYXRlc3QtcG9zdHMnO1xuQGltcG9ydCAnYmxvY2tzL2xvY2F0aW9ucyc7XG5AaW1wb3J0ICdibG9ja3MvcmVhc29ucyc7XG5AaW1wb3J0ICdibG9ja3MvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2Jsb2Nrcy9xdW90ZSc7XG5AaW1wb3J0ICdibG9ja3MvcGVvcGxlJztcbkBpbXBvcnQgJ2Jsb2Nrcy90YWJzJztcbkBpbXBvcnQgJ2Jsb2Nrcy9hbmNob3InO1xuQGltcG9ydCAnYmxvY2tzL2tub3dsZWRnZSc7XG5AaW1wb3J0ICdibG9ja3MvaGVyby0yMDIzJztcblxuQGltcG9ydCAnYmxvY2tzL2hlcm8tYWx0JztcbkBpbXBvcnQgJ2Jsb2Nrcy9jdGEtYWx0JztcbkBpbXBvcnQgJ2Jsb2Nrcy9wYWdlLWl0ZW1zJztcblxuLyogUHJpY2UgMjAyMSAqL1xuQGltcG9ydCBcInByaWNlLTIwMjEvdGVtcGxhdGVcIjtcbkBpbXBvcnQgXCJwcmljZS0yMDIxL25hdmlnYXRpb25cIjtcbkBpbXBvcnQgXCJwcmljZS0yMDIxL2hlcm9cIjtcbkBpbXBvcnQgXCJwcmljZS0yMDIxL2ludHJvLWhpZ2hsaWdodFwiO1xuQGltcG9ydCBcInByaWNlLTIwMjEvY2FyZFwiO1xuQGltcG9ydCBcInByaWNlLTIwMjEvbm9taW5lZXNcIjtcbkBpbXBvcnQgXCJwcmljZS0yMDIxL3ByZXZpb3VzLXdpbm5lcnNcIjtcbkBpbXBvcnQgXCJwcmljZS0yMDIxL2xhc3Qtd2lubmVyXCI7XG5AaW1wb3J0IFwicHJpY2UtMjAyMS9hYm91dFwiO1xuQGltcG9ydCBcInByaWNlLTIwMjEvdmlkZW9cIjtcbiIsIi53cC1ibG9jay1tZWRpYS10ZXh0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1tZWRpYS10ZXh0X19tZWRpYSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLndwLWJsb2NrLW1lZGlhLXRleHRfX2NvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkc3BhY2luZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndwLWJsb2NrLW1lZGlhLXRleHQuaGFzLW1lZGlhLW9uLXRoZS1yaWdodCB7XG4gICAgLndwLWJsb2NrLW1lZGlhLXRleHRfX21lZGlhIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHNwYWNpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndwLWJsb2NrLW1lZGlhLXRleHRfX2NvbnRlbnQgLmhhcy1sYXJnZS1mb250LXNpemUge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cbiIsIi53cC1ibG9jay1lbWJlZCB7XG4gICAgbWF4LXdpZHRoOiByZW0tY2FsYyg3OTApO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cbiIsIi53cC1ibG9jay1idXR0b24ge1xuXG59XG5cbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgIEBpbmNsdWRlIHZvLWhhcy1jb2xvcigpO1xuICAgIEBpbmNsdWRlIHZvLWhhcy1iYWNrZ3JvdW5kLWNvbG9yKCcmJywgdHJ1ZSk7XG4gICAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XG5cbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogQnV0dG9uLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbkBtaXhpbiBidXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg4KSByZW0tY2FsYygxNik7XG4gICAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGNvbG9yLXByaW1hcnk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB9XG59XG5cbi5idXR0b24sXG4ud3AtY29yZS11aS5idXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICc+JztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLXM7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTNweCwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS12by1wdXJwbGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXB1cnBsZTtcbiAgICB9XG5cbiAgICAmLS12by15ZWxsb3cge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXllbGxvdztcbiAgICB9XG5cbiAgICAmLS12by1ibHVlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibHVlO1xuICAgIH1cblxuICAgICYtLXZvLWdyZWVuIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICB9XG5cbiAgICAmLS12by1ncmF5IHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ncmF5O1xuICAgIH1cblxuICAgICYtLXZvLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAmLS12by13aGl0ZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgfVxuXG4gICAgJi0tbGFyZ2Uge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQ2KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXJvdW5kZWQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgfVxuXG4gICAgJi0tY2xlYW4ge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JheTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1ncmF5LCAxMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5idXR0b24tLXZvLXB1cnBsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHVycGxlICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLXB1cnBsZSwgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuYnV0dG9uLS12by15ZWxsb3cge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXllbGxvdyAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci15ZWxsb3csIDEwJSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ1dHRvbi0tdm8tYmx1ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmx1ZSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1ibHVlLCAxMCUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5idXR0b24tLXZvLWdyZWVuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmVlbiAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1ncmVlbiwgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogRm9ybXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4kaW5wdXQtYmFja2dyb3VuZDogJGNvbG9yLXdoaXRlO1xuJGlucHV0LWJvcmRlci13aWR0aDogMXB4O1xuJGlucHV0LWJvcmRlci1zdHlsZTogc29saWQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiRpbnB1dC1ib3JkZXItZm9jdXMtY29sb3I6ICRjb2xvci1tZWRpdW0tZ3JheTtcbiRpbnB1dC1wYWRkaW5nOiAxMHB4IDE1cHg7XG4kdGV4dGFyZWEtbGluZS1oZWlnaHQ6IDEuMjVyZW07XG5cbi8qKlxuICogQmFzaWMgc3R5bGluZ1xuICovXG5cbmlucHV0Om5vdChbdHlwZV0pLFxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSd1cmwnXSxcbmlucHV0W3R5cGU9J2RhdGUnXSxcbmlucHV0W3R5cGU9J21vbnRoJ10sXG5pbnB1dFt0eXBlPSd0aW1lJ10sXG5pbnB1dFt0eXBlPSdkYXRldGltZSddLFxuaW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcbmlucHV0W3R5cGU9J3dlZWsnXSxcbmlucHV0W3R5cGU9J251bWJlciddLFxuaW5wdXRbdHlwZT0nc2VhcmNoJ10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbnRleHRhcmVhIHtcbiAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggJGlucHV0LWJvcmRlci1zdHlsZSAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjpmb2N1cyxcbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCAkaW5wdXQtYm9yZGVyLXN0eWxlICRpbnB1dC1ib3JkZXItZm9jdXMtY29sb3I7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogJG1lZGl1bS1ncmF5O1xuICAgIH1cbn1cblxuLyoqXG4gKiBUZXh0YXJlYVxuICovXG5cbnRleHRhcmVhIHtcbiAgICBsaW5lLWhlaWdodDogJHRleHRhcmVhLWxpbmUtaGVpZ2h0O1xufVxuXG4vKipcbiAqIENoZWNrYm94IGFuZCByYWRpb1xuICovXG5cbmlucHV0W3R5cGU9J2NoZWNrYm94J10sXG5pbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLyoqXG4gKiBCdXR0b25zXG4gKi9cblxuYnV0dG9uLFxuaW5wdXRbdHlwZT0nYnV0dG9uJ10sXG5pbnB1dFt0eXBlPSdyZXNldCddLFxuaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyoqXG4gKiBTZWxlY3RcbiAqL1xuXG5zZWxlY3Qge1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCAkaW5wdXQtYm9yZGVyLXN0eWxlICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogRGlzYWJsZWRcbiAqL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaW5wdXRbZGlzYWJsZWRdLFxuc2VsZWN0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFNlYXJjaFxuICovXG5cbmlucHV0W3R5cGU9J3NlYXJjaCddIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbn1cblxuaW5wdXRbdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIENvbG9yXG4gKi9cblxuaW5wdXRbdHlwZT0nY29sb3InXSB7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoICRpbnB1dC1ib3JkZXItc3R5bGUgJGlucHV0LWJvcmRlci1jb2xvcjtcbn1cblxuLypcbiAqIE1haWxDaGltcFxuICovXG5cbi5tYWlsY2hpbXAtZm9ybSB7XG4gICAgaW5wdXRbdHlwZT0nZW1haWwnXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkY29sb3ItZGFyay1ncmF5O1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItZGFyay1ncmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5zZWN0aW9uLWxhdGVzdF9fY29udGFpbmVyLS1wb3N0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG4gICAgLmg0IHtcbiAgICAgICAgbWF4LXdpZHRoOiA4NSU7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG5cbiAgICAuY2lyY3VsYWlyIHtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDogY2FsYyg5MCUgLSA2NXB4KTtcbiAgICAgICAgd2lkdGg6IGNhbGMoOTAlIC0gNjVweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgJi52by15ZWxsb3cge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnZvLXB1cnBsZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wdXJwbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYudm8tYmx1ZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmRfX2J1dHRvbiB7XG4gICAgICAgICAgICBib3R0b206IC00MHB4O1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZy10b3A6IDEwMCU7XG4gICAgfVxuXG4gICAgLmJ1dHRvbi0tY2lyY3VsYWlyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvdHRvbTogLTQwcHg7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICAuY2FyZF9fYnV0dG9uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc2VhcmNoLWZvcm0ge1xuICAgICR0aGlzOiAmO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICYtLW1lbnUge1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG87XG5cbiAgICAgICAgLnNlYXJjaC1mb3JtX19maWVsZFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2ZpZWxkW3R5cGU9J3NlYXJjaCddIHtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMTAxO1xuICAgICAgICByaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGlucHV0LWJvcmRlci1jb2xvciwgMCk7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAgICAgLnNlYXJjaC1pcy1hY3RpdmUgJiB7XG4gICAgICAgICAgICB3aWR0aDogMjIwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDQ4cHggMCAkc3BhY2luZy1zO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgkaW5wdXQtYm9yZGVyLWNvbG9yLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgLnNlYXJjaC1pcy1hY3RpdmUgJiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtZm9ybS0tbWVudSAmIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMCAkc3BhY2luZy1zO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgkaW5wdXQtYm9yZGVyLWNvbG9yLCAxKTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTEwO1xuXG4gICAgICAgIC5zZWFyY2gtaXMtYWN0aXZlICYtLXN1Ym1pdCxcbiAgICAgICAgLnNlYXJjaC1mb3JtLS1tZW51ICYge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWNsb3NlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICB6LWluZGV4OiAxMTA7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgIC5zZWFyY2gtaXMtYWN0aXZlICYge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG59XG4iLCIuc29jaWFsLW1lZGlhIHtcbiAgICBtYXJnaW4tbGVmdDogLSN7JHNwYWNpbmcteHN9O1xuICAgIG1hcmdpbi1yaWdodDogLSN7JHNwYWNpbmcteHN9O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmcteHMgJHNwYWNpbmctcztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICB3aWR0aDogNDJweDtcbiAgICAgICAgaGVpZ2h0OiA0MnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYmxhY2s7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tZmFjZWJvb2sge1xuXG4gICAgICAgIH1cblxuICAgICAgICAmLS10d2l0dGVyIHtcblxuICAgICAgICB9XG5cbiAgICAgICAgJi0teW91dHViZSB7XG5cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWluc3RhZ3JhbSB7XG5cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi52by15ZWxsb3cge1xuICAgIHNwYW4uc2VjdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xuICAgIH1cblxuICAgIC5idXR0b24tLWNpcmN1bGFpciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci15ZWxsb3c7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWN0aW9uLWxhdGVzdF9fY29udGFpbmVyLS1hZ2VuZGEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgIH1cblxuICAgIC5zZWN0aW9uX19yZWxhdGVkLXBhZ2VzIGE6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXllbGxvdztcbiAgICB9XG5cbiAgICAua25vd2xlZGdlX19pdGVtIHtcbiAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmhlcm8tLXRoZW1lLS12by15ZWxsb3cge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xuICAgIH1cblxuICAgIC5mZWF0dXJlZF9faW5uZXIge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi50ZW1wbGF0ZS10YWJfX2l0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O1xuICAgIH1cbn1cblxuLmJsb2NrLS1oZXJvLmhlcm8tLXRoZW1lLS12by15ZWxsb3cge1xuICAgICYuZG90c19fYmFja2dyb3VuZC0tbm9uZSwgJi5oZXJvLS1pcy1zZWN0aW9uIHtcbiAgICAgICAgLmhlcm9fX2lubmVyIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLXllbGxvdztcbiAgICB9XG59XG5cbi52by1wdXJwbGUge1xuICAgIHNwYW4uc2VjdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHVycGxlO1xuICAgIH1cblxuICAgIC5idXR0b24tLWNpcmN1bGFpciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wdXJwbGU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXB1cnBsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWN0aW9uLWxhdGVzdF9fY29udGFpbmVyLS1hZ2VuZGEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHVycGxlO1xuICAgIH1cblxuICAgIC5zZWN0aW9uX19yZWxhdGVkLXBhZ2VzIGE6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXB1cnBsZTtcbiAgICB9XG5cbiAgICAua25vd2xlZGdlX19pdGVtIHtcbiAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHVycGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHVycGxlO1xuICAgIH1cblxuICAgICYudGVtcGxhdGUtdGFiX19pdGVtIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXB1cnBsZTtcbiAgICB9XG59XG5cbi5ibG9jay0taGVyby5oZXJvLS10aGVtZS0tdm8tcHVycGxlIHtcbiAgICAmLmRvdHNfX2JhY2tncm91bmQtLW5vbmUsICYuaGVyby0taXMtc2VjdGlvbiB7XG4gICAgICAgIC5oZXJvX19pbm5lciAuaGVyb19fZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wdXJwbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ3JpZC1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1wdXJwbGU7XG4gICAgfVxufVxuXG4udm8tYmx1ZSB7XG4gICAgc3Bhbi5zZWN0aW9uIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibHVlO1xuICAgIH1cblxuICAgIC5idXR0b24tLWNpcmN1bGFpciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibHVlO1xuXG4gICAgICAgICY6aG92ZXIge1xuXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VjdGlvbi1sYXRlc3RfX2NvbnRhaW5lci0tYWdlbmRhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsdWU7XG4gICAgfVxuXG4gICAgLnNlY3Rpb25fX3JlbGF0ZWQtcGFnZXMgYTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmx1ZTtcbiAgICB9XG5cbiAgICAua25vd2xlZGdlX19pdGVtIHtcbiAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsdWU7XG4gICAgfVxuXG4gICAgJi50ZW1wbGF0ZS10YWJfX2l0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmx1ZTtcbiAgICB9XG59XG5cbi5ibG9jay0taGVyby5oZXJvLS10aGVtZS0tdm8tYmx1ZSB7XG4gICAgJi5kb3RzX19iYWNrZ3JvdW5kLS1ub25lLCAmLmhlcm8tLWlzLXNlY3Rpb24ge1xuICAgICAgICAuaGVyb19faW5uZXIgLmhlcm9fX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsdWU7XG4gICAgfVxufVxuXG4vL3N0YXJ0OiBUZW1wIGNvZGUgZm9yIHRlc3Rpbmdcbi5zZWN0aW9uLWxhdGVzdF9fY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zZWN0aW9uX19maW5kZXIsIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBvbmx5KSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLWw7XG4gICAgfVxuXG4gICAgLnBhcnQtLWZpbmQtc2VjdGlvbiB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuXG4gICAgICAgIC5jYXJkIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAgICAgZm9ybSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZpbmQtc2VjdGlvbl9fZm9ybSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAuY2FyZF9fbGluayB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgICAgICBhbGlnbi1zZWxmOiB1bnNldDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxleC1iYXNpczogdW5zZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wYXJ0LS1maW5kLXNlY3Rpb24ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIFxuICAgIC5maW5kLXNlY3Rpb25fX2Zvcm0ge1xuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNlY3Rpb25fX3JlbGF0ZWQtcGFnZXMge1xuICAgIGEge1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIH1cbn1cblxuLmZpbmQtc2VjdGlvbl9fZm9ybSxcbi5wYXJ0LS1maW5kLXNlY3Rpb24sXG4ucGFydC0tZmluZC1zZWN0aW9uICoge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufVxuXG4vL2VuZDogVGVtcCBjb2RlIGZvciB0ZXN0aW5nXG4iLCIuc2VjdGlvbi1sYXRlc3RfX2NvbnRhaW5lci0tYWdlbmRhIHtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICBwYWRkaW5nOiAkc3BhY2luZy1sO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC5hZ2VuZGFfX2l0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAyNXB4IDA7XG5cbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5oMyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIH1cbn1cblxuLmluZm9ybWF0aW9uX19jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcblxuICAgIC5pbmZvcm1hdGlvbl9fbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIC5oNCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICAgICAgb3V0bGluZTogMDtcblxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxvY2F0aW9uX19jb250YWluZXIge1xuICAgIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuIiwiLnNlY3Rpb25fX3JlbGF0ZWQtcGFnZXMge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgIzAwMDAwMDtcbiAgICBwYWRkaW5nOiAxMHB4IDM1cHg7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgIC5oLS1pdGVtIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbjogMTVweCAwO1xuICAgIH1cblxuICAgIC5idXR0b24tLXNtYWxsIHtcbiAgICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG59XG4iLCIuY3RhX19jb250YWluZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgLmgyIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTVweCAwO1xuICAgIH1cblxuICAgICYuaGVyby0tdGhlbWUge1xuICAgICAgICBwYWRkaW5nOiAzMHB4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4uY2lyY3VsYWlyX19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgaGVpZ2h0OiAyMjVweDtcbiAgICB3aWR0aDogMjI1cHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG5cbiAgICBidXR0b24ge1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgb3V0bGluZTogMDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTNweCk7XG4gICAgfVxufVxuIiwiLnNlY3Rpb25fX2tub3dsZWRnZSB7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBwYWRkaW5nOiA0NXB4IDA7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNjApO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDkwKTtcbiAgICB9XG5cbiAgICAuY2VsbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdGFfX2NvbnRhaW5lciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cblxuLmtub3dsZWRnZV9faXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1mYXN0O1xuXG4gICAgLmg0IHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTVweCAwO1xuICAgIH1cblxuICAgIC5idXR0b24tLWJvdHRvbSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTNweCk7XG5cbiAgICAgICAgLmJ1dHRvbi0tYm90dG9tOmJlZm9yZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtM3B4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5kb3RzX19iYWNrZ3JvdW5kIHtcbiAgICAmLS1ub25lIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgfVxuXG4gICAgJi0tdm8teWVsbG93IHtcbiAgICAgICAgQGluY2x1ZGUgZG90cy1iZygkY29sb3IteWVsbG93LCAkY29sb3ItZ3JheSwgZmFsc2UpO1xuICAgIH1cblxuICAgICYtLXZvLXB1cnBsZSB7XG4gICAgICAgIEBpbmNsdWRlIGRvdHMtYmcoJGNvbG9yLXB1cnBsZSwgJGNvbG9yLWdyYXksIGZhbHNlKTtcbiAgICB9XG5cbiAgICAmLS12by1ibHVlIHtcbiAgICAgICAgQGluY2x1ZGUgZG90cy1iZygkY29sb3ItYmx1ZSwgJGNvbG9yLWdyYXksIGZhbHNlKTtcbiAgICB9XG59XG5cbi5jaXJjbGVfX2JhY2tncm91bmQge1xuICAgICYtLW5vbmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JheTtcbiAgICB9XG5cbiAgICAmLS12by15ZWxsb3cge1xuICAgICAgICBAaW5jbHVkZSBjaXJjbGUtYmcoJGNvbG9yLXllbGxvdywgJGNvbG9yLWdyYXksIGZhbHNlKTtcblxuICAgIH1cblxuICAgICYtLXZvLXB1cnBsZSB7XG4gICAgICAgIEBpbmNsdWRlIGNpcmNsZS1iZygkY29sb3ItcHVycGxlLCAkY29sb3ItZ3JheSwgZmFsc2UpO1xuICAgIH1cblxuICAgICYtLXZvLWJsdWUge1xuICAgICAgICBAaW5jbHVkZSBjaXJjbGUtYmcoJGNvbG9yLWJsdWUsICRjb2xvci1ncmF5LCBmYWxzZSk7XG4gICAgfVxufVxuXG4uc29saWRfX2JhY2tncm91bmQge1xuICAgICYtLW5vbmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JheTtcbiAgICB9XG5cbiAgICAmLS12by15ZWxsb3cge1xuICAgICAgICBAaW5jbHVkZSBzb2xpZC1iZygkY29sb3IteWVsbG93KTtcblxuICAgIH1cblxuICAgICYtLXZvLXB1cnBsZSB7XG4gICAgICAgIEBpbmNsdWRlIHNvbGlkLWJnKCRjb2xvci1wdXJwbGUpO1xuICAgIH1cblxuICAgICYtLXZvLWJsdWUge1xuICAgICAgICBAaW5jbHVkZSBzb2xpZC1iZygkY29sb3ItYmx1ZSk7XG4gICAgfVxufVxuIiwiLmZpbHRlcl9fY29udGFpbmVyIHtcblxufVxuXG4uYXJjaGl2ZS1maWx0ZXJfX2NvbnRhaW5lciB7XG4gICAgLmNhcmQge1xuICAgICAgICBhbmltYXRpb24tbmFtZTogc2xpZGUtdXA7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkZWFzaW5nO1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICB9XG59XG5cbi8vXG4vLyBEZWZhdWx0IGFyY2hpdmUgc2VsZWN0XG5cbi5kZWZhdWx0LXNlbGVjdC1maWx0ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRlZmF1bHQtc2VsZWN0LWZpbHRlciBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoMzYpICFpbXBvcnRhbnQ7XG59XG5cbi5kZWZhdWx0LXNlbGVjdC1maWx0ZXIgc3ZnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB0b3A6IDUwJSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiByZW0tY2FsYygxMikgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8vXG4vLyBJbmxpbmUgYXJjaGl2ZSBzZWxlY3RcblxuLmlubGluZS1zZWxlY3QtZmlsdGVyIHtcbiAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmlubGluZS1zZWxlY3QtZmlsdGVyID4gc3BhbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAwLjVjaDtcbn1cblxuLmlubGluZS1zZWxlY3QtZmlsdGVyX193cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5pbmxpbmUtc2VsZWN0LWZpbHRlcl9fd3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIG91dGxpbmU6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1wdXJwbGUsIDAuMjUpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAwLjJlbTtcbn1cblxuLmlubGluZS1zZWxlY3QtZmlsdGVyX19idXR0b24ge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICRjb2xvci1wdXJwbGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbn1cblxuOmhvdmVyID4gLmlubGluZS1zZWxlY3QtZmlsdGVyX19idXR0b24ge1xuICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogLjE1ZW07XG59XG5cbi5pbmxpbmUtc2VsZWN0LWZpbHRlcl9fd3JhcHBlciBzZWxlY3Qge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG4iLCIuZmlsdGVyX19jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgIC5zZWFyY2hfX2lubmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmlsdGVyX19vcHRpb25zIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiByZW0tY2FsYygyODApO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5maWx0ZXJfX29wdGlvbnMtLXNlY3Rpb25zIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAxMXB4O1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNlYXJjaCB7XG4gICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAmX19pbnB1dCB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWx0ZXIge1xuICAgICAgICAmX19vcHRpb25zIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAtI3skc3BhY2luZy1zfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZpbHRlcl9fc2VsZWN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmctcztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZmlsdGVyX19zZWxlY3QtaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1saWdodC1ncmF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX29wdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJi0tc2VsZWN0ZWQge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1rbm93bGVkZ2Uge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBnYXA6IHJlbS1jYWxjKDMwKTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoNjApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmVudHJ5IHtcbn1cblxuLmVudHJ5X19jb250ZW50IHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcblxuICAgICYsIHAsIHVsLCBvbCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygzMCk7XG4gICAgfVxufVxuXG4uZW50cnlfX25hdmlnYXRpb24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxNSk7XG4gICAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCAkY29sb3ItYmxhY2s7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGJvcmRlci10b3Atd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygyMCAzMCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzLCAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXB1cnBsZTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmVudHJ5X19uYXZpZ2F0aW9uICsgLmN0YV9fY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZztcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgJGNvbG9yLWJsYWNrO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctbDtcbiAgICAgICAgYm9yZGVyLXRvcC13aWR0aDogMTBweDtcbiAgICB9XG59XG5cbi8qKlxuICogVmFyaWF0aW9uXG4gKi9cbi5lbnRyeS0tY29udGVudCB7XG4gICAgLmhlcm8ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5oZXJvOm5vdCguaGVyby0taW1hZ2UpIHtcbiAgICAgICAgLmhlcm9fX2lubmVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX3RpdGxlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoNzkwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5lbnRyeV9fY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDE1IDApO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMzAgMCk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNjAgMCk7XG4gICAgICAgIH1cblxuICAgICAgICA+IHtcbiAgICAgICAgICAgIHAsIG9sLCB1bCwgZGl2LCBzZWN0aW9uLCBmaWd1cmUsIGJsb2NrcXVvdGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE1KTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB2by1oZWFkaW5ncyB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSB2by1oZWFkaW5ncyB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYyg3OTApO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFtjbGFzc149XCJ3cC1ibG9ja1wiXSxcbiAgICAgICAgICAgIC5ibG9jay0tYW5jaG9yIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IHJlbS1jYWxjKDc5MCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmVudHJ5LS1hYm91dC11cywgLmVudHJ5LS1wcmljZSB7XG4gICAgLmNlbGwtLWNvbnRlbnQge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jZWxsLS1hc2lkZSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVudHJ5X19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTUgMCk7XG4gICAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCAkY29sb3ItcHVycGxlO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMjAgMCk7XG4gICAgICAgICAgICBib3JkZXItdG9wLXdpZHRoOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgcCwgdWwge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lbnRyeS0tdm8tZ3JlZW4ge1xuICAgIC5lbnRyeV9fbmF2aWdhdGlvbiBhIHtcbiAgICAgICAgJjpob3ZlciwgJjpmb2N1cywgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZWVuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5lbnRyeV9fY29udGVudCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWdyZWVuO1xuICAgIH1cbn1cblxuLmVudHJ5X19uYXZpZ2F0aW9uX190b2dnbGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDEwIDIwKTtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyOiAzcHggc29saWQgJGNvbG9yLWJsYWNrO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dDtcbiAgICB9XG5cbiAgICAmLS1hY3RpdmUgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG59XG5cbi5lbnRyeV9fbmF2aWdhdGlvbi0tbW9iaWxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLnRlbXBsYXRlLXRhYnNfX2NvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnRlbXBsYXRlLXRhYl9faXRlbSB7XG4gICAgbWFyZ2luOiAwIDE1cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgZmxleDogMTtcbiAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICB9XG5cbiAgICAmLS1wYWdlLnRlbXBsYXRlLXRhYl9faXRlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmtub3dsZWRnZS1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXgtd2lkdGg6IHJlbS1jYWxjKDc5MCk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcblxuICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZS11cDtcbiAgICBhbmltYXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkZWFzaW5nO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuXG4gICAgQGluY2x1ZGUgdm8tdGhlbWUoJ2JhY2tncm91bmQtY29sb3InKTtcbn1cblxuLmtub3dsZWRnZS1pdGVtX19pbm5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nO1xuICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgbWluLWhlaWdodDogcmVtLWNhbGMoMTc1KTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uLWZhc3Q7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgYm9yZGVyLXRvcC13aWR0aDogMTBweDtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTggMjUgMjUgMjUpO1xuICAgIH1cbn1cblxuLmtub3dsZWRnZS1pdGVtX190ZXJtIHtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg4KTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xufVxuXG4ua25vd2xlZGdlLWl0ZW1fX3RpdGxlIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXgtd2lkdGg6IDgwJTtcbn1cblxuLmtub3dsZWRnZS1pdGVtX19saW5rIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgJiArIC5rbm93bGVkZ2UtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ua25vd2xlZGdlLWl0ZW1fX2RhdGUge1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG59XG5cbi5rbm93bGVkZ2UtaXRlbV9fdHlwZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgcmlnaHQ6IDEwcHg7XG59XG4iLCJcbi5zbGlkZS1vdXQge1xuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDUwMG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG1heC1oZWlnaHQgNTAwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIC1tb3otdHJhbnNpdGlvbjogbWF4LWhlaWdodCA1MDBtcyBlYXNlLWluLW91dDtcbiAgICAgICAgLW8tdHJhbnNpdGlvbjogbWF4LWhlaWdodCA1MDBtcyBlYXNlLWluLW91dDtcblxuICAgICAgICAmLS1hY3RpdmUge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgLy9Gb3JjZSB0byBvdmVyd3JpdGUgdGhlIGphdmFzY3JpcHQgc3R5bGVcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMzVweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaXJjbGUtLWNvdW50ICsgcCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2lyY2xlLS1jb3VudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIHdpZHRoOiA0NXB4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxRDFEMUI7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuIiwiLnBhZ2UtaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gI3skc3BhY2luZ30pO1xuICAgIG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDQyMCk7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIH1cbn1cblxuLnBhZ2UtaXRlbV9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB6LWluZGV4OiAwO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkdHJhbnNpdGlvbi1mYXN0O1xuICAgIH1cbn1cblxuLnBhZ2UtaXRlbV9fdGl0bGUge1xuICAgIG1hcmdpbjogYXV0byAwIDAgMDtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygxMCk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBtaW4taGVpZ2h0OiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItZ3JlZW4sIC44KTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBzdmcuc3ZnLWlubGluZS0tZmEgcGF0aCB7XG4gICAgICAgIGZpbGw6ICRjb2xvci1ibGFjaztcbiAgICB9XG59XG5cbi5wYWdlLWl0ZW1fX2xpbmsge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICAmICsgLnBhZ2UtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAucGFnZS1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAjeyRzcGFjaW5nLWx9KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbDtcbiAgICB9XG59XG5cbi8qKlxuICogVmFyaWF0aW9uXG4gKi9cbi5wYWdlLWl0ZW0tLXZvLWdyZWVuIHtcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICB9XG5cbiAgICAucGFnZS1pdGVtX190aXRsZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLWdyYXksIC44KTtcbiAgICAgICAgc3ZnLnN2Zy1pbmxpbmUtLWZhIHBhdGgge1xuICAgICAgICAgICAgZmlsbDogJGNvbG9yLWdyZWVuO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGFnZS1pdGVtLS12by1ncmF5IHtcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmF5O1xuICAgIH1cblxuICAgIC5wYWdlLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItYmxhY2ssIC44KTtcbiAgICAgICAgc3ZnLnN2Zy1pbmxpbmUtLWZhIHBhdGgge1xuICAgICAgICAgICAgZmlsbDogJGNvbG9yLXdoaXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnBvc3QtaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWdyZWVuO1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gI3skc3BhY2luZ30pO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xufVxuXG4ucG9zdC1pdGVtX19hbmNob3Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLnBvc3QtaXRlbV9faW5uZXIge1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDEwKTtcbiAgICBzdmcge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICB9XG4gICAgc3ZnIHBhdGgge1xuICAgICAgICBmaWxsOiAkY29sb3ItZ3JlZW47XG4gICAgICAgIHRyYW5zaXRpb246IGZpbGwgJHRyYW5zaXRpb24tZmFzdDtcbiAgICB9XG59XG5cbjpyb290IC5wb3N0LWl0ZW1fX3RpdGxlIHtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIHRyYW5zaXRpb246IGNvbG9yICR0cmFuc2l0aW9uLWZhc3Q7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNik7XG59XG5cbi5wb3N0LWl0ZW1fX2RhdGUge1xuICAgIGNvbG9yOiAkY29sb3ItZ3JheTtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ucG9zdC1pdGVtX19hbmNob3Ige1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICAmICsgLnBvc3QtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgc3ZnIHBhdGgge1xuICAgICAgICAgICAgICAgIGZpbGw6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5wb3N0LWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLWdyZWVuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIC5wb3N0LWl0ZW0ge1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICN7JHNwYWNpbmctbH0pO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sO1xuICAgIH1cblxuICAgIC5wb3N0LWl0ZW1fX2lubmVyIHtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjYpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmZlYXR1cmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAkc3BhY2luZy1sIDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLXhsIDA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLXh4bCAwO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAuZmVhdHVyZWRfX3RpdGxlIHtcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctbTtcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYyg0ODApO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQ2KTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYyg0MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmVhdHVyZWRfX3RleHQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14bDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXh4bDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mZWF0dXJlZF9faW5uZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgcGFkZGluZzogJHNwYWNpbmctbTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiByZW0tY2FsYygzODMpO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1ub25lIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgfVxuXG4gICAgJi0tdm8teWVsbG93IHtcbiAgICAgICAgLmZlYXR1cmVkX19pbm5lciB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci15ZWxsb3c7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS12by1wdXJwbGUge1xuICAgICAgICAuZmVhdHVyZWRfX2lubmVyIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLXB1cnBsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXZvLWJsdWUge1xuICAgICAgICAuZmVhdHVyZWRfX2lubmVyIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mZWF0dXJlZC1ibG9ja19fb3V0ZXItdGl0bGUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctbDtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygtNSk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQyKTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmcteGw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKC0xNSk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy14eGw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKC0zMCk7XG4gICAgfVxufVxuIiwiLnNlY3Rpb24tY2xvdWQge1xuICAgIG1hcmdpbjogJHNwYWNpbmctbCAtMXB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZy14bCAtMXB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgbWFyZ2luOiAkc3BhY2luZy14eGwgLTFweDtcbiAgICB9XG5cbiAgICAmX19ncmlkIHtcbiAgICAgICAgLmNlbGwge1xuICAgICAgICAgICAgcGFkZGluZzogMXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGluayB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6ICN7JHNwYWNpbmcgKyByZW0tY2FsYygxMCl9ICRzcGFjaW5nICRzcGFjaW5nICRzcGFjaW5nO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiByZW0tY2FsYyg4NCk7XG5cbiAgICAgICAgLy8gRWRpdG9yIG9ubHlcbiAgICAgICAgQGlmICgkZWRpdG9yID09IHRydWUpIHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2lubmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXk7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoeXBoZW5zOiBhdXRvO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZS1pbi1vdXQ7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXZvLXB1cnBsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHVycGxlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1wdXJwbGUsIDEwJSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS12by1ibHVlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibHVlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1ibHVlLCAxMCUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tdm8teWVsbG93IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci15ZWxsb3c7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLXllbGxvdywgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxufVxuIiwiLnByaWNlcyB7XG4gICAgbWFyZ2luOiByZW0tY2FsYygzMCAwKTtcbiAgICBAaW5jbHVkZSB2by10aGVtZSgnY29sb3InLCAnLnByaWNlX19saW5rJyk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW46IHJlbS1jYWxjKDUwIDApO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIG1hcmdpbjogcmVtLWNhbGMoNzAgMCk7XG4gICAgfVxufVxuXG4ucHJpY2Uge1xuICAgICZfX2VsZW1lbnQge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE1KTtcblxuICAgICAgICAucHJpY2VfX2NvbnRhaW5lcjpsYXN0LWNoaWxkICYge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNDIgMzIgMzggMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1ldGFfX3ByaWNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDM2KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYyg0MCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQ4KTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoNjApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm1ldGFfX2xhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoLTMwKTtcbiAgICAgICAgICAgIGh5cGhlbnM6IGF1dG87XG4gICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgICAgICAgcGFkZGluZzogMCA1M3B4O1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG46cm9vdCAucHJpY2VfX3RleHQge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDUpO1xuICAgIH1cbn1cblxuLnByaWNlX19saW5rIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnPic7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg2KTtcbiAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAkdHJhbnNpdGlvbi1mYXN0O1xuICAgIH1cblxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGxlZnQ6IHJlbS1jYWxjKDRweCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjpyb290IC5wcmljZV9fY2lyY2xlIHtcbiAgICB3aWR0aDogMTYwcHg7XG4gICAgaGVpZ2h0OiAxNjBweDtcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE1KTtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICB3aWR0aDogMjIzcHg7XG4gICAgICAgIGhlaWdodDogMjIzcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcbiAgICB9XG59XG5cbjpyb290IC5wcmljZV9fY2lyY2xlLS1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZTtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbjpyb290IC5wcmljZV9fY2lyY2xlIC5tZXRhX19sYWJlbCB7XG4gICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG4iLCIudXBjb21pbmctYWdlbmRhIHtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICBwYWRkaW5nOiAkc3BhY2luZyAwO1xufVxuXG4udXBjb21pbmctYWdlbmRhX190aXRsZSB7XG5cbn1cblxuLnVwY29taW5nLWFnZW5kYV9faW5uZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICBtYXJnaW46ICRzcGFjaW5nIDAgJHNwYWNpbmcteGw7XG4gICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLWw7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW46ICRzcGFjaW5nLWwgMCAkc3BhY2luZy14eHh4bDtcbiAgICB9XG59XG5cbi51cGNvbWluZy1hZ2VuZGFfX2xpbmsge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBwYWRkaW5nOiAkc3BhY2luZy1sIDA7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctbDtcblxuICAgIC8vIEVkaXRvciBvbmx5XG4gICAgQGlmICgkZWRpdG9yID09IHRydWUpIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vIGEtaXRlbVxuXG4uYS1pdGVtIHtcblxufVxuXG4uYS1pdGVtX19jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgcGFkZGluZzogJHNwYWNpbmctbSAwO1xuICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG5cbiAgICAvLyBFZGl0b3Igb25seVxuICAgIEBpZiAoJGVkaXRvciA9PSB0cnVlKSB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmEtaXRlbTpsYXN0LW9mLXR5cGUgJiB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheTtcblxuICAgICAgICAuYS1pdGVtX19pbm5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwICRzcGFjaW5nO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYS1pdGVtX19pbm5lciB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG59XG5cbi5hLWl0ZW1fX3RpdGxlIHtcbiAgICBtYXJnaW46IDAgMCAkc3BhY2luZy1zIDA7XG59XG5cbi5hLWl0ZW1fX21ldGEge1xuXG4gICAgJi0tbG9jYXRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZhLW1hcC1tYXJrZXItYWx0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctcztcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tZGF0ZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy1zO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiLmVtYWlscyB7XG5cbn1cblxuLmJsb2NrLS1lbWFpbHMge1xuICAgIHBhZGRpbmc6IDY1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLmgxIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNjVweDtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMzBweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IGluaXRpYWw7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5sYXRlc3QtcG9zdHMge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteGw7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14eGw7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUtd3JhcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogcmVtLWNhbGMoMTIpO1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygzMCk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgICZfX2N0YSAuYnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTQgMzApO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHVycGxlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgfVxuXG4gICAgJl9fY3RhLS1kZXNrdG9wIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmX19jdGEtLW1vYmlsZSB7XG4gICAgICAgIG1hcmdpbjogcmVtLWNhbGMoMjAgMCAzMCAwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICZfX2N0YS0tbW9iaWxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmX19jdGEtLWRlc2t0b3Age1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5sYXRlc3QtcG9zdHMtLWFsdCB7XG4gICAgLmxhdGVzdC1wb3N0c19fdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxhdGVzdC1wb3N0c19fZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICAgIGNvbHVtbi1nYXA6IHJlbS1jYWxjKDMwKTtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMyAvIHNwYW4gMztcbiAgICAgICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICAgICAgbWluLXdpZHRoOiB1bnNldDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIC5jYXJkOm5vdCguY2FyZC0tbGFyZ2UpIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDEgLyBzcGFuIDE7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubG9jYXRpb25zIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiA2MHB4IDA7XG5cbiAgICAuZ3JpZC14IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2VsbCB7XG4gICAgICAgIG1hcmdpbjogJHNwYWNpbmctbCAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ibG9jay0tcmVhc29ucyB7XG4gICAgbWFyZ2luOiA2MHB4IDA7XG5cbiAgICAuaDIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgfVxufVxuXG4ucmVhc29ucyB7XG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDtcblxuICAgICAgICAvL292ZXJ3cml0ZSB0aGUgZm91bmRhdGlvbiBjYWxjLCBiZWNhdXNlIHRoZXkgd2FudCBpbnQgY2VudGVyZWRcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIC5tZWRpdW0tNiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5hY2NvcmRpb24ge1xuICAgIC5zbGlkZS1vdXRfX2NvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoNzkwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICB9XG59XG5cbjpyb290IC5hY2NvcmRpb25fX3RpdGxlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbn1cblxuLmFjY29yZGlvbl9fY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZW5kO1xufVxuXG4uc2xpZGUtb3V0X19jb250ZW50LS1hY3RpdmUge1xuICAgIG1heC1oZWlnaHQ6IDMwMHZoO1xufVxuLmJsb2NrLS1hY2NvcmRpb24ge1xuICAgIG1hcmdpbjogNjBweCAwO1xufVxuXG4uYmxvY2stLWFjY29yZGlvbiAgKyAuYmxvY2stLWFjY29yZGlvbiB7XG4gICAgbWFyZ2luLXRvcDogLTMwcHg7XG59XG4iLCIuYmxvY2stLXF1b3RlIHtcbiAgICBwYWRkaW5nOiA3NXB4IDA7XG59XG5cbi5xdW90ZSB7XG4gICAgJl9faW1hZ2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJl9fcGVyc29uIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgfVxufVxuIiwiLmJsb2NrLS1wZW9wbGUge1xuXG59XG5cbi5wZW9wbGVfX2NvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5wZW9wbGVfX3BlcnNvbiB7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDE5MHB4O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgfVxuXG4gICAgLmltYWdlX19jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgLmZhbGxiYWNrLS1pbWFnZSB7XG4gICAgICAgIGhlaWdodDogMTkwcHg7XG4gICAgICAgIHdpZHRoOiAxOTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWxpZ2h0LWdyYXk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmxpbmtlZGluIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKC01MCUgKyA1MHB4KSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnRhYnMge1xuICAgIHAsIHVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG59XG5cbjpyb290IC50YWJzX19oZWFkZXIge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE1KTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmctbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciwgJjpmb2N1cywgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRhYnNfX3RhYiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYnNfX3RhYi5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGFuaW1hdGlvbjogZmFkZS1pbiAuOHM7XG59XG5cbi50YWJzX190YWItY29udGVudCB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG5cbiAgICAqIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDMwKTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEyKTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFwyMDIyXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHVycGxlLWRhcms7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50YWJzX190YWItdGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjgpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzIpO1xuICAgIH1cbn1cbiIsIi5hbmNob3Ige1xuICAgIEBpbmNsdWRlIHZvLXRoZW1lKCdjb2xvcicsICcuYW5jaG9yX19saW5rJyk7XG59XG5cbi5hbmNob3JfX2xpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI2KTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnPic7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg2KTtcbiAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAkdHJhbnNpdGlvbi1mYXN0O1xuICAgIH1cblxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGxlZnQ6IHJlbS1jYWxjKDRweCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIua25vd2xlZGdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXh4bDtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14eHhsO1xuICAgIH1cblxuICAgIC5jZWxsLS1rbm93bGVkZ2UtaXRlbSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbi5rbm93bGVkZ2VfX2ZlYXR1cmVkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sO1xuICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2luZy1sO1xuICAgIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuXG4gICAgLmdyaWQteCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG4gICAgICAgIGdhcDogcmVtLWNhbGMoMTUpO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgZ2FwOiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgJjpub3QoLmdyaWQteC0tdHdvLWNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHhsO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmcteHhsO1xuICAgIH1cbn1cblxuLmtub3dsZWRnZV9fZmVhdHVyZWQtaW5uZXIge1xuICAgIG1heC13aWR0aDogcmVtLWNhbGMoNzkwKTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbnAua25vd2xlZGdlX19mZWF0dXJlZC10aXRsZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG4gICAgfVxufVxuXG4ua25vd2xlZGdlX19jb250YWluZXIge1xuICAgIC5ncmlkLXgge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpO1xuICAgICAgICBnYXA6IHJlbS1jYWxjKDE1KTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgICAgIGdhcDogcmVtLWNhbGMoMzApO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMzApO1xuICAgIH1cbn1cblxuLmtub3dsZWRnZV9fZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy1sO1xuICAgIHBhZGRpbmctdG9wOiAkc3BhY2luZy1sO1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLXh4bDtcbiAgICAgICAgcGFkZGluZy10b3A6ICRzcGFjaW5nLXh4bDtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAuY2VsbC0ta25vd2xlZGdlLWl0ZW0ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ncmlkLXgge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCAxZnIpO1xuICAgICAgICBnYXA6IHJlbS1jYWxjKDE1KTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGdhcDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICY6bm90KC5ncmlkLXgtLXR3by1jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5oZXJvLTIwMjMge1xuICAgIC0taGVyby0yMDIzLWFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgLS1oZXJvLTIwMjMtc3BhY2luZzogI3tyZW0tY2FsYygzMil9O1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHJlbS1jYWxjKDI0KTtcbiAgICBhc3BlY3QtcmF0aW86IHZhcigtLWhlcm8tMjAyMy1hc3BlY3QtcmF0aW8pO1xuICAgIHBhZGRpbmc6IHZhcigtLWhlcm8tMjAyMy1zcGFjaW5nKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIC0taGVyby0yMDIzLWFzcGVjdC1yYXRpbzogMiAvIDEuNTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIC0taGVyby0yMDIzLWFzcGVjdC1yYXRpbzogMiAvIDE7XG4gICAgICAgIC0taGVyby0yMDIzLXNwYWNpbmc6ICN7cmVtLWNhbGMoNDgpfTtcbiAgICB9XG59XG5cbi5oZXJvLTIwMjMgOmlzKGgxLGgyKSB7XG4gICAgbWFyZ2luLWJsb2NrOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzYpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0OCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoNTAlIC0gdmFyKC0taGVyby0yMDIzLXNwYWNpbmcpKTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg2NCk7XG4gICAgfVxufVxuXG4uaGVyby0yMDIzIGEge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGdhcDogcmVtLWNhbGMoMTIpO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDE0IDMwKTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXllbGxvdztcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKDMwLzI0KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkY29sb3IteWVsbG93LCAxMCUpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJz4nO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLWluLW91dCAwcztcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgje3JlbS1jYWxjKDQpfSk7XG4gICAgfVxufVxuXG4uaGVyby0yMDIzICsgKiB7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMzApO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDUpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNjApO1xuICAgIH1cbn1cbiIsIi5oZXJvIHtcblxuICAgIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0xMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgJi5oZXJvLS10aGVtZS0tbm9uZSB7XG4gICAgICAgIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5oZXJvX19saW5rIHtcbiAgICAgICAgYSB7XG4gICAgICAgICAgICAvLyBFZGl0b3Igb25seVxuICAgICAgICAgICAgQGlmICgkZWRpdG9yID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2RhdGUge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tYWdlbmRhIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNDYpO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1kZWZhdWx0IHtcbiAgICAgICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nIDAgJHNwYWNpbmcteGw7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG5cbiAgICAgICAgLmdyaWQtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZXJvX19pbm5lciB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDU1cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVyb19fdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAmLS1zaW5nbGUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZzogJHNwYWNpbmctbCAwICRzcGFjaW5nLXh4bDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLXhsIDAgJHNwYWNpbmcteHh4bDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLW1lZGl1bSB7XG4gICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sO1xuXG4gICAgICAgIC5oZXJvX19pbm5lciB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDU1cmVtO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy1tO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nLW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHhsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX3RpdGxlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2RhdGUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLWFnZW5kYSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0Nik7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5oZXJvX19saW5rIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2ltYWdlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0kc3BhY2luZztcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmhlcm8tLWlzLXNlY3Rpb24uaGVyby0tdGhlbWUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJsYWNrICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgIC5oZXJvX190aXRsZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDM2KTtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNDgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmhlcm9fX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQ4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5oZXJvX19pbWFnZSB7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1sYXJnZSB7XG4gICAgICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG5cbiAgICAgICAgLmhlcm9fX2lubmVyIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZy1tIDA7XG5cbiAgICAgICAgICAgICYtLWZ1bGwge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuaGVyb19fdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1tO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2ltYWdlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtJHNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0kc3BhY2luZztcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUwdmg7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB0b3A6IC0xMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmhlcm9fX2xpbmsge1xuXG4gICAgICAgICAgICAmLS0zIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IC0kc3BhY2luZztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2luZyAkc3BhY2luZy1sICRzcGFjaW5nICRzcGFjaW5nO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG5cbiAgICAgICAgICAgIC5oZXJvX19pbm5lciB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNpbmctbCAkc3BhY2luZztcblxuICAgICAgICAgICAgICAgICYtLWZ1bGwge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmhlcm9fX3RpdGxlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14eGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5oZXJvX19pbWFnZSB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcblxuICAgICAgICB9XG4gICAgfVxufVxuXG4uaGVyby0tdGhlbWUtLXZvLWdyZWVuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG5cbiAgICAmLCAuZ3JpZC1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAuaGVyb19fdGl0bGUsIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgfVxuXG4gICAgLmhlcm9fX2xpbmsgLmJ1dHRvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxufVxuLmhlcm8tLXRoZW1lLS12by1ibGFjayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLWJsYWNrO1xuXG4gICAgLmdyaWQtY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItZ3JlZW47XG4gICAgfVxuXG4gICAgLmhlcm9fX3RpdGxlLCAuaGVyb19fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIH1cblxuICAgIC5oZXJvX19saW5rIC5idXR0b24ge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWdyZWVuO1xuICAgIH1cbn1cbi5oZXJvLS10aGVtZS0tdm8tZ3JheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG5cbiAgICAuZ3JpZC1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAuaGVyb19fdGl0bGUsIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxuXG4gICAgLmhlcm9fX2xpbmsgLmJ1dHRvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxufVxuLmhlcm8tLXRoZW1lLS1ub25lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG5cbiAgICAuZ3JpZC1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAuaGVyb19fdGl0bGUsIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxuXG4gICAgLmhlcm9fX2ltYWdlOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxuXG4gICAgLmhlcm9fX2xpbmsgLmJ1dHRvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxufVxuXG4uc2VhcmNoX19zZWN0aW9uIHtcbiAgICAuaGVyb19faW5uZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5oZXJvX190aXRsZSB7XG4gICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZXJvX19kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIiwiLmN0YSB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy14bDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteGw7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAkc3BhY2luZy14eGw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXh4bDtcbiAgICB9XG59XG5cbi5jdGFfX3RpdGxlLCAuZmluZC1zZWN0aW9uX19sYWJlbCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoMzApO1xufVxuXG4uY3RhX190aXRsZSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQ2KTtcbiAgICB9XG59XG5cbi8qKlxuICogVmFyaWF0aW9uIEFMVFxuICovXG4uY3RhLS1hbHQge1xuICAgIC5jYXJkIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHVuc2V0O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgLmN0YV9faGVhZGVyLXRpdGxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB9XG5cbiAgICAuY3RhX19pbWFnZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgIG1heC1oZWlnaHQ6IHJlbS1jYWxjKDMwMCk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdGFfX2lubmVyIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgIH1cblxuICAgIC5jdGFfX2RhdGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAuY3RhLS1hbHQge1xuICAgICAgICAuY2FyZCB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHVuc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmN0YV9faGVhZGVyLXRpdGxlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWw7XG4gICAgICAgIH1cblxuICAgICAgICAuY3RhX19pbWFnZSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgbWluLXdpZHRoOiBjYWxjKDMzLjMzMzMzJSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDMzLjMzMzMzJSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmN0YS0tY292ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nIDA7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTlweDtcbiAgICAgICAgbGVmdDogLTlweDtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDlweCk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgOXB4KTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiYXNzZXRzL2ltYWdlcy9zcXVhcmUucG5nXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7XG4gICAgICAgIHotaW5kZXg6IC0xO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAuY3RhLS1jb3ZlciB7XG4gICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nLXhsIDAgJHNwYWNpbmcteGwgMDtcbiAgICB9XG59XG5cbi5jdGEtLXRoZW1lLS12by1ncmVlbiB7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIC5jYXJkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG5cbiAgICAuY3RhX19pbWFnZSwgLmN0YV9faW5uZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxuXG4gICAgLmN0YV9fbGluayAuYnV0dG9uIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG59XG5cbi5jdGEtLXRoZW1lLS12by1ibGFjayB7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIC5jYXJkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICB9XG5cbiAgICAuY3RhX19pbWFnZSwgLmN0YV9faW5uZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxuXG4gICAgLmN0YV9fbGluayAuYnV0dG9uIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICB9XG59XG5cbi5jdGEtLXRoZW1lLS12by1ncmF5IHtcbiAgICAuY2FyZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxuXG4gICAgLmN0YV9faW1hZ2UsIC5jdGFfX2lubmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyYXk7XG4gICAgfVxuXG4gICAgLmN0YV9fbGluayAuYnV0dG9uIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG59XG5cbi5jdGEtLXRoZW1lLS1ub25lIHtcbiAgICAuY3RhX19pbWFnZTo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxuXG4gICAgLmN0YV9faW1hZ2UsIC5jdGFfX2lubmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIH1cblxuICAgIC5jdGFfX2xpbmsgLmJ1dHRvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxufVxuIiwiLnBhZ2UtaXRlbXMge1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteGw7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14eGw7XG4gICAgfVxufVxuXG4ucGFnZS1pdGVtc19fdGl0bGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sO1xuICAgIH1cbn1cbiIsIi8qKlxuICogUHJpY2UgMjAyMSAtIFRlbXBsYXRlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnByaWNlLXRlbXBsYXRlLFxuLnByaWNlLXRlbXBsYXRlIHAsXG4ucHJpY2UtdGVtcGxhdGUgdWwgbGksXG4ucHJpY2UtdGVtcGxhdGUgb2wgbGkge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xufVxuXG4ucHJpY2UtdGVtcGxhdGVfX2lubmVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucHJpY2UtYmxvY2sge1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQwIDApO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNzUgMCk7XG4gICAgfVxufVxuXG4ucHJpY2UtYmxvY2tfX3RpdGxlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xufVxuXG4ucHJpY2UtYmxvY2tfX2hlYWRlciB7XG4gICAgbWFyZ2luOiAwIDAgcmVtLWNhbGMoNDApIDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXgtd2lkdGg6IDUwJTtcblxuICAgICAgICAmLS1mdWxsIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiLyoqXG4gKiBQcmljZSAyMDIxIC0gTmF2aWdhdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi5wYWdlLW5hdmlnYXRpb24ge1xuICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDtcblxuICAgICAgICAuYWRtaW4tYmFyICYge1xuICAgICAgICAgICAgdG9wOiAzMnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucGFnZS1uYXZpZ2F0aW9uX19pbm5lciB7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMjBweCkgMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICBuYXYge1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIEBleHRlbmQgJXVuc3R5bGVkLWxpc3Q7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG5cbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDJweCAwKTtcblxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMnB4IDEwcHgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBIZXJvXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnByaWNlLWhlcm8ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItdG9wOiAzcHggc29saWQgJGNvbG9yLWJsYWNrO1xufVxuXG4ucHJpY2UtaGVyb19fYmFja2dyb3VuZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmVlbjtcblxuICAgIGltZyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG59XG5cbi5wcmljZS1oZXJvX19pbm5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoNzUpIDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxMDApIDA7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJpY2UtaGVyb19fY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIG1heC13aWR0aDogNjAlO1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg3Mik7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoNzIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzYpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoNDUpICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIEBleHRlbmQgJXVuc3R5bGVkLWxpc3Q7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNSkgMDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI2KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBQcmljZSAyMDIxIC0gSW50cm8gaGlnaGxpZ2h0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLmludHJvLWhpZ2hsaWdodCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMTVweCk7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg2NDBweCBkb3duKSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ2MHB4O1xuICAgICAgICB3aWR0aDogY2FsYygxMDB2dyArIDMwcHgpO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTE1cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDMwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDkwMHB4KXtcbiAgICAgICAgd2lkdGg6IDUwdnc7XG4gICAgICAgIGhlaWdodDogNTB2dztcbiAgICB9XG59XG5cbi5pbnRyby1oaWdobGlnaHQge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoOTAwcHggZG93bikge1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnRyby1oaWdobGlnaHRfX21ldGEge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IHJlbS1jYWxjKDMwKTtcbiAgICBsZWZ0OiByZW0tY2FsYygzMCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDYwcHgpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cbn1cblxuLmludHJvLWhpZ2hsaWdodF9fbGFiZWwge1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbiAgICBoMiB7XG4gICAgICAgIG1hcmdpbjogMCAwIHJlbS1jYWxjKDEwKSAwO1xuICAgIH1cbn1cblxuLmludHJvLWhpZ2hsaWdodF9fcGhvdG9ncmFwaGVyIHtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbn1cbiIsIi8qKlxuICogUHJpY2UgMjAyMSAtIFRlbXBsYXRlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnByaWNlLWNhcmQge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5wcmljZS1jYXJkX19pbm5lciB7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMjBweCAzMHB4KTtcblxuICAgICYtLW5vLXBhZGRpbmcge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4ucHJpY2UtY2FyZF9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbn1cblxuLnByaWNlLWNhcmRfX2Jyb2FkY2FzdGVyLFxuLnByaWNlLWNhcmRfX2Z1bmN0aW9uIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICBjb2xvcjogI0I3QzBDNTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG59XG5cbi5wcmljZS1jYXJkX19wZW9wbGUge1xuICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnByaWNlLWNhcmRfX2ltYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG5cbiAgICBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi5wcmljZS1jYXJkX19waG90b2dyYXBoZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICBsZWZ0OiByZW0tY2FsYygyMCk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbn1cbiIsIi8qKlxuICogUHJpY2UgMjAyMSAtIFRlbXBsYXRlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLm5vbWluZWVzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoYXNzZXRzL2ltYWdlcy9wcmljZS1wYXR0ZXJuLnBuZyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxOHB4O1xufVxuIiwiLyoqXG4gKiBQcmljZSAyMDIxIC0gUHJldmlvdXMgd2lubmVyc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi5wcmV2aW91cy13aW5uZXJzIHtcblxufVxuXG4ucHJldmlvdXMtd2lubmVyX19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmVlbjtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygyMCk7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQwIDYwKTtcbiAgICAgICAgY29sdW1uLWNvdW50OiAyO1xuICAgICAgICBjb2x1bW4tZ2FwOiA2MHB4O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG59XG4iLCIvKipcbiAqIFByaWNlIDIwMjEgLSBMYXN0IHdpbm5lclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi5sYXN0LXdpbm5lciB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWJsYWNrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuNSU7XG4gICAgfVxufVxuXG4ubGFzdC13aW5uZXJfX2JhY2tncm91bmQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxufVxuXG4ubGFzdC13aW5uZXJfX2NvbnRlbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1heC13aWR0aDogcmVtLWNhbGMoNjQwKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygyMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGFzdC13aW5uZXJfX3RpdGxlIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDk2KTtcbiAgICB9XG59XG5cbi5sYXN0LXdpbm5lcl9fZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNik7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBQcmljZSAyMDIxIC0gQWJvdXRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uYWJvdXQge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1saWdodC1ncmF5O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDI1MCk7XG4gICAgfVxufVxuXG4uYWJvdXRfX2NvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygyMCk7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmxhY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg0MCA2MCk7XG4gICAgfVxufVxuXG4uYWJvdXRfX2ltYWdlIHtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHdpZHRoOiA1MHZ3O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTk5cHg7XG4gICAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogUHJpY2UgMjAyMSAtIFZpZGVvXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnByaWNlLXZpZGVvIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmxhY2s7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuLnByaWNlLXZpZGVvX19jb250YWluZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnByaWNlLXZpZGVvX19uYXZpZ2F0aW9uIHtcbiAgICBAZXh0ZW5kICV1bnN0eWxlZC1saXN0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMzApO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luOiAwIHJlbS1jYWxjKDIwKTtcbiAgICAgICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg1IDAgMCAwKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlLWluLW91dDtcblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KC5hY3RpdmUpOmhvdmVyLFxuICAgICAgICAmOm5vdCguYWN0aXZlKTpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJib2R5LndwLWNoaWxkLXRoZW1lLXNjaHJpanZlcnN2ZWlsaWcge1xuICAgIC5oZWFkZXIge1xuICAgICAgICAmX19sb2dvIHtcbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE4NCk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fd3JpdGVycy1zYWZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbjogMCAkc3BhY2luZy1zO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiA5cHggMTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWxpZ2h0LWdyYXk7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDExMHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTdweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgJHNwYWNpbmc7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud3AtYmxvY2stcG9zdC10aXRsZSxcbiAgICAud3AtYmxvY2stYWNjb3JkaW9uLWhlYWRpbmdfX3RvZ2dsZS10aXRsZSxcbiAgICAud3AtYmxvY2stYWNjb3JkaW9uLWhlYWRpbmdfX3RvZ2dsZS1pY29uLFxuICAgIC5oYXMtdGV4dC1jb2xvciB7XG4gICAgICAgIGNvbG9yOiAjNTA2NmZiO1xuICAgIH1cblxuICAgIC5lbnRyeV9fY29udGVudCA+IHA6bm90KC5oYXMtdGV4dC1jb2xvciksIC53cC1ibG9jayA+IHA6bm90KC5oYXMtdGV4dC1jb2xvcikge1xuICAgICAgICBtYXJnaW46IDAgYXV0byByZW0tY2FsYyg2MCk7XG4gICAgfVxuXG4gICAgLmhlcm8tMjAyMyB7XG4gICAgICAgIC0taGVyby0yMDIzLXNwYWNpbmc6ICN7cmVtLWNhbGMoODApfTtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICA6aXMoaDEsaDIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzYpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNDgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg1Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmVhdHVyZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQ4MTVmO1xuXG4gICAgICAgIC5mZWF0dXJlZF9faW5uZXIge1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyNjZmZjtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2U0ODE1ZjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZlYXR1cmVkX19pbm5lci1jb250ZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICBib3JkZXI6IDEwcHggc29saWQgIzAwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OTlweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNTApO1xuICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgICAgIGdhcDogcmVtLWNhbGMoNDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZlYXR1cmVkX190ZXh0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICA+IHAge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIGNvbG9yOiAjNDI2NmZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNpdGUtZm9vdGVyIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG5cbiAgICAgICAgJl9fdG9wIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICM0MjY2ZmY7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTQ4MTVmO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzQyNjZmZjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX2NvbnRhY3QtaW5mbyB7XG4gICAgICAgICAgICAubGFyZ2UtNiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiByZW0tY2FsYygxNSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgZ2FwOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiByZW0tY2FsYyg0MCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJl9fY29udGVudC0tYWJvdXQgPiBwIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fYm90dG9tIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNDgxNWY7XG4gICAgICAgIH1cblxuICAgICAgICAmX19jb250ZW50LS1sb2dvcyB7XG4gICAgICAgICAgICBtYXJnaW4tYmxvY2s6IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBnYXA6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgfVxuICAgICAgICAmX19sb2dvLWxpbmsge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb290ZXItbmF2aWdhdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZTQ4MTVmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdmb3JtLXRoZW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U0ODE1ZjtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNDApO1xuXG4gICAgICAgIC5nZm9ybV90aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZ2Zvcm1fZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luOiByZW0tY2FsYyg0MCkgYXV0bztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICB9XG5cblxuICAgICAgICBmb3JtI2dmb3JtXzEge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLmdmb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBjb2xvcjogIzAwMFxuICAgICAgICB9XG5cbiAgICAgICAgLmdmaWVsZF9yZXF1aXJlZCB7XG4gICAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5nZmllbGRfY29uc2VudF9kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiByZW0tY2FsYygzMikhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM0MjY2ZmY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDYwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsY0FBYztBQ0ZkOzs7R0FHRztBQUlILFlBQVk7QUFHWixpQkFBaUI7QUFXakIsZ0JBQWdCO0FBS2hCLGFBQWE7QVkxQmI7OztHQUdHO0FBRUgsNEJBQTRCO0FBWTVCLGdCQUFnQjtBQU1oQixpQkFBaUI7QUFLakIsc0JBQXNCO0FDNUJ0Qjs7O0dBR0c7QUFFSCxpQkFBaUI7QUFPakIsYUFBYTtBQU1iLGlCQUFpQjtBQUlqQixhQUFhO0FBWWIsbUJBQW1CO0FDbENuQjs7O0dBR0c7QUFFSDs7Ozs7O0dBTUc7QUFjSDs7O0dBR0c7QXFIR0gsQXJIREEsRXFIQ0UsQUFBQSxhQUFhLEVBbUdmLEVBQUUsQUFBQSxnQkFBZ0I7QUFDbEIsRUFBRSxBQUFBLGFBQWE7QUFDZix5QkFBeUIsRTRDOUd6Qix1QkFBdUIsQ0FlbkIsR0FBRyxDQVFDLEVBQUUsRUNRVixvQkFBb0IsQ0E2QmhCLEVBQUUsRU9oRU4sd0JBQXdCLEN6S1lUO0VBRVAsYUFBTSxFQUFFLENBQUM7RUFDVCxXQUFJLEVBQUUsQ0FBQztFQUdQLFlBQUksRUFBRSxDQUFDO0VBRVgsVUFBVSxFQUFFLElBQUksR0FDbkI7O0FBRUQ7OztHQUdHO0FBUUg7OztHQUdHO0FBb0JIOzs7O0dBSUc7QUFxQkg7Ozs7R0FJRztBQTJCSDs7R0FFRztBQWNIOztHQUVHO0FBU0g7O0dBRUc7QUFlSDs7R0FFRztBZnpLSCxlQUFlO0FnQlJmLDRFQUE0RTtBQUU1RTtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxXQUFXLEVBQUUsSUFBSTtFQUFFLE9BQU87RUFDMUIsd0JBQXdCLEVBQUUsSUFBSTtFQUFFLE9BQU8sRUFDeEM7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUUsQ0FBQyxHQUNWOztBQUVEOztHQUVHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDSCxPQUFPLEVBQUUsS0FBSyxHQUNmOztBQUVEOzs7R0FHRztBQUVILEFBQUEsRUFBRSxDQUFDO0VBQ0QsU0FBUyxFQUFFLEdBQUc7RUFDZCxNQUFNLEVBQUUsUUFBUSxHQUNqQjs7QUFFRDtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUgsQUFBQSxFQUFFLENBQUM7RUFDRCxVQUFVLEVBQUUsV0FBVztFQUFFLE9BQU87RUFDaEMsTUFBTSxFQUFFLENBQUM7RUFBRSxPQUFPO0VBQ2xCLFFBQVEsRUFBRSxPQUFPO0VBQUUsT0FBTyxFQUMzQjs7QUFFRDs7O0dBR0c7QUFFSCxBQUFBLEdBQUcsQ0FBQztFQUNGLFdBQVcsRUFBRSxvQkFBb0I7RUFBRSxPQUFPO0VBQzFDLFNBQVMsRUFBRSxHQUFHO0VBQUUsT0FBTyxFQUN4Qjs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSCxBQUFBLENBQUMsQ0FBQztFQUNBLGdCQUFnQixFQUFFLFdBQVcsR0FDOUI7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxJQUFJLENBQUEsQUFBQSxLQUFDLEFBQUEsRUFBTztFQUNWLGFBQWEsRUFBRSxJQUFJO0VBQUUsT0FBTztFQUM1QixlQUFlLEVBQUUsU0FBUztFQUFFLE9BQU87RUFDbkMsZUFBZSxFQUFFLGdCQUFnQjtFQUFFLE9BQU8sRUFDM0M7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLENBQUM7QUFDRCxNQUFNLENBQUM7RUFDTCxXQUFXLEVBQUUsTUFBTSxHQUNwQjs7QUFFRDs7O0dBR0c7QUFFSCxBQUFBLElBQUk7QUFDSixHQUFHO0FBQ0gsSUFBSSxDQUFDO0VBQ0gsV0FBVyxFQUFFLG9CQUFvQjtFQUFFLE9BQU87RUFDMUMsU0FBUyxFQUFFLEdBQUc7RUFBRSxPQUFPLEVBQ3hCOztBQUVEOztHQUVHO0FBRUgsQUFBQSxLQUFLLENBQUM7RUFDSixTQUFTLEVBQUUsR0FBRyxHQUNmOztBQUVEOzs7R0FHRztBQUVILEFBQUEsR0FBRztBQUNILEdBQUcsQ0FBQztFQUNGLFNBQVMsRUFBRSxHQUFHO0VBQ2QsV0FBVyxFQUFFLENBQUM7RUFDZCxRQUFRLEVBQUUsUUFBUTtFQUNsQixjQUFjLEVBQUUsUUFBUSxHQUN6Qjs7QUFFRCxBQUFBLEdBQUcsQ0FBQztFQUNGLE1BQU0sRUFBRSxPQUFPLEdBQ2hCOztBQUVELEFBQUEsR0FBRyxDQUFDO0VBQ0YsR0FBRyxFQUFFLE1BQU0sR0FDWjs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSCxBQUFBLEdBQUcsQ0FBQztFQUNGLFlBQVksRUFBRSxJQUFJLEdBQ25COztBQUVEO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSCxBQUFBLE1BQU07QUFDTixLQUFLO0FBQ0wsUUFBUTtBQUNSLE1BQU07QUFDTixRQUFRLENBQUM7RUFDUCxXQUFXLEVBQUUsT0FBTztFQUFFLE9BQU87RUFDN0IsU0FBUyxFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ3hCLFdBQVcsRUFBRSxJQUFJO0VBQUUsT0FBTztFQUMxQixNQUFNLEVBQUUsQ0FBQztFQUFFLE9BQU8sRUFDbkI7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxNQUFNO0FBQ04sS0FBSyxDQUFDO0VBQUUsT0FBTztFQUNiLFFBQVEsRUFBRSxPQUFPLEdBQ2xCOztBQUVEOzs7R0FHRztBQUVILEFBQUEsTUFBTTtBQUNOLE1BQU0sQ0FBQztFQUFFLE9BQU87RUFDZCxjQUFjLEVBQUUsSUFBSSxHQUNyQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsTUFBTTtDQUNOLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYjtDQUNELEFBQUEsSUFBQyxDQUFLLE9BQU8sQUFBWjtDQUNELEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixFQUFlO0VBQ2Qsa0JBQWtCLEVBQUUsTUFBTSxHQUMzQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsTUFBTSxBQUFBLGtCQUFrQjtDQUN4QixBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYyxrQkFBa0I7Q0FDakMsQUFBQSxJQUFDLENBQUssT0FBTyxBQUFaLENBQWEsa0JBQWtCO0NBQ2hDLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixDQUFjLGtCQUFrQixDQUFDO0VBQ2hDLFlBQVksRUFBRSxJQUFJO0VBQ2xCLE9BQU8sRUFBRSxDQUFDLEdBQ1g7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLE1BQU0sQUFBQSxlQUFlO0NBQ3JCLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixDQUFjLGVBQWU7Q0FDOUIsQUFBQSxJQUFDLENBQUssT0FBTyxBQUFaLENBQWEsZUFBZTtDQUM3QixBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYyxlQUFlLENBQUM7RUFDN0IsT0FBTyxFQUFFLHFCQUFxQixHQUMvQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsUUFBUSxDQUFDO0VBQ1AsT0FBTyxFQUFFLHFCQUFxQixHQUMvQjs7QUFFRDs7Ozs7R0FLRztBQUVILEFBQUEsTUFBTSxDQUFDO0VBQ0wsVUFBVSxFQUFFLFVBQVU7RUFBRSxPQUFPO0VBQy9CLEtBQUssRUFBRSxPQUFPO0VBQUUsT0FBTztFQUN2QixPQUFPLEVBQUUsS0FBSztFQUFFLE9BQU87RUFDdkIsU0FBUyxFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ3hCLE9BQU8sRUFBRSxDQUFDO0VBQUUsT0FBTztFQUNuQixXQUFXLEVBQUUsTUFBTTtFQUFFLE9BQU8sRUFDN0I7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLFFBQVEsQ0FBQztFQUNQLGNBQWMsRUFBRSxRQUFRLEdBQ3pCOztBQUVEOztHQUVHO0FBRUgsQUFBQSxRQUFRLENBQUM7RUFDUCxRQUFRLEVBQUUsSUFBSSxHQUNmOztBQUVEOzs7R0FHRztDQUVILEFBQUEsQUFBQSxJQUFDLENBQUssVUFBVSxBQUFmO0NBQ0QsQUFBQSxJQUFDLENBQUssT0FBTyxBQUFaLEVBQWM7RUFDYixVQUFVLEVBQUUsVUFBVTtFQUFFLE9BQU87RUFDL0IsT0FBTyxFQUFFLENBQUM7RUFBRSxPQUFPLEVBQ3BCOztBQUVEOztHQUVHO0NBRUgsQUFBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYywyQkFBMkI7Q0FDMUMsQUFBQSxJQUFDLENBQUssUUFBUSxBQUFiLENBQWMsMkJBQTJCLENBQUM7RUFDekMsTUFBTSxFQUFFLElBQUksR0FDYjs7QUFFRDs7O0dBR0c7Q0FFSCxBQUFBLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixFQUFlO0VBQ2Qsa0JBQWtCLEVBQUUsU0FBUztFQUFFLE9BQU87RUFDdEMsY0FBYyxFQUFFLElBQUk7RUFBRSxPQUFPLEVBQzlCOztBQUVEOztHQUVHO0NBRUgsQUFBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYywyQkFBMkIsQ0FBQztFQUN6QyxrQkFBa0IsRUFBRSxJQUFJLEdBQ3pCOztBQUVEOzs7R0FHRztBQUVILEFBQUEsNEJBQTRCLENBQUM7RUFDM0Isa0JBQWtCLEVBQUUsTUFBTTtFQUFFLE9BQU87RUFDbkMsSUFBSSxFQUFFLE9BQU87RUFBRSxPQUFPLEVBQ3ZCOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVILEFBQUEsT0FBTyxDQUFDO0VBQ04sT0FBTyxFQUFFLEtBQUssR0FDZjs7QUFFRDs7R0FFRztBQUVILEFBQUEsT0FBTyxDQUFDO0VBQ04sT0FBTyxFQUFFLFNBQVMsR0FDbkI7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUgsQUFBQSxRQUFRLENBQUM7RUFDUCxPQUFPLEVBQUUsSUFBSSxHQUNkOztBQUVEOztHQUVHO0NBRUgsQUFBQSxBQUFBLE1BQUMsQUFBQSxFQUFRO0VBQ1AsT0FBTyxFQUFFLElBQUksR0FDZDs7QWhCalZELFlBQVk7QWlCWFo7OztHQUdHO0FBRUg7O0dBRUc7QUFFSCxBQUFBLElBQUk7QUFDSixFQUFFO0FBQ0YsRUFBRTtBQUNGLEVBQUU7QUFDRixFQUFFO0FBQ0YsRUFBRTtBQUNGLEVBQUU7QUFDRixVQUFVO0FBQ1YsQ0FBQztBQUNELEdBQUc7QUFDSCxFQUFFO0FBQ0YsRUFBRTtBQUNGLEVBQUU7QUFDRixFQUFFO0FBQ0YsTUFBTTtBQUNOLEVBQUU7QUFDRixRQUFRO0FBQ1IsTUFBTSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUM7RUFDVCxPQUFPLEVBQUUsQ0FBQyxHQUNiOztBQUVEOztHQUVHO0FBRUgsQUFDSSxFQURGLEdBQ0UsRUFBRTtBQUROLEVBQUUsR0FFRSxFQUFFLENBQUM7RUFDQyxhQUFhLEVBQUUsQ0FBQyxHQUNuQjs7QUFHTDs7R0FFRztBQUVILEFBQUEsS0FBSyxDQUFDO0VBQ0YsZUFBZSxFQUFFLFFBQVE7RUFDekIsY0FBYyxFQUFFLENBQUMsR0FDcEI7O0FBRUQ7OztHQUdHO0FEOEtILEFBQUEsUUFBUSxDQzVLQztFQUNMLFNBQVMsRUFBRSxDQUFDO0VBQUUsU0FBUztFQUN2QixNQUFNLEVBQUUsQ0FBQyxHQUNaOztBQUVEOzs7R0FHRztBRHRESCxBQUFBLElBQUksQ0N3REM7RUFDRCxVQUFVLEVBQUUsVUFBVSxHQUN6Qjs7QUFFRCxBQUNJLENBREgsRUFBRCxDQUFDLEFBRUksT0FBTyxFQUZaLENBQUMsQUFHSSxNQUFNLENBQUM7RUFDSixVQUFVLEVBQUUsT0FBTyxHQUN0Qjs7QUFHTDs7R0FFRztBRGtISCxBQUFBLE1BQU07Q0FDTixBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWI7Q0FDRCxBQUFBLElBQUMsQ0FBSyxPQUFPLEFBQVo7Q0FDRCxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsRUNoSGU7RUFDWixrQkFBa0IsRUFBRSxJQUFJO0VBQ3hCLGVBQWUsRUFBRSxJQUFJO0VBQ3JCLE1BQU0sRUFBRSxDQUFDO0VBQ1QsTUFBTSxFQUFFLENBQUM7RUFDVCxPQUFPLEVBQUUsQ0FBQztFQUNWLElBQUksRUFBRSxPQUFPLEdBQ2hCOztBQzVGRDs7O0dBR0c7QUFFSDs7OztHQUlHO0FBRUgsTUFBTSxDQUFDLEtBQUs7RUFDUjs7UUFFSTtFRHdEUixBQUNJLENBREgsRUFBRCxDQUFDLEFBRUksT0FBTyxFQUZaLENBQUMsQUFHSSxNQUFNLENDdkRDO0lBQ0osVUFBVSxFQUFFLHNCQUFzQjtJQUNsQyxLQUFLLEVBQUUsZUFBZTtJQUFFLFNBQVM7SUFDakMsVUFBVSxFQUFFLGVBQWU7SUFDM0IsV0FBVyxFQUFFLGVBQWUsR0FDL0I7RUFFRCxBQUFBLENBQUM7RUFDRCxDQUFDLEFBQUEsUUFBUSxDQUFDO0lBQ04sZUFBZSxFQUFFLFNBQVMsR0FDN0I7RUFFRCxBQUFBLENBQUMsQ0FBQSxBQUFBLElBQUMsQUFBQSxDQUFLLE1BQU0sQ0FBQztJQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FDL0I7RUFFRCxBQUFBLElBQUksQ0FBQSxBQUFBLEtBQUMsQUFBQSxDQUFNLE1BQU0sQ0FBQztJQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FDaEM7RUFFRDs7O0tBR0M7RUFFRCxBQUFBLENBQUMsQ0FBQSxBQUFBLElBQUMsRUFBTSxHQUFHLEFBQVQsQ0FBVSxNQUFNO0VBQ2xCLENBQUMsQ0FBQSxBQUFBLElBQUMsRUFBTSxhQUFhLEFBQW5CLENBQW9CLE1BQU0sQ0FBQztJQUN6QixPQUFPLEVBQUUsRUFBRSxHQUNkO0VBRUQsQUFBQSxHQUFHO0VBQ0gsVUFBVSxDQUFDO0lBQ1AsTUFBTSxFQUFFLGNBQWM7SUFDdEIsaUJBQWlCLEVBQUUsS0FBSyxHQUMzQjtFQUVEOztLQUVDO0VBRUQsQUFBQSxLQUFLLENBQUM7SUFDRixPQUFPLEVBQUUsa0JBQWtCLEdBQzlCO0VBRUQsQUFBQSxFQUFFO0VBQ0YsR0FBRyxDQUFDO0lBQ0EsaUJBQWlCLEVBQUUsS0FBSyxHQUMzQjtFRmtGTCxBQUFBLEdBQUcsQ0VoRks7SUFDQSxTQUFTLEVBQUUsZUFBZSxHQUM3QjtFQUVELEFBQUEsQ0FBQztFQUNELEVBQUU7RUFDRixFQUFFLENBQUM7SUFDQyxPQUFPLEVBQUUsQ0FBQztJQUNWLE1BQU0sRUFBRSxDQUFDLEdBQ1o7RUFFRCxBQUFBLEVBQUU7RUFDRixFQUFFLENBQUM7SUFDQyxnQkFBZ0IsRUFBRSxLQUFLLEdBQzFCOztBQ2pGTDs7O0dBR0c7QUFFSCxBQUFBLG1CQUFtQixDQUFDO0VSbU5sQixRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQWE7RUFDaEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFhO0VBQ3hCLE1BQU0sRUFBRSxHQUFHLENBQUMsVUFBYTtFQUN6QixPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQWE7RUFDeEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFhO0VBQzlCLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxVQUFhO0VBQ3BDLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBYTtFQUNqQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFVBQWEsR1F4TnhCOztBQ1BEOzs7R0FHRztBQUVILFVBQVUsQ0FBVixPQUFVO0VBQ04sRUFBRTtJQUNFLE9BQU8sRUFBRSxDQUFDO0VBR2QsSUFBSTtJQUNBLE9BQU8sRUFBRSxDQUFDOztBQUlsQixVQUFVLENBQVYsVUFBVTtFQUNOLEVBQUU7SUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNWLFNBQVMsRUFBRSxpQkFBaUI7RUFHaEMsSUFBSTtJQUNBLE9BQU8sRUFBRSxDQUFDO0lBQ1YsU0FBUyxFQUFFLElBQUk7O0FBSXZCLFVBQVUsQ0FBVixRQUFVO0VBQ04sRUFBRTtJQUNFLE9BQU8sRUFBRSxDQUFDO0lBQ1YsU0FBUyxFQUFFLGdCQUFnQjtFQUcvQixJQUFJO0lBQ0EsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsZUFBZTs7Q0FJbEMsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFnQjtFQUNiLE9BQU8sRUFBRSxDQUFDLEdBMEJiO0dBM0JELEFBQUEsQUFHSSxjQUhILEFBQUEsRUFHSSxBQUFBLHdCQUFDLEFBQUEsRUFBMEI7SUFDeEIsY0FBYyxFQUFFLE9BQU87SUFDdkIsa0JBQWtCLEVOdENmLElBQUk7SU11Q1AseUJBQXlCLEVOckN4QixXQUFXO0lNc0NaLG1CQUFtQixFQUFFLFFBQVEsR0FTaEM7S0FoQkwsQUFBQSxBQVNRLGNBVFAsQUFBQSxFQUdJLEFBQUEsd0JBQUMsQUFBQSxFQU1HLEFBQUEsY0FBQyxDQUFlLFlBQVksQUFBM0IsRUFBNkI7TUFDM0IsY0FBYyxFQUFFLFVBQVUsR0FDN0I7S0FYVCxBQUFBLEFBYVEsY0FiUCxBQUFBLEVBR0ksQUFBQSx3QkFBQyxBQUFBLEVBVUcsQUFBQSxjQUFDLENBQWUsVUFBVSxBQUF6QixFQUEyQjtNQUN6QixjQUFjLEVBQUUsUUFBUSxHQUMzQjtFQUlMLE1BQU0sQ0FBQyxHQUFHLE9BQU8sZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLGdCQUFnQixFQUFFLE1BQU07S0FuQnhFLEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZ0I7TUFvQlQsT0FBTyxFQUFFLFlBQVksR0FPNUI7RUFIZ0MsU0FBQyxDQUFELEdBQUMsRUFBZixPQUFPLEVBQUUsSUFBSTtLQXhCaEMsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFnQjtNQXlCVCxPQUFPLEVBQUUsWUFBWSxHQUU1Qjs7QVZpSE8sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7R1U3R3pDLEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBMkIsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTRDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUEyQixBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBNEM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTJCLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUE0QztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBMkIsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTRDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUEyQixBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBNEM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTJCLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUE0QztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBMkIsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTRDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUEyQixBQUFBLG9CQUFDLENBQXFCLEtBQUssQUFBMUIsRUFBNEM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixLQUFLLEFBQTFCLEVBQTJCLEFBQUEsb0JBQUMsQ0FBcUIsS0FBSyxBQUExQixFQUE0QztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxFQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLEVBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsRUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxJQUFDLEdBQ3BCO0dBRkQsQUFBQSxBQUFBLGNBQUMsQUFBQSxFQUFlLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUE0QixBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBMkM7SUFDckYsZUFBZSxFQUFDLElBQUMsR0FDcEI7R0FGRCxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBQWUsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTRCLEFBQUEsb0JBQUMsQ0FBcUIsTUFBTSxBQUEzQixFQUEyQztJQUNyRixlQUFlLEVBQUMsSUFBQyxHQUNwQjtHQUZELEFBQUEsQUFBQSxjQUFDLEFBQUEsRUFBZSxBQUFBLG9CQUFDLENBQXFCLE1BQU0sQUFBM0IsRUFBNEIsQUFBQSxvQkFBQyxDQUFxQixNQUFNLEFBQTNCLEVBQTJDO0lBQ3JGLGVBQWUsRUFBQyxFQUFDLEdBQ3BCOztBQUlULE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxNQUFNO0dBckN0QyxBQUFBLEFBQUEsY0FBQyxBQUFBLEVBc0NvQjtJQUNiLGtCQUFrQixFQUFFLGlCQUFpQjtJQUNyQyxlQUFlLEVBQUUsaUJBQWlCLEdBQ3JDOztBQ2hGTDs7O0dBR0c7QUNISDs7O0dBR0c7QUFFSCxBQUFBLFVBQVUsQ0FBQztFQUNQLE1BQU0sRUFBRSxlQUFlLEdBQzFCOztBQUVELEFBQUEsWUFBWTtBQUNaLEdBQUcsQUFBQSxZQUFZLENBQUM7RUFDWixPQUFPLEVBQUUsS0FBSztFQUNkLE1BQU0sRUFBRSxpQkFBaUIsR0FDNUI7O0FBRUQsQUFBQSxXQUFXLENBQUM7RUFDUixLQUFLLEVBQUUsS0FBSztFQUNaLE1BQU0sRUFBRSxlQUFlLEdBQzFCOztBQUVELEFBQUEsVUFBVSxDQUFDO0VBQ1AsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsZUFBZSxHQUMxQjs7QUFFRCxBQUFBLENBQUMsQ0FBQyxHQUFHLEFBQUEsV0FBVyxDQUFDO0VBQ2IsS0FBSyxFQUFFLEtBQUs7RUFDWixNQUFNLEVBQUUsZUFBZSxHQUMxQjs7QUFFRCxBQUFBLENBQUMsQ0FBQyxHQUFHLEFBQUEsVUFBVSxDQUFDO0VBQ1osTUFBTSxFQUFFLGVBQWUsR0FDMUI7O0FBRUQsQUFBQSxDQUFDLENBQUMsR0FBRyxBQUFBLFVBQVUsQ0FBQztFQUNaLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLGVBQWUsR0FDMUI7O0FBRUQsQUFBQSxDQUFDLENBQUMsR0FBRyxBQUFBLFlBQVksQ0FBQztFQUNkLE9BQU8sRUFBRSxLQUFLO0VBQ2QsV0FBVyxFQUFFLElBQUk7RUFDakIsWUFBWSxFQUFFLElBQUksR0FDckI7O0FBRUQsQUFBQSxXQUFXLENBQUM7RUFDUixVQUFVLEVBQUUsSUFBSTtFQUNoQixNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCLFNBQVMsRUFBRSxHQUFHO0VBQ2QsOENBQThDO0VBQzlDLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLFVBQVUsRUFBRSxNQUFNLEdBQ3JCOztBQUVELEFBQUEsV0FBVyxBQUFBLFVBQVUsQ0FBQztFQUNsQixNQUFNLEVBQUUsZUFBZSxHQUMxQjs7QUFFRCxBQUFBLFdBQVcsQUFBQSxVQUFVLENBQUM7RUFDbEIsTUFBTSxFQUFFLGVBQWUsR0FDMUI7O0FBRUQsQUFBQSxXQUFXLEFBQUEsV0FBVyxDQUFDO0VBQ25CLE1BQU0sRUFBRSxlQUFlLEdBQzFCOztBQUVELEFBQUEsV0FBVyxDQUFDLEdBQUcsQ0FBQztFQUNaLE1BQU0sRUFBRSxNQUFNO0VBQ2QsTUFBTSxFQUFFLElBQUk7RUFDWixNQUFNLEVBQUUsQ0FBQztFQUNULFNBQVMsRUFBRSxLQUFLO0VBQ2hCLE9BQU8sRUFBRSxDQUFDO0VBQ1YsS0FBSyxFQUFFLElBQUksR0FDZDs7QUFFRCxBQUFBLFdBQVcsQ0FBQyxDQUFDLEFBQUEsZ0JBQWdCLENBQUM7RUFDMUIsU0FBUyxFQUFFLElBQUk7RUFDZixXQUFXLEVBQUUsSUFBSTtFQUNqQixNQUFNLEVBQUUsQ0FBQztFQUNULE9BQU8sRUFBRSxTQUFTLEdBQ3JCOztBQUVELEFBQUEsUUFBUSxDQUFDO0VBQ0wsT0FBTyxFQUFFLElBQUk7RUFDYixTQUFTLEVBQUUsUUFBUTtFQUNuQixlQUFlLEVBQUUsTUFBTTtFQUN2QixhQUFhLEVBQUUsZ0JBQWdCLEdBQ2xDOztBQUVELEFBQUEsYUFBYSxDQUFDO0VBQ1YsT0FBTyxFQUFFLFlBQVk7RUFDckIsWUFBWSxFQUFFLElBQUk7RUFDbEIsYUFBYSxFQUFFLElBQUk7RUFDbkIsVUFBVSxFQUFFLE1BQU07RUFDbEIsY0FBYyxFQUFFLEdBQUc7RUFDbkIsS0FBSyxFQUFFLElBQUksR0FDZDs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztFQUM3QixTQUFTLEVBQUUsMkJBQTJCLEdBQ3pDOztBQUVELEFBQUEsa0JBQWtCLENBQUMsYUFBYSxBQUFBLFlBQWEsQ0FBQSxNQUFNLEVBQUU7RUFDakQsWUFBWSxFQUFFLENBQUMsR0FDbEI7O0FBRUQsQUFBQSxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7RUFDN0IsU0FBUyxFQUFFLDJCQUEyQixHQUN6Qzs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQUFBQSxZQUFhLENBQUEsTUFBTSxFQUFFO0VBQ2pELFlBQVksRUFBRSxDQUFDLEdBQ2xCOztBQUVELEFBQUEsa0JBQWtCLENBQUMsYUFBYSxDQUFDO0VBQzdCLFNBQVMsRUFBRSwyQkFBMkIsR0FDekM7O0FBRUQsQUFBQSxrQkFBa0IsQ0FBQyxhQUFhLEFBQUEsWUFBYSxDQUFBLE1BQU0sRUFBRTtFQUNqRCxZQUFZLEVBQUUsQ0FBQyxHQUNsQjs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztFQUM3QixTQUFTLEVBQUUsMkJBQTJCLEdBQ3pDOztBQUVELEFBQUEsa0JBQWtCLENBQUMsYUFBYSxBQUFBLFlBQWEsQ0FBQSxNQUFNLEVBQUU7RUFDakQsWUFBWSxFQUFFLENBQUMsR0FDbEI7O0FBRUQsQUFBQSxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7RUFDN0IsU0FBUyxFQUFFLDJCQUEyQixHQUN6Qzs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQUFBQSxZQUFhLENBQUEsTUFBTSxFQUFFO0VBQ2pELFlBQVksRUFBRSxDQUFDLEdBQ2xCOztBQUVELEFBQUEsa0JBQWtCLENBQUMsYUFBYSxDQUFDO0VBQzdCLFNBQVMsRUFBRSwyQkFBMkIsR0FDekM7O0FBRUQsQUFBQSxrQkFBa0IsQ0FBQyxhQUFhLEFBQUEsWUFBYSxDQUFBLE1BQU0sRUFBRTtFQUNqRCxZQUFZLEVBQUUsQ0FBQyxHQUNsQjs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztFQUM3QixTQUFTLEVBQUUsMkJBQTJCLEdBQ3pDOztBQUVELEFBQUEsa0JBQWtCLENBQUMsYUFBYSxBQUFBLFlBQWEsQ0FBQSxNQUFNLEVBQUU7RUFDakQsWUFBWSxFQUFFLENBQUMsR0FDbEI7O0FBRUQsQUFBQSxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7RUFDN0IsU0FBUyxFQUFFLDJCQUEyQixHQUN6Qzs7QUFFRCxBQUFBLGtCQUFrQixDQUFDLGFBQWEsQUFBQSxZQUFhLENBQUEsTUFBTSxFQUFFO0VBQ2pELFlBQVksRUFBRSxDQUFDLEdBQ2xCOztBQUVELEFBQUEsYUFBYSxBQUFBLGFBQWEsQ0FBQztFQUN2QixhQUFhLEVBQUUsQ0FBQyxHQUNuQjs7QUFFRCxBQUFBLGdCQUFnQixDQUFDO0VBQ2IsT0FBTyxFQUFFLEtBQUs7RUFDZCxPQUFPLEVBQUUsTUFBTSxHQUNsQjs7QUFFRCxBQUFBLGFBQWEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0VBQ3BCLE9BQU8sRUFBRSxLQUFLLEdBQ2pCOztBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFDL0IsQUFBQSxXQUFXLENBQUM7SUFDUixRQUFRLEVBQUUsS0FBSyxHQUNsQjs7QUNsTEw7OztHQUdHO0FBRUgsQUFBQSxnQkFBZ0IsQ0FBQztFQUNiLFVBQVUsRVZPQSxPQUFPO0VVTmpCLEtBQUssRVZPSyxPQUFPLEdVTnBCOztBQUVELEFBQUEsV0FBVyxDQUFDO0VBQ1IsVUFBVSxFVkVBLE9BQU87RVVEakIsS0FBSyxFVkVLLE9BQU8sR1VEcEI7O0FQSEQsQUFBQSxJQUFJLENPS0M7RUFDRCxVQUFVLEVBQUUsTUFBTTtFQUNsQixVQUFVLEVBQUUsSUFBSSxHQUNuQjs7QUFFRCxBQUNJLElBREEsQUFDQyxZQUFZLENBQUM7RUFDVixRQUFRLEVBQUUsTUFBTTtFQUNoQixVQUFVLEVBQUUsS0FBSyxHQUtwQjtFYnVKRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtJYS9KakQsQUFDSSxJQURBLEFBQ0MsWUFBWSxDQUFDO01BSU4sUUFBUSxFQUFFLElBQUk7TUFDZCxVQUFVLEVBQUUsSUFBSSxHQUV2Qjs7QVArQ0wsQUFBQSxDQUFDLENPNUNDO0VBQ0UsVUFBVSxFQUFFLEdBQUcsQ1QxQlIsSUFBSSxDQUVOLFdBQVc7RVN5QmhCLGVBQWUsRUFBRSxJQUFJO0VBQ3JCLFdBQVcsRUFBRSxHQUFHLEdBS25CO0VBUkQsQUFLSSxDQUxILEFBS0ksTUFBTSxDQUFDO0lBQ0osZUFBZSxFQUFFLFNBQVMsR0FDN0I7O0FBR0wsQUFDSSxDQURILEFBQ0ksV0FBVyxDQUFDO0VBQ1QsYUFBYSxFQUFFLENBQUMsR0FDbkI7O0FBR0wsQUFBQSxJQUFJLENBQUM7RUFDRCxhQUFhLEVBQUUsQ0FBQyxHQUNuQjs7QUFFRCxBQUFBLGdCQUFnQixDQUFDO0VBQ2IsUUFBUSxFQUFFLFFBQVE7RUFFZCxXQUFHLEVBQUUsSUFBSTtFQUNULGNBQU0sRUFBRSxNQUFNO0VBRWxCLE1BQU0sRUFBRSxDQUFDO0VBQ1QsT0FBTyxFQUFFLENBQUM7RUFDVixVQUFVLEVBQUUsT0FBTyxDVHJEWixJQUFJLENBRU4sV0FBVyxHU2dFbkI7RUFyQkQsQUFVSSxnQkFWWSxDQVVaLE1BQU0sQ0FBQztJQUNILFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEdBQUcsRUFBRSxDQUFDO0lBQ04sSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJLEdBQ2Y7RUFoQkwsQUFrQkksZ0JBbEJZLEFBa0JYLE9BQU8sQ0FBQztJQUNMLE9BQU8sRUFBRSxDQUFDLEdBQ2I7O0FQNEVMLEFBQUEsR0FBRyxDT3pFQztFQUNBLFNBQVMsRUFBRSxJQUFJO0VBQ2YsTUFBTSxFQUFFLElBQUk7RUFDWixPQUFPLEVBQUUsWUFBWSxHQU94QjtFQVZELEFBTVEsR0FOTCxBQU1NLGlCQUFXLENBQUM7SUFDVCxhQUFhLEVBQUUsR0FBRyxHQUNyQjs7QUFJVCxBQUFBLE9BQU8sQ0FBQztFQUNKLE9BQU8sRUFBRSxZQUFZLEdBQ3hCOztBQUVELEFBQUEsV0FBVyxDQUFDO0VBQ1IsUUFBUSxFQUFFLFFBQVE7RUFDbEIsR0FBRyxFQUFFLENBQUM7RUFDTixJQUFJLEVBQUUsQ0FBQztFQUNQLEtBQUssRUFBRSxDQUFDO0VBQ1IsTUFBTSxFQUFFLENBQUM7RUFDVCxPQUFPLEVBQUUsRUFBRSxHQUNkOztBYmtGTyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsVUFBVTtFYS9FbkQsQUFBQSxhQUFhLENBQUM7SUFDVixNQUFNLEVBQUUsU0FBUyxHQUNwQjs7QUFHTCxBQUFBLFlBQVksQ0FBQztFQUNULFVBQVUsRUFBRSxNQUFNLEdBQ3JCOztBQUVELEFBQUEsS0FBSyxDQUFDO0VBQ0YsT0FBTyxFQUFFLElBQUksR0FDaEI7O0FBRUQsQUFBQSxVQUFVLENBQUM7RUFDUCxPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QWJnRU8sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWE1RHhDLEFBQUQsb0JBQU8sQ0FBQztJQUNKLEtBQUssRUFBRSxDQUFDLEdBQ1g7RUFFQSxBQUFELHFCQUFRLENBQUM7SUFDTCxLQUFLLEVBQUUsQ0FBQyxHQUNYOztBQUlULEFBQUEsaUJBQWlCLENBQUM7RUFFZCxTQUFTLEVBQUUsUUFBUTtFQUNuQixXQUFXLEVBQUUsUUFBUTtFQUNyQixJQUFJLEVBQUUsR0FBRztFQUNULFFBQVEsRUFBRSxRQUFRO0VBQ2xCLFNBQVMsRUFBRSxJQUFJLEdBYWxCO0VBWEcsQUFBQSxJQUFJLEFBQUEsY0FBYyxDQVJ0QixpQkFBaUIsQ0FRUTtJQUNqQixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSyxHQUNyQjs7QUFVTCxBQUFBLFlBQVksQ0FBQztFQUNULGFBQWEsRUFBRSxVQUFVO0VBQ3pCLFNBQVMsRUFBRSxVQUFVO0VBQ3JCLGNBQWMsRUFBRSxTQUFTO0VBQ3pCLFVBQVUsRUFBRSxVQUFVLEdBQ3pCOztBQUVELEFBQUEsY0FBYyxDQUFDO0VBQ1gsVUFBVSxFQUFFLElBQUk7RUFDaEIsYUFBYSxFQUFFLElBQUksR0FDdEI7O0FBNURHLEFBQUEsYUFBYSxDQThESDtFQUNWLGFBQWEsRUFBRSxJQUFJLEdBQ3RCOztBQUVELEFBQUEsT0FBTyxDQUFDO0VBQ0osUUFBUSxFQUFFLFFBQVE7RUFDbEIsSUFBSSxFQUFFLFFBQVE7RUFDZCxHQUFHLEVBQUUsSUFBSTtFQUNULEtBQUssRUFBRSxHQUFHO0VBQ1YsTUFBTSxFQUFFLEdBQUc7RUFDWCxRQUFRLEVBQUUsTUFBTSxHQUNuQjs7QUM3S0Q7OztHQUdHO0FSbUJILEFBQUEsSUFBSSxDUWpCQztFQUNELFdBQVcsRXZCaUJJLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVTtFdUJoQm5ELFNBQVMsRXZCZU0sSUFBSTtFdUJkbkIsc0JBQXNCLEVBQUUsV0FBVztFQUNuQyx1QkFBdUIsRUFBRSxTQUFTO0VBQ2xDLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFdBQVcsRUFBRSxJQUFJLEdBS3BCOztBQUVELEFBQUEsRUFBRTtBQUNGLEVBQUU7QUFDRixFQUFFO0FBQ0YsRUFBRTtBQUNGLEVBQUU7QUFDRixFQUFFO0FBQ0YsR0FBRztBQUNILEdBQUc7QUFDSCxHQUFHO0FBQ0gsR0FBRztBQUNILEdBQUc7QUFDSCxHQUFHLENBQUM7RUFDQSxXQUFXLEV2QlBJLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVTtFdUJRbkQsTUFBTSxFQUFFLGNBQWM7RUFDdEIsV0FBVyxFQUFFLEdBQUc7RUFDaEIsV0FBVyxFQUFFLElBQUksR0FDcEI7O0FBRUQ7Ozs7R0FJRztBQUNILEFBQUEsRUFBRTtBQUNGLEdBQUcsQ0FBQztFQUNBLFNBQVMsRXBCbURELE9BQW9ELEdvQjlDL0Q7RWRtSU8sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7SWMxSWpELEFBQUEsRUFBRTtJQUNGLEdBQUcsQ0FBQztNQUlJLFNBQVMsRXBCZ0RMLElBQW9ELEdvQjlDL0Q7O0FBRUQsQUFBQSxFQUFFO0FBQ0YsR0FBRyxDQUFDO0VBQ0EsU0FBUyxFcEIwQ0QsUUFBb0QsR29CckMvRDtFZDBITyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtJY2pJakQsQUFBQSxFQUFFO0lBQ0YsR0FBRyxDQUFDO01BSUksU0FBUyxFcEJ1Q0wsU0FBb0QsR29CckMvRDs7QUFFRCxBQUFBLEVBQUU7QUFDRixHQUFHLENBQUM7RUFDQSxTQUFTLEVwQmlDRCxNQUFvRCxHb0I1Qi9EO0VkaUhPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0ljeEhqRCxBQUFBLEVBQUU7SUFDRixHQUFHLENBQUM7TUFJSSxTQUFTLEVwQjhCTCxRQUFvRCxHb0I1Qi9EOztBQUVELEFBQUEsRUFBRTtBQUNGLEdBQUcsQ0FBQztFQUNBLFNBQVMsRXBCd0JELE9BQW9ELEdvQm5CL0Q7RWR3R08sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7SWMvR2pELEFBQUEsRUFBRTtJQUNGLEdBQUcsQ0FBQztNQUlJLFNBQVMsRXBCcUJMLE1BQW9ELEdvQm5CL0Q7O0FBRUQsQUFBQSxFQUFFO0FBQ0YsR0FBRyxDQUFDO0VBQ0EsU0FBUyxFcEJlRCxRQUFvRCxHb0JWL0Q7RWQrRk8sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7SWN0R2pELEFBQUEsRUFBRTtJQUNGLEdBQUcsQ0FBQztNQUlJLFNBQVMsRXBCWUwsT0FBb0QsR29CVi9EOztBQUVELEFBQUEsRUFBRTtBQUNGLEdBQUcsQ0FBQztFQUNBLFNBQVMsRXBCTUQsSUFBb0QsR29CRC9EO0Vkc0ZPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0ljN0ZqRCxBQUFBLEVBQUU7SUFDRixHQUFHLENBQUM7TUFJSSxTQUFTLEVwQkdMLElBQW9ELEdvQkQvRDs7QUFFRCxBQUFBLENBQUMsQ0FBQztFQUNFLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLGFBQWEsRUFBRSxJQUFJO0VBQ25CLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFNBQVMsRXBCTEQsU0FBb0QsR29CZS9EO0VBUkcsQUFBQSxlQUFlLENBTm5CLENBQUM7RUFPRyxTQUFTLENBUGIsQ0FBQyxDQU9lO0lBQ1IsTUFBTSxFQUFFLFdBQVcsR0FDdEI7RUQvREwsQUFDSSxDQURILEFBQ0ksV0FBVyxDQ2dFQztJQUNULGFBQWEsRUFBRSxDQUFDLEdBQ25COztBQUdMLEFBQUEsZUFBZSxDQUFDO0VBQ1osTUFBTSxFQUFFLE1BQU07RUFDZCxTQUFTLEVwQm5CRCxTQUFvRCxHb0JvQi9EOztBQUVELEFBQUEsRUFBRTtBQUNGLEVBQUUsQ0FBQztFQUNDLE1BQU0sRUFBRSxhQUFhLEdBWXhCO0VBVkcsQUFBQSxlQUFlLENBSm5CLEVBQUU7RUFLRSxTQUFTLENBTGIsRUFBRSxFQUlFLGVBQWU7RUFIbkIsRUFBRTtFQUlFLFNBQVM7RUFKYixFQUFFLENBSWM7SUFDUixNQUFNLEVBQUUsV0FBVztJQUNuQixTQUFTLEVwQjdCTCxTQUFvRCxHb0JrQzNEO0lBUkQsQUFLSSxlQUxXLENBSm5CLEVBQUUsQ0FTTSxFQUFFO0lBSk4sU0FBUyxDQUxiLEVBQUUsQ0FTTSxFQUFFLEVBTE4sZUFBZTtJQUhuQixFQUFFLENBUU0sRUFBRTtJQUpOLFNBQVM7SUFKYixFQUFFLENBUU0sRUFBRSxDQUFDO01BQ0MsV0FBVyxFQUFFLElBQUksR0FDcEI7O0FBS1QsQUFFUSxVQUZFLENBQ04sQ0FBQyxBQUNJLE9BQU8sQ0FBQztFQUNMLE9BQU8sRUFBRSxJQUFJLEdBQ2hCOztBQUpULEFBTVEsVUFORSxDQUNOLENBQUMsQUFLSSxNQUFNLENBQUM7RUFDSixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFSVCxBQVdJLFVBWE0sQ0FXTixJQUFJLENBQUM7RUFDRCxLQUFLLEVYNUhLLE9BQU8sR1c2SHBCOztBQUdMLEFBQUEsS0FBSztBQUNMLFdBQVcsQ0FBQztFQUNSLFNBQVMsRXBCeERELE1BQW9ELEdvQnlEL0Q7O0FBRUQsQUFBQSxVQUFVLENBQUM7RUFDUCxjQUFjLEVBQUUsU0FBUyxHQUM1Qjs7QXhCdElELCtHQUErRztBeUJyQi9HOzs7OztHQUtHO0E0Q09ELEFBQUEsZUFBZSxDQUFDO0VQNkJaLGFBQXlCLEVBQUcsU0FBaUM7RUFBN0QsWUFBeUIsRUFBRyxTQUFpQztFQ3ZCakUsU0FBUyxFM0Q0RUMsU0FBb0Q7RTJEM0U5RCxXQUFXLEVBQUUsSUFBSTtFQUNqQixZQUFZLEVBQUUsSUFBSSxHTUVqQjtFQVZELEFBR0UsZUFIYSxBQUdaLE1BQU0sQ0FBQztJUDBCTixhQUF5QixFQUFHLFNBQWlDO0lBQTdELFlBQXlCLEVBQUcsU0FBaUM7SUN2QmpFLFNBQVMsRU1Gc0IsSUFBSTtJTkduQyxXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSSxHTUhmO0VBTEgsQUFPRSxlQVBhLEFBT1osS0FBSyxDQUFDO0lQc0JMLGFBQXlCLEVBQUcsQ0FBaUM7SUFBN0QsWUFBeUIsRUFBRyxDQUFpQztJQ3ZCakUsU0FBUyxFTUVzQixJQUFJO0lORG5DLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxJQUFJLEdNQ2Y7O0FBSUgsQUFBQSxPQUFPLENBQUM7RU5TUixPQUFPLEVBQUUsSUFBSTtFQUNiLFNBQVMsRUFKa0MsR0FBRyxDQUM3QixJQUFJLEdNTHBCOztBQUVELEFBQUEsS0FBSyxDQUFDO0VMcUdOLElBQUksRUFBQyxRQUFDO0VBSUosVUFBVSxFQUFFLENBQUM7RUFDYixTQUFTLEVBQUUsQ0FBQztFQXNDWixLQUFhLEVBL0VnQixJQUFJLEdLdERsQztFQVhELEFBR0UsS0FIRyxBQUdGLEtBQUssQ0FBQztJTGtHVCxJQUFJLEVBQUMsS0FBQyxHS2hHSDtFQUxILEFBT0UsS0FQRyxBQU9GLE9BQU8sQ0FBQztJTDhGWCxJQUFJLEVBQUMsUUFBQyxHSzVGSDs7QUFHSCxBQUNFLE9BREssR0FDSCxLQUFLLENBQUM7RUxtSVIsS0FBYSxFQTNGTCxJQUFJLEdLdENYOztBQUhILEFBS0UsT0FMSyxHQUtILE9BQU8sQ0FBQztFTCtIVixLQUFhLEVBM0ZMLElBQUksR0tsQ1g7O0FBU0QsQUFLRSxPQUxLLEdBS0gsYUFBYSxFQUxqQixPQUFPLEdBS2MsV0FBVyxFQUxoQyxPQUFPLEdBSzZCLFFBQVEsRUFMNUMsT0FBTyxHQUt5QyxRQUFRLEVBTHhELE9BQU8sR0FLcUQsUUFBUSxFQUxwRSxPQUFPLEdBS2lFLFFBQVEsRUFMaEYsT0FBTyxHQUs2RSxRQUFRLEVBTDVGLE9BQU8sR0FLeUYsUUFBUSxFQUx4RyxPQUFPLEdBS3FHLFFBQVEsRUFMcEgsT0FBTyxHQUtpSCxRQUFRLEVBTGhJLE9BQU8sR0FLNkgsUUFBUSxFQUw1SSxPQUFPLEdBS3lJLFNBQVMsRUFMekosT0FBTyxHQUtzSixTQUFTLEVBTHRLLE9BQU8sR0FLbUssU0FBUyxDQUF6SztFQUNOLFVBQVUsRUFBRSxJQUFJLEdBQ2pCOztBM0RtSEMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEMUg3QyxBQUtFLE9BTEssR0FLSCxjQUFjLEVBTGxCLE9BQU8sR0FLZSxZQUFZLEVBTGxDLE9BQU8sR0FLK0IsU0FBUyxFQUwvQyxPQUFPLEdBSzRDLFNBQVMsRUFMNUQsT0FBTyxHQUt5RCxTQUFTLEVBTHpFLE9BQU8sR0FLc0UsU0FBUyxFQUx0RixPQUFPLEdBS21GLFNBQVMsRUFMbkcsT0FBTyxHQUtnRyxTQUFTLEVBTGhILE9BQU8sR0FLNkcsU0FBUyxFQUw3SCxPQUFPLEdBSzBILFNBQVMsRUFMMUksT0FBTyxHQUt1SSxTQUFTLEVBTHZKLE9BQU8sR0FLb0osVUFBVSxFQUxySyxPQUFPLEdBS2tLLFVBQVUsRUFMbkwsT0FBTyxHQUtnTCxVQUFVLENBQXZMO0lBQ04sVUFBVSxFQUFFLElBQUksR0FDakI7O0EzRG1IQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkQxSDdDLEFBS0UsT0FMSyxHQUtILGFBQWEsRUFMakIsT0FBTyxHQUtjLFdBQVcsRUFMaEMsT0FBTyxHQUs2QixRQUFRLEVBTDVDLE9BQU8sR0FLeUMsUUFBUSxFQUx4RCxPQUFPLEdBS3FELFFBQVEsRUFMcEUsT0FBTyxHQUtpRSxRQUFRLEVBTGhGLE9BQU8sR0FLNkUsUUFBUSxFQUw1RixPQUFPLEdBS3lGLFFBQVEsRUFMeEcsT0FBTyxHQUtxRyxRQUFRLEVBTHBILE9BQU8sR0FLaUgsUUFBUSxFQUxoSSxPQUFPLEdBSzZILFFBQVEsRUFMNUksT0FBTyxHQUt5SSxTQUFTLEVBTHpKLE9BQU8sR0FLc0osU0FBUyxFQUx0SyxPQUFPLEdBS21LLFNBQVMsQ0FBeks7SUFDTixVQUFVLEVBQUUsSUFBSSxHQUNqQjs7QTNEd0hDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEL0h0QyxBQUtFLE9BTEssR0FLSCxjQUFjLEVBTGxCLE9BQU8sR0FLZSxZQUFZLEVBTGxDLE9BQU8sR0FLK0IsU0FBUyxFQUwvQyxPQUFPLEdBSzRDLFNBQVMsRUFMNUQsT0FBTyxHQUt5RCxTQUFTLEVBTHpFLE9BQU8sR0FLc0UsU0FBUyxFQUx0RixPQUFPLEdBS21GLFNBQVMsRUFMbkcsT0FBTyxHQUtnRyxTQUFTLEVBTGhILE9BQU8sR0FLNkcsU0FBUyxFQUw3SCxPQUFPLEdBSzBILFNBQVMsRUFMMUksT0FBTyxHQUt1SSxTQUFTLEVBTHZKLE9BQU8sR0FLb0osVUFBVSxFQUxySyxPQUFPLEdBS2tLLFVBQVUsRUFMbkwsT0FBTyxHQUtnTCxVQUFVLENBQXZMO0lBQ04sVUFBVSxFQUFFLElBQUksR0FDakI7O0FBMkJELEFBZkYsT0FlUyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFFBQVEsRUFBbEIsT0FBTyxHQUFHLFNBQVMsRUFBbkIsT0FBTyxHQUFHLFNBQVMsRUFBbkIsT0FBTyxHQUFHLFNBQVMsQ0FmeUI7RUxzRGhELElBQUksRUFBQyxRQUFDLEdLcERIOztBQWFDLEFBQUEsT0FBTyxHQUFHLFFBQVEsQ0FBWTtFTGtGaEMsS0FBYSxFN0Q1QlAsUUFBMEQsR2tFbkQ3RDs7QUFIRCxBQUFBLE9BQU8sR0FBRyxRQUFRLENBQVk7RUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7O0FBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0VMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEOztBQUhELEFBQUEsT0FBTyxHQUFHLFFBQVEsQ0FBWTtFTGtGaEMsS0FBYSxFN0Q1QlAsU0FBMEQsR2tFbkQ3RDs7QUFIRCxBQUFBLE9BQU8sR0FBRyxRQUFRLENBQVk7RUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7O0FBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0VMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEOztBQUhELEFBQUEsT0FBTyxHQUFHLFFBQVEsQ0FBWTtFTGtGaEMsS0FBYSxFN0Q1QlAsU0FBMEQsR2tFbkQ3RDs7QUFIRCxBQUFBLE9BQU8sR0FBRyxRQUFRLENBQVk7RUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7O0FBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0VMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEOztBQUhELEFBQUEsT0FBTyxHQUFHLFNBQVMsQ0FBVztFTGtGaEMsS0FBYSxFN0Q1QlAsU0FBMEQsR2tFbkQ3RDs7QUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7RUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7O0FBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0VMa0ZoQyxLQUFhLEU3RDVCUCxJQUEwRCxHa0VuRDdEOztBM0RxRkMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJENUczQyxBQUFBLE9BQU8sR0FBRyxZQUFZLENBQU87SUwyRGpDLElBQUksRUFBQyxLQUFDO0lBMkNKLEtBQWEsRUEzRkwsSUFBSSxHS1RUO0VBU0QsQUFORixPQU1TLEdBQUcsY0FBYyxFQVN4QixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsVUFBVSxFQUFwQixPQUFPLEdBQUcsVUFBVSxFQUFwQixPQUFPLEdBQUcsVUFBVSxDQWZ3QjtJTHNEaEQsSUFBSSxFQUFDLFFBQUMsR0twREg7RUFJQyxBQUFBLE9BQU8sR0FBRyxjQUFjLENBQU87SUwyRmpDLEtBQWEsRUEzRkwsSUFBSSxHS0dUO0VBTUQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxRQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsVUFBVSxDQUFVO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsVUFBVSxDQUFVO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsVUFBVSxDQUFVO0lMa0ZoQyxLQUFhLEU3RDVCUCxJQUEwRCxHa0VuRDdEOztBM0RxRkMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJENUczQyxBQUFBLE9BQU8sR0FBRyxXQUFXLENBQVE7SUwyRGpDLElBQUksRUFBQyxLQUFDO0lBMkNKLEtBQWEsRUEzRkwsSUFBSSxHS1RUO0VBU0QsQUFORixPQU1TLEdBQUcsYUFBYSxFQVN2QixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsUUFBUSxFQUFsQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxFQUFuQixPQUFPLEdBQUcsU0FBUyxDQWZ5QjtJTHNEaEQsSUFBSSxFQUFDLFFBQUMsR0twREg7RUFJQyxBQUFBLE9BQU8sR0FBRyxhQUFhLENBQVE7SUwyRmpDLEtBQWEsRUEzRkwsSUFBSSxHS0dUO0VBTUQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxRQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsUUFBUSxDQUFZO0lMa0ZoQyxLQUFhLEU3RDVCUCxHQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxTQUEwRCxHa0VuRDdEO0VBSEQsQUFBQSxPQUFPLEdBQUcsU0FBUyxDQUFXO0lMa0ZoQyxLQUFhLEU3RDVCUCxJQUEwRCxHa0VuRDdEOztBM0QwRkMsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkRqSHBDLEFBQUEsT0FBTyxHQUFHLFlBQVksQ0FBTztJTDJEakMsSUFBSSxFQUFDLEtBQUM7SUEyQ0osS0FBYSxFQTNGTCxJQUFJLEdLVFQ7RUFTRCxBQU5GLE9BTVMsR0FBRyxjQUFjLEVBU3hCLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxTQUFTLEVBQW5CLE9BQU8sR0FBRyxVQUFVLEVBQXBCLE9BQU8sR0FBRyxVQUFVLEVBQXBCLE9BQU8sR0FBRyxVQUFVLENBZndCO0lMc0RoRCxJQUFJLEVBQUMsUUFBQyxHS3BESDtFQUlDLEFBQUEsT0FBTyxHQUFHLGNBQWMsQ0FBTztJTDJGakMsS0FBYSxFQTNGTCxJQUFJLEdLR1Q7RUFNRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFFBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLEdBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLEdBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxTQUFTLENBQVc7SUxrRmhDLEtBQWEsRTdENUJQLEdBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxVQUFVLENBQVU7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxVQUFVLENBQVU7SUxrRmhDLEtBQWEsRTdENUJQLFNBQTBELEdrRW5EN0Q7RUFIRCxBQUFBLE9BQU8sR0FBRyxVQUFVLENBQVU7SUxrRmhDLEtBQWEsRTdENUJQLElBQTBELEdrRW5EN0Q7O0FBS0wsQUFBQSxjQUFjLEFBQUEsSUFBSyxDQTFFbkIsT0FBTyxJQTBFdUIsS0FBSyxDQUFDO0VBQ2xDLEtBQUssRUFBRSxJQUFJLEdBQ1o7O0FBR0QsQUFBQSxjQUFjLEFBQUEsSUFBSyxDQUFBLE9BQU8sSUFBSSxLQUFLLENBQUM7RUFDbEMsTUFBTSxFQUFFLElBQUksR0FDYjs7QUE2QkQsQUFBQSxjQUFjLENBQVE7RVA5RmxCLFdBQXlCLEVBQUcsVUFBaUM7RUFBN0QsWUFBeUIsRUFBRyxVQUFpQyxHTzZIaEU7RUEvQkQsQUFJRSxjQUpZLEdBSVYsS0FBSyxDQUFDO0lMa0NSLEtBQWEsRUF0RGlDLHFCQUE0QjtJRjlFeEUsV0FBeUIsRUFBRyxTQUFpQztJQUE3RCxZQUF5QixFQUFHLFNBQWlDLEdPb0c5RDtFQU5ILEFBeEJBLGNBd0JjLEdBeEJaLEtBQUssQ0FBVztJTDhEaEIsS0FBYSxFQTNGTCxJQUFJLEdLK0JiO0VBc0JELEFBcEJBLGNBb0JjLEdBcEJaLE9BQU8sQ0FBVztJTDBEbEIsS0FBYSxFQTNGTCxJQUFJLEdLbUNiO0VBa0JELEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtJTGtEaEIsS0FBYSxFQXREaUMseUJBQTRCLEdLTXpFO0VBVUgsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO0lMa0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7RUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07SUxrRGhCLEtBQWEsRUF0RGlDLG9CQUE0QixHS016RTtFQVVILEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtJTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0VBVUgsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO0lMa0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7RUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07SUxrRGhCLEtBQWEsRUF0RGlDLG9CQUE0QixHS016RTtFQVVILEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtJTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0VBVUgsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO0lMa0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7RUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07SUxrRGhCLEtBQWEsRUF0RGlDLG9CQUE0QixHS016RTtFQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztJTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0VBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO0lMa0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7RUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7SUxrRGhCLEtBQWEsRUF0RGlDLHFCQUE0QixHS016RTtFM0RzREcsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7STJENUMvQyxBQXhCQSxjQXdCYyxHQXhCWixZQUFZLENBQUk7TUw4RGhCLEtBQWEsRUEzRkwsSUFBSSxHSytCYjtJQXNCRCxBQXBCQSxjQW9CYyxHQXBCWixjQUFjLENBQUk7TUwwRGxCLEtBQWEsRUEzRkwsSUFBSSxHS21DYjtJQWtCRCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLHlCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQyxvQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQyxvQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQyxvQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixVQUFVLENBQUk7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFVBQVUsQ0FBSTtNTGtEaEIsS0FBYSxFQXREaUMsMEJBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsVUFBVSxDQUFJO01Ma0RoQixLQUFhLEVBdERpQyxxQkFBNEIsR0tNekU7RTNEc0RHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0kyRDVDL0MsQUF4QkEsY0F3QmMsR0F4QlosV0FBVyxDQUFLO01MOERoQixLQUFhLEVBM0ZMLElBQUksR0srQmI7SUFzQkQsQUFwQkEsY0FvQmMsR0FwQlosYUFBYSxDQUFLO01MMERsQixLQUFhLEVBM0ZMLElBQUksR0ttQ2I7SUFrQkQsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO01Ma0RoQixLQUFhLEVBdERpQyx5QkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsUUFBUSxDQUFNO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixRQUFRLENBQU07TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFFBQVEsQ0FBTTtNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMscUJBQTRCLEdLTXpFO0UzRDJERyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0kyRGpEeEMsQUF4QkEsY0F3QmMsR0F4QlosWUFBWSxDQUFJO01MOERoQixLQUFhLEVBM0ZMLElBQUksR0srQmI7SUFzQkQsQUFwQkEsY0FvQmMsR0FwQlosY0FBYyxDQUFJO01MMERsQixLQUFhLEVBM0ZMLElBQUksR0ttQ2I7SUFrQkQsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQyx5QkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsU0FBUyxDQUFLO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixTQUFTLENBQUs7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFNBQVMsQ0FBSztNTGtEaEIsS0FBYSxFQXREaUMsb0JBQTRCLEdLTXpFO0lBVUgsQUFaRSxjQVlZLEdBWlYsVUFBVSxDQUFJO01Ma0RoQixLQUFhLEVBdERpQywwQkFBNEIsR0tNekU7SUFVSCxBQVpFLGNBWVksR0FaVixVQUFVLENBQUk7TUxrRGhCLEtBQWEsRUF0RGlDLDBCQUE0QixHS016RTtJQVVILEFBWkUsY0FZWSxHQVpWLFVBQVUsQ0FBSTtNTGtEaEIsS0FBYSxFQXREaUMscUJBQTRCLEdLTXpFOztBQThDSCxBQUdFLGVBSGEsQ0FHYixlQUFlLENBQUM7RVBySWQsWUFBeUIsRUFBRyxVQUFpQztFQUE3RCxXQUF5QixFQUFHLFVBQWlDLEdPdUk5RDs7QUFJRCxBQUFBLGVBQWUsQUFBQSxJQUFLLENBQUEsS0FBSyxJQVQzQixlQUFlLENBU2tCO0VQM0k3QixZQUF5QixFQUFHLFVBQWlDO0VBQTdELFdBQXlCLEVBQUcsVUFBaUMsR082STlEOztBQVhILEFBY0UsZUFkYSxHQWNYLEtBQUssQ0FBQztFUGhKTixhQUF5QixFQUFHLFNBQWlDO0VBQTdELFlBQXlCLEVBQUcsU0FBaUMsR09rSjlEOztBQVNHLEFGcEtOLFdFb0tpQixHRnBLYixLQUFLLENBQVE7RUg2SWYsS0FBYSxFN0Q1QlAsSUFBMEQsR2dFL0dqRTs7QUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtFSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFOztBRWtLSyxBRnBLTixXRW9LaUIsR0ZwS2IsS0FBSyxDQUFRO0VINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7O0FFa0tLLEFGcEtOLFdFb0tpQixHRnBLYixLQUFLLENBQVE7RUg2SWYsS0FBYSxFN0Q1QlAsR0FBMEQsR2dFL0dqRTs7QUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtFSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFOztBRWtLSyxBRnBLTixXRW9LaUIsR0ZwS2IsS0FBSyxDQUFRO0VINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7O0FFa0tLLEFGcEtOLFdFb0tpQixHRnBLYixLQUFLLENBQVE7RUg2SWYsS0FBYSxFN0Q1QlAsU0FBMEQsR2dFL0dqRTs7QUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtFSDZJZixLQUFhLEU3RDVCUCxLQUEwRCxHZ0UvR2pFOztBekRpSkssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEaUJ6QyxBRnBLTixZRW9La0IsR0ZwS2QsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLElBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFlFb0trQixHRnBLZCxLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsU0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixZRW9La0IsR0ZwS2QsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLEdBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFlFb0trQixHRnBLZCxLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsU0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixZRW9La0IsR0ZwS2QsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxLQUEwRCxHZ0UvR2pFOztBekRpSkssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEaUJ6QyxBRnBLTixXRW9LaUIsR0ZwS2IsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLElBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFdFb0tpQixHRnBLYixLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsU0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixXRW9LaUIsR0ZwS2IsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLEdBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFdFb0tpQixHRnBLYixLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsU0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixXRW9LaUIsR0ZwS2IsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sV0VvS2lCLEdGcEtiLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxLQUEwRCxHZ0UvR2pFOztBekRzSkssTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkRZbEMsQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxJQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFlFb0trQixHRnBLZCxLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsR0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixZRW9La0IsR0ZwS2QsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxHQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFlFb0trQixHRnBLZCxLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsR0FBMEQsR2dFL0dqRTtFRWtLSyxBRnBLTixZRW9La0IsR0ZwS2QsS0FBSyxDQUFRO0lINklmLEtBQWEsRTdENUJQLFNBQTBELEdnRS9HakU7RUVrS0ssQUZwS04sWUVvS2tCLEdGcEtkLEtBQUssQ0FBUTtJSDZJZixLQUFhLEU3RDVCUCxTQUEwRCxHZ0UvR2pFO0VFa0tLLEFGcEtOLFlFb0trQixHRnBLZCxLQUFLLENBQVE7SUg2SWYsS0FBYSxFN0Q1QlAsS0FBMEQsR2dFL0dqRTs7QUV5TEssQUYzTE4sY0UyTG9CLEFBQUEsV0FBVyxHRjNMM0IsS0FBSyxDQUFRO0VINklmLEtBQWEsRUF0RGlDLHFCQUE0QixHR3JGM0U7O0FFeUxLLEFGM0xOLGNFMkxvQixBQUFB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LEVBQVMsQ0FBQyxHQUU3QjtFQ3VNRCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFM0Z2RDtFMUQ2SEwsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7STJEb0QzQyxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFVBQVUsQ0FBSTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFVBQVUsQ0FBSTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFVBQVUsQ0FBSTtNSnlIeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFM0Z2RDtFMUQ2SEwsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7STJEb0QzQyxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFFBQVEsQ0FBTTtNSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtJQ2lMUCxBRG5MTSxzQkNtTGdCLEdEbkxkLFNBQVMsQ0FBSztNSnlIeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFM0Z2RDtFMURrSUwsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtJMkQrQ3BDLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxRQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsU0FBUyxDQUFLO01KeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsVUFBVSxDQUFJO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsVUFBVSxDQUFJO01KeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0lDaUxQLEFEbkxNLHNCQ21MZ0IsR0RuTGQsVUFBVSxDQUFJO01KeUh4QixLQUFhLEU3RDVCUCxJQUEwRCxHaUUzRnZEOztBQ3VMUCxBQUFBLHVCQUF1QixDQUFFO0VEN0t2QixZQUFnQixFQUFTLENBQUM7RUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDK0szQjtFQUZELEFEMUtBLHVCQzBLdUIsR0QxS3JCLEtBQUssQ0FBUTtJQUVYLGFBQWlCLEVBQVUsQ0FBQztJQUE1QixZQUFpQixFQUFVLENBQUMsR0FFL0I7O0ExRDRHQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkRvRDNDLEFBQUEsdUJBQXVCLENBQUM7SUQ5TXRCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUMsR0NnTjNCO0lBRkQsQUQzTUEsdUJDMk11QixHRDNNckIsS0FBSyxDQUFRO01BRVgsWUFBZ0IsRUFBUyxDQUFDO01BQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQUU3Qjs7QTFEbUpDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRG9EM0MsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFFBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLElBQTBELEdpRXBHdkQ7O0ExRHNJTCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkRvRDNDLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxRQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsU0FBUyxDQUFLO0lKeUh4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsVUFBVSxDQUFJO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsVUFBVSxDQUFJO0lKeUh4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUUzRnZEO0VDaUxQLEFEbkxNLHVCQ21MaUIsR0RuTGYsVUFBVSxDQUFJO0lKeUh4QixLQUFhLEU3RDVCUCxJQUEwRCxHaUUzRnZEOztBMUQ2SEwsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEb0QzQyxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFFBQVEsQ0FBTTtJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFM0Z2RDs7QTFEa0lMLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEK0NwQyxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFNBQVMsQ0FBSztJSnlIeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFVBQVUsQ0FBSTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFVBQVUsQ0FBSTtJSnlIeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFM0Z2RDtFQ2lMUCxBRG5MTSx1QkNtTGlCLEdEbkxmLFVBQVUsQ0FBSTtJSnlIeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFM0Z2RDs7QTFENkhMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRDBEM0MsQUFBQSx3QkFBd0IsQ0FBQztJRDdLdkIsWUFBZ0IsRUFBUyxDQUFDO0lBQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQytLM0I7SUFGRCxBRDFLQSx3QkMwS3dCLEdEMUt0QixLQUFLLENBQVE7TUFFWCxhQUFpQixFQUFVLENBQUM7TUFBNUIsWUFBaUIsRUFBVSxDQUFDLEdBRS9COztBMUQ0R0MsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEb0QzQyxBQUFBLHNCQUFzQixDQUFFO0lEOU10QixZQUFnQixFQUFTLENBQUM7SUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDZ04zQjtJQUZELEFEM01BLHNCQzJNc0IsR0QzTXBCLEtBQUssQ0FBUTtNQUVYLFlBQWdCLEVBQVMsQ0FBQztNQUExQixXQUFnQixFQUFTLENBQUMsR0FFN0I7O0ExRG1KQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkRvRDNDLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxRQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsUUFBUSxDQUFNO0lKa0l4QixLQUFhLEU3RDVCUCxHQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsU0FBUyxDQUFLO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsU0FBUyxDQUFLO0lKa0l4QixLQUFhLEU3RDVCUCxTQUEwRCxHaUVwR3ZEO0VDMExQLEFENUxNLHNCQzRMZ0IsR0Q1TGQsU0FBUyxDQUFLO0lKa0l4QixLQUFhLEU3RDVCUCxJQUEwRCxHaUVwR3ZEOztBMURzSUwsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEb0QzQyxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsUUFBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFNBQVMsQ0FBSztJSmtJeEIsS0FBYSxFN0Q1QlAsR0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFVBQVUsQ0FBSTtJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFVBQVUsQ0FBSTtJSmtJeEIsS0FBYSxFN0Q1QlAsU0FBMEQsR2lFcEd2RDtFQzBMUCxBRDVMTSxzQkM0TGdCLEdENUxkLFVBQVUsQ0FBSTtJSmtJeEIsS0FBYSxFN0Q1QlAsSUFBMEQsR2lFcEd2RDs7QTFEc0lMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRG9EM0MsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFFBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxRQUFRLENBQU07SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLElBQTBELEdpRTNGdkQ7O0ExRGtJTCxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRCtDcEMsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFFBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sc0JDbUxnQixHRG5MZCxVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLElBQTBELEdpRTNGdkQ7O0ExRDZITCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFMkQwRDNDLEFBQUEsdUJBQXVCLENBQUU7SUQ3S3ZCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUMsR0MrSzNCO0lBRkQsQUQxS0EsdUJDMEt1QixHRDFLckIsS0FBSyxDQUFRO01BRVgsYUFBaUIsRUFBVSxDQUFDO01BQTVCLFlBQWlCLEVBQVUsQ0FBQyxHQUUvQjs7QTFEaUhDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RTJEK0NwQyxBQUFBLHVCQUF1QixDQUFDO0lEOU10QixZQUFnQixFQUFTLENBQUM7SUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDZ04zQjtJQUZELEFEM01BLHVCQzJNdUIsR0QzTXJCLEtBQUssQ0FBUTtNQUVYLFlBQWdCLEVBQVMsQ0FBQztNQUExQixXQUFnQixFQUFTLENBQUMsR0FFN0I7O0ExRHdKQyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRCtDcEMsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFFBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLElBQTBELEdpRXBHdkQ7O0ExRDJJTCxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRCtDcEMsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFFBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixVQUFVLENBQUk7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixVQUFVLENBQUk7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixVQUFVLENBQUk7SUprSXhCLEtBQWEsRTdENUJQLElBQTBELEdpRXBHdkQ7O0ExRDJJTCxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRCtDcEMsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFFBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixRQUFRLENBQU07SUprSXhCLEtBQWEsRTdENUJQLEdBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLFNBQTBELEdpRXBHdkQ7RUMwTFAsQUQ1TE0sdUJDNExpQixHRDVMZixTQUFTLENBQUs7SUprSXhCLEtBQWEsRTdENUJQLElBQTBELEdpRXBHdkQ7O0ExRDJJTCxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRCtDcEMsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFFBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixTQUFTLENBQUs7SUp5SHhCLEtBQWEsRTdENUJQLEdBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLFNBQTBELEdpRTNGdkQ7RUNpTFAsQURuTE0sdUJDbUxpQixHRG5MZixVQUFVLENBQUk7SUp5SHhCLEtBQWEsRTdENUJQLElBQTBELEdpRTNGdkQ7O0ExRGtJTCxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRHFEcEMsQUFBQSx3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 */
