@charset "UTF-8";
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/* apply a natural box layout model to all elements, but allowing components to change */
html {
  box-sizing: border-box;
}

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

/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 * 2. Add the correct display in IE.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  /* 1 */
  display: block;
}

/**
 * Add the correct display in IE 9-.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
}

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

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

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

/* Links
   ========================================================================== */
/**
 * 1. Remove the gray background on active links in IE 10.
 * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
 */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */
}

/**
 * Remove the outline on focused links when they are also active or hovered
 * in all browsers (opinionated).
 */
a:active,
a:hover {
  outline-width: 0;
}

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the bottom border in Firefox 39-.
 * 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 */
}

/**
 * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
 */
b,
strong {
  font-weight: inherit;
}

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

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic;
}

/**
 * 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;
}

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000;
}

/**
 * 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;
}

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden;
}

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

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px;
}

/**
 * 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 */
}

/* Forms
   ========================================================================== */
/**
 * 1. Change font properties to `inherit` in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
}

/**
 * Restore the font weight unset by the previous rule.
 */
optgroup {
  font-weight: bold;
}

/**
 * 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;
}

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS and Safari.
 */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
}

/**
 * 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;
}

/**
 * Change the border, margin, and padding in all browsers (opinionated).
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 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 */
}

/**
 * Remove the default vertical scrollbar in IE.
 */
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 and cancel buttons in Chrome and Safari on OS X.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Correct the text style of placeholders in Chrome, Edge, and Safari.
 */
::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.54;
}

/**
 * 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 */
}

/**
 *  remove ios styling. Only use on buttons and search inputs
 */
button, [type="search"], [type="button"] {
  -webkit-appearance: none;
  border-radius: 0;
  padding: 0;
}

input[type="number"] {
  -moz-appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.assistive-text {
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute !important;
  white-space: nowrap;
  height: 1px;
  width: 1px;
  overflow: hidden;
}

.assistive-text:hover, .assistive-text:active, .assistive-text:focus {
  font-size: .875em;
  font-weight: bold;
  line-height: normal;
  z-index: 100000;
  top: 5px;
  left: 5px;
  display: block;
  clip: auto !important;
  width: auto;
  height: auto;
  padding: 15px 23px 14px;
  text-decoration: none;
  color: #21759b;
  border-radius: 3px;
  background-color: #f1f1f1;
  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
}

.hide {
  display: none;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  animation-name: slideOutDown;
}

@keyframes slideOutLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  animation-name: slideOutLeft;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@-webkit-keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@-webkit-keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@-webkit-keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

@keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

body {
  font-family: 'Muli', 'Trebuchet MS', sans-serif;
  line-height: 1.625;
  font-size: 1em;
  -webkit-font-smoothing: antialiased;
  -moz-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6, .alpha, .beta, .gamma, .delta, .epsilon, .zeta {
  margin-top: 0;
  font-weight: 700;
}

.alpha {
  color: #434343;
  font-size: 2.25em;
  line-height: 1.05;
}

.alpha:before {
  display: block;
  content: '';
  height: .1666em;
  width: 4.1677em;
  background: #f3ad00;
  margin-bottom: .35em;
}

.alpha:after {
  display: none;
}

h2, .beta {
  color: #434343;
  font-size: 2em;
  margin-bottom: .5em;
  line-height: 1.0625;
}

h2:after, .beta:after {
  margin-top: .4em;
  display: block;
  content: '';
  height: .1875em;
  width: 3.125em;
  background: #f3ad00;
}

.premiere-date {
  color: #777777;
  font-size: 2em;
  margin-bottom: .5em;
  line-height: 1.0625;
}

.overline {
  margin-bottom: 1.5em;
}

.overline h1, .overline .alpha {
  line-height: 1.05;
  margin-bottom: .2em;
}

.overline h1:before, .overline .alpha:before {
  display: none;
}

.overline:before {
  margin-top: .4em;
  margin-bottom: .75em;
  display: block;
  content: '';
  height: .375em;
  width: 9.375em;
  background: #f3ad00;
}

.js .alpha:before, .js .alpha:after, .js h2:before, .js h2:after, .js .beta:before, .js .beta:after, .js .overline:before, .js .overline:after {
  -webkit-transition: width 0.75s ease-in-out;
  -ms-transition: width 0.75s ease-in-out;
  transition: width 0.75s ease-in-out;
  width: 0;
}

.js .overline.animate:before {
  width: 9.375em;
}

.js .alpha.animate:before, .js h2.alpha.animate:before {
  width: 4.1677em;
}

.js h2.animate:after, .js .beta.animate:after {
  width: 3.125em;
}

h3, .gamma {
  line-height: 1.25;
  color: #434343;
  font-size: 1.625em;
}

h4, .delta {
  color: #999999;
  font-size: 1.5em;
  line-height: 1.07;
}

h5, .epislon {
  color: black;
  font-size: 1.375em;
  line-height: 1.08;
}

h6, .zeta {
  color: #777777;
  font-family: 'Roboto Slab', serif;
  text-transform: uppercase;
  font-size: .875em;
  letter-spacing: .0714em;
}

p {
  margin: 0 0 1.666667em;
  font-size: 1.125em;
}

p:empty {
  display: none;
}

.plugin-container ol, .plugin-container ul {
  font-size: 1.125em;
  margin: 0 0 1.666667em;
  padding-left: 1.5em;
}

@media (min-width: 40.625em) {
  .plugin-container ol, .plugin-container ul {
    padding-left: 2.5em;
  }
}

.plugin-container ol li, .plugin-container ul li {
  margin-bottom: 1em;
}

.plugin-container ol {
  padding-left: 2em;
}

@media (min-width: 40.625em) {
  .plugin-container ol {
    padding-left: 3em;
  }
}

.plugin-container ul {
  list-style: none;
}

.plugin-container ul li {
  position: relative;
  padding-left: .5em;
}

.plugin-container ul li:before {
  display: inline-block;
  position: absolute;
  top: 0;
  left: -.5em;
  line-height: 1.5;
  content: '\2022';
  color: #f3ad00;
}

.two-up:after {
  display: table;
  clear: both;
  content: '';
}

.two-up:before {
  display: table;
  clear: both;
  content: '';
}

.two-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .two-up li {
    width: 47.36842%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .two-up li {
    width: 48.71795%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 51.28205%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .two-up li {
    width: 49.15254%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
}

.three-up:after {
  display: table;
  clear: both;
  content: '';
}

.three-up:before {
  display: table;
  clear: both;
  content: '';
}

.three-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .three-up li {
    width: 47.36842%;
    float: left;
  }
  .three-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .three-up li {
    width: 31.61538%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .three-up li {
    width: 32.20339%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.social-list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-align: center;
}

.social-list a {
  display: inline-block;
  width: 2em;
  height: 2em;
}

.social-list a svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
}

.social-list li {
  display: inline-block;
  padding: 0 .25em;
  text-align: center;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
}

.social-list svg .background {
  fill: #777777;
}

.social-list svg .color {
  fill: white;
}

.teaser-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.teaser-list li {
  list-style: none;
}

.teaser-list dd {
  margin: 0;
}

.teaser-item figure {
  margin: 0 0 0.75em;
  position: relative;
  overflow: hidden;
  padding-bottom: 56.25%;
}

.teaser-item figure a {
  display: block;
  width: 100%;
  height: 100%;
}

.teaser-item figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: block;
  width: 100%;
}

.teaser-item p {
  margin-bottom: 0;
}

.teaser-item h3 {
  margin-bottom: 0.375em;
}

.teaser-item h3 .passport-icon {
  max-width: 1em;
  max-height: 1em;
}

.teaser-item .zeta {
  margin-bottom: 0.375em;
  display: inline-block;
}

.teaser-item .icon {
  position: absolute;
  bottom: 0;
  left: 0;
  display: inline-block;
  width: 3.125em;
  height: 3.125em;
  background: rgba(23, 65, 137, 0.75);
}

.teaser-item .icon img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-width: 1.5625em;
  max-height: 1.5625em;
  width: auto;
  height: auto;
}

.collection-item figure {
  padding-bottom: 27.5%;
}

.js .teaser-item.slide-in-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .teaser-item.hidden-item {
  display: none;
}

.plugin-block, .plugin-list-block {
  margin-bottom: 3em;
}

.plugin-block:after, .plugin-list-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-block:before, .plugin-list-block:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-block h3 {
  border-bottom: 0.0625em solid #999999;
  margin-bottom: 1.5em;
}

.plugin-container h3 {
  margin-bottom: 0.1875em;
}

.plugin-list-block ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.plugin-list-block ul:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul li {
  list-style: none;
}

.plugin-list-block ul dd {
  margin: 0;
}

.alpha + .plugin-block, .alpha + .plugin-list-block {
  margin-top: 3em;
}

.plugin-container figure {
  margin-bottom: 1.5em;
}

.plugin-container figure img {
  display: block;
}

.plugin-container figure.center img {
  display: inline-block;
}

*[style*="float: left"], .left {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: left"], .left {
    display: inherit;
    float: left !important;
    margin-right: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

*[style*="float: right"], .right {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: right"], .right {
    display: inherit;
    float: right !important;
    margin-left: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

.center {
  margin-bottom: 1.5em;
  text-align: center;
}

/**
 * wallop.css
 *
 * @fileoverview Default styles for wallop – recommended
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
.carousel-container *:focus {
  outline: 0.125em solid #f3ad00;
}

.carousel-container .full-screen, .carousel-container .slides-pagination {
  display: none;
}

.carousel-container .Wallop-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-gap: 3px;
  padding: 0;
}

.carousel-container .Wallop-list .Wallop-item:before {
  display: none;
}

@media (min-width: 68.75em) {
  .carousel-container .Wallop-list {
    width: 150%;
    margin-left: -25%;
  }
}

@media (min-width: 95.625em) {
  .carousel-container .Wallop-list {
    width: 200%;
    margin-left: -50%;
  }
}

.js {
  /*
    This element groups all the items, but not the buttons
    It's a recommendation but it's very likely
    you'll want to hide any overflow from the items
    Especially when doing animations such as scale
   */
  /*
    This is the item element
    By default, they are all hidden and
    positioned absolute
    I recommend always having .Wallop-item--current
    in your markup by default (probably on the first element)
   */
  /*
    This is the current item element
    All we do here, is make it visible again reset
    the position to static. Could also be relative
   */
}

.js .carousel-container {
  overflow: hidden;
  margin-bottom: 3em;
  background: black;
}

@media (min-width: 68.75em) {
  .js .carousel-container {
    padding-top: 1em;
  }
}

.js .carousel-container .slides-pagination {
  display: inherit;
}

.js .Wallop-list {
  width: inherit;
}

.js .carousel.expanded .slides-pagination, .js .carousel.expanded .full-screen {
  display: none;
}

.js .plugin-container .Wallop {
  position: relative;
  -webkit-animation-duration: 0.45s;
  animation-duration: 0.45s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.js .plugin-container .Wallop.entering-fullscreen {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.js .plugin-container .Wallop.exiting-fullscreen {
  animation-name: slideOutDown;
}

.js .plugin-container .Wallop.entering-back {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.js .plugin-container .Wallop.viewing-full {
  position: fixed;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  z-index: 2147483647;
  background: black;
}

.js .plugin-container .Wallop.viewing-full button {
  z-index: 1;
}

.js .plugin-container .Wallop.viewing-full .slides-pagination {
  right: 20%;
  top: calc(75vh + 1em);
}

.js .plugin-container .Wallop.viewing-full .full-screen {
  left: 20%;
  top: calc(75vh + 1.15em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item {
  border-bottom: none;
  color: white;
  background: transparent;
  height: 100%;
  width: 100%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure {
  margin: 0 auto;
  width: 60%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .media-container {
  display: inline-block;
  height: 75vh;
  width: 100%;
  padding-top: 1em;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure figcaption {
  margin: 3em auto 0 auto;
  padding: 0;
  max-width: 60vw;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .see-more {
  left: calc(20% - .45em);
  top: calc(75vh + 7.75em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .hide-more {
  right: 20%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure.long-caption.expanded figcaption {
  padding-top: 3em;
}

.js .plugin-container .Wallop-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inherit;
  position: relative;
  overflow: hidden;
}

.js .plugin-container .Wallop-list li {
  list-style: none;
}

.js .plugin-container .Wallop-list dd {
  margin: 0;
}

.js .plugin-container .Wallop-item {
  visibility: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding-left: 0;
  margin-bottom: 0;
  color: white;
}

.js .plugin-container .Wallop-item .media-container {
  display: block;
  height: 24em;
  position: relative;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container {
    height: 32.8125em;
  }
}

.js .plugin-container .Wallop-item .media-container img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-height: 100%;
  max-width: 90%;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container img {
    max-width: 100%;
  }
}

.js .plugin-container .Wallop-item h4 {
  margin-bottom: .25em;
}

.js .carousel-item-caption {
  padding: 0.5em 1.5em;
  text-align: left;
}

.js .plugin-container .Wallop-item--current {
  visibility: visible;
  position: relative;
  text-align: center;
}

.js .plugin-container .Wallop-item--current figure {
  display: inline-block;
  width: 100%;
}

.js .plugin-container .Wallop-item--current figure.long-caption .hide-more, .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
  display: none;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item--current figure.long-caption figcaption {
    -webkit-transition: max-height 1s ease-in-out;
    -ms-transition: max-height 1s ease-in-out;
    transition: max-height 1s ease-in-out;
    max-height: 15em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption p {
    max-height: 4.5em;
    min-height: 4.5em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: color 0.3s ease-in-out;
    -ms-transition: color 0.3s ease-in-out;
    transition: color 0.3s ease-in-out;
    display: inline-block;
    color: #bb0b0e;
    position: absolute;
    left: calc(5% - .45em);
    top: 40.25em;
    padding: 0 .45em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover {
    color: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: all 0.3s ease-in-out;
    -ms-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    display: inline-block;
    opacity: 0;
    width: 2em;
    height: 2em;
    position: absolute;
    right: 5%;
    z-index: 1;
    display: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover svg {
    fill: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more svg {
    -webkit-transition: fill 0.3s ease-in-out;
    -ms-transition: fill 0.3s ease-in-out;
    transition: fill 0.3s ease-in-out;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    pointer-events: none;
    max-width: 1em;
    max-height: 1em;
    fill: white;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded {
    padding-bottom: 8.55em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded figcaption {
    max-height: 100%;
    position: absolute;
    padding: 3em 5% 1.5em 5%;
    max-width: inherit;
    bottom: 0;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded p {
    max-height: inherit;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .hide-more {
    display: inline-block;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .see-more {
    display: none;
  }
}

.js .plugin-container .Wallop-item--current figure img {
  display: inline-block;
}

.js .plugin-container .Wallop-item--current h4 {
  color: white;
}

.js .plugin-container .Wallop-item--current figcaption, .js .plugin-container .Wallop-item--current .caption {
  padding: 1.5em 0 0 0;
  background: rgba(0, 0, 0, 0.75);
  text-align: left;
  color: white;
  font-style: normal;
  max-width: 90%;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .Wallop-item--current figcaption p, .js .plugin-container .Wallop-item--current .caption p {
  margin-bottom: .55em;
}

.js .plugin-container .Wallop-item--current figcaption span, .js .plugin-container .Wallop-item--current .caption span {
  height: auto;
  display: block;
  margin-top: 3em;
}

.js .Wallop-buttonPrevious, .js .Wallop-buttonNext {
  border: none;
  background: none;
  box-shadow: none;
}

.js .Wallop-buttonPrevious:hover, .js .Wallop-buttonPrevious:focus, .js .Wallop-buttonPrevious:active, .js .Wallop-buttonNext:hover, .js .Wallop-buttonNext:focus, .js .Wallop-buttonNext:active {
  box-shadow: none;
  border: none;
}

.js .Wallop-buttonPrevious svg, .js .Wallop-buttonNext svg {
  height: 1em;
  width: 1em;
}

.js .Wallop-buttonPrevious svg path, .js .Wallop-buttonNext svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  opacity: .85;
}

.js .Wallop-buttonPrevious:hover svg path, .js .Wallop-buttonNext:hover svg path {
  fill: #f3ad00;
}

.js .full-screen {
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: #999999;
  border: 0;
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  background: none;
  padding: .3em .45em .5em .45em;
  text-transform: uppercase;
  font-weight: 700;
  position: absolute;
  top: 37.5em;
  left: 5%;
  display: none;
  line-height: 0;
  z-index: 1;
}

.js .full-screen * {
  vertical-align: middle;
}

@media (min-width: 68.75em) {
  .js .full-screen {
    display: inline-block;
  }
}

.js .full-screen .full-screen-icon {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  width: 1.25em;
  height: 1.25em;
  display: inline-block;
  margin-right: 0.5em;
  margin-bottom: -.05em;
}

.js .full-screen:hover {
  color: #f3ad00;
}

.js .full-screen:hover .full-screen-icon {
  fill: #f3ad00;
}

.js .slides-pagination {
  margin: 0;
  position: absolute;
  top: 27.75em;
  right: 5%;
  font-weight: 700;
  z-index: 1;
}

@media (min-width: 68.75em) {
  .js .slides-pagination {
    top: 37.75em;
  }
}

.js .slides-pagination .count {
  color: #999999;
  float: left;
  margin: -.05em 1em 0 0;
}

.js .slides-pagination button {
  display: inline-block;
}

.js .slides-pagination button:first-of-type {
  margin-right: .75em;
}

.js .plugin-container .video-gallery {
  max-width: 44em;
  margin: 0 auto;
}

.js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
  top: .5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
    top: 23.75em;
  }
}

@media (min-width: 81.25em) {
  .js .plugin-container .video-gallery .slides-pagination, .js .plugin-container .video-gallery .full-screen {
    top: 25.75em;
  }
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .full-screen {
    left: calc(5% - .45em);
  }
}

.js .plugin-container .video-gallery .caption {
  padding: 0;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .caption {
    margin-top: 3.75em;
  }
}

.js .plugin-container .video-gallery .cove-container {
  margin-top: 2.25em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .cove-container {
    margin-top: 0;
  }
}

.js .plugin-container .video-gallery.viewing-full {
  max-width: 100%;
}

.js .plugin-container .video-gallery.viewing-full .slides-pagination {
  right: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .full-screen {
  left: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .Wallop-item--current.Wallop-item {
  height: 100vh;
}

.js .plugin-container .video-gallery.viewing-full .cove-wrapper {
  width: 40em;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .video-gallery.viewing-full .cove-container {
  margin: 0;
}

.js .plugin-container .video-gallery.viewing-full .caption {
  max-width: 100%;
}

/**
 * wallop--slide.css
 *
 * @fileoverview Slide animation for wallop
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
/* the 10ms animation-delay fixed some weird rendering issues with iPhone */
.Wallop--slide .Wallop-item--showPrevious {
  -webkit-animation: slideFromLeft 350ms 10ms linear both;
  -moz-animation: slideFromLeft 350ms 10ms linear both;
  -ms-animation: slideFromLeft 350ms 10ms linear both;
  animation: slideFromLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--showNext {
  -webkit-animation: slideFromRight 350ms 10ms linear both;
  -moz-animation: slideFromRight 350ms 10ms linear both;
  -ms-animation: slideFromRight 350ms 10ms linear both;
  animation: slideFromRight 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hidePrevious,
.Wallop--slide .Wallop-item--hideNext {
  visibility: visible;
}

.Wallop--slide .Wallop-item--hidePrevious {
  -webkit-animation: slideToLeft 350ms 10ms linear both;
  -moz-animation: slideToLeft 350ms 10ms linear both;
  -ms-animation: slideToLeft 350ms 10ms linear both;
  animation: slideToLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hideNext {
  -webkit-animation: slideToRight 350ms 10ms linear both;
  -moz-animation: slideToRight 350ms 10ms linear both;
  -ms-animation: slideToRight 350ms 10ms linear both;
  animation: slideToRight 350ms 10ms linear both;
}

@-webkit-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-webkit-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.accordion-toggle {
  display: none;
}

.js .accordion-toggle {
  border: none;
  background: none;
  display: block;
  width: 100%;
  text-align: left;
  text-transform: uppercase;
  color: #bb0b0e;
  font-size: 1.25em;
  font-weight: 700;
  position: relative;
  margin-bottom: 1.5em;
  padding-bottom: 0.5em;
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle * {
  vertical-align: middle;
}

.js .accordion-toggle:hover {
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle svg {
  display: inline-block;
  margin-top: -.15em;
  height: .75em;
  width: .75em;
  fill: #bb0b0e;
}

.js .accordion-toggle .vertical {
  -webkit-transition: transform 0.25s ease-in-out;
  -ms-transition: transform 0.25s ease-in-out;
  transition: transform 0.25s ease-in-out;
  -ms-transform-origin: center;
  transform-origin: center;
}

.js .accordion-toggle.open .vertical {
  -ms-transform: scaleY(0);
  transform: scaleY(0);
}

.js .accordion-content {
  display: none;
}

.js .accordion-content.open {
  display: block;
}

.filters {
  background: #d0dbed;
  padding: 1.5em;
  margin-bottom: 1.5em;
  position: relative;
  /* CAUTION: IE hackery ahead */
}

.filters:after {
  display: table;
  clear: both;
  content: '';
}

.filters:before {
  display: table;
  clear: both;
  content: '';
}

.filters fieldset {
  padding: 0;
  margin: 0;
  margin-bottom: 1.5em;
  border: none;
}

.filters fieldset input[type='radio'] {
  position: absolute;
  left: -9999px;
}

.filters fieldset input[type='radio']:checked + label {
  background-color: #4872b4;
  color: white;
  border: 0.125em solid #4872b4;
}

.filters fieldset input[type='radio']:focus + label {
  border: 0.125em solid #f3ad00;
}

.filters fieldset label {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  background: white;
  padding: .2em 1.5em;
  font-weight: 700;
  color: #4872b4;
  display: inline-block;
  border: .125em solid white;
}

.filters fieldset label:first-of-type {
  border-radius: 1.25em 0 0 1.25em;
  padding-right: 1.15em;
}

.filters fieldset label:last-of-type {
  border-radius: 0 1.25em 1.25em 0;
  padding-left: 1.15em;
}

@media (min-width: 81.25em) {
  .filters fieldset label {
    width: 12.8125em;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .filters fieldset {
    display: inline-block;
    margin-bottom: 0;
    margin-right: 0.75em;
  }
}

@media only screen and (max-width: 23.75em) {
  .filters fieldset {
    font-size: 3.85vw;
  }
}

.filters .label {
  display: inline-block;
  margin-bottom: 0.75em;
  font-weight: 700;
  color: #434343;
}

@media (min-width: 68.75em) {
  .filters .label {
    margin-bottom: 0;
    margin-right: 0.375em;
  }
}

@media (min-width: 81.25em) {
  .filters .label {
    margin-right: 0.75em;
  }
}

.filters .styled-select {
  background: white;
  position: relative;
  display: inline-block;
  width: 100%;
  margin-bottom: 0.75em;
  border: .125em solid white;
}

.filters .styled-select.focused {
  border: 0.125em solid #f3ad00;
}

.filters .styled-select.focused:after {
  border-color: #f3ad00 #f3ad00 #f3ad00 #4872b4;
}

.filters .styled-select:after {
  position: absolute;
  top: -.125em;
  right: -.125em;
  content: '';
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwIDQwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzQ4NzJCNDt9LnN0MXtmaWxsOiNGRkZGRkY7fTwvc3R5bGU+PHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTEyLjMsMTdsNy43LDcuN2w3LjctNy43bC0xLjctMS44bC01LjksNmwtNS45LTZMMTIuMywxN3oiLz48L3N2Zz4=);
  background-repeat: no-repeat;
  background-position: center;
  background-color: #4872b4;
  height: calc(100% + .25em);
  width: 2.49em;
  pointer-events: none;
  border: 0.125em solid #4872b4;
  border-left: none;
}

.filters .styled-select:before {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  right: 0;
  content: '';
  display: inline-block;
  background-color: white;
  height: 100%;
  width: 5.25em \9;
}

@media (min-width: 68.75em) {
  .filters .styled-select {
    width: inherit;
    margin: 0;
    margin-right: 0.75em;
  }
}

@media (min-width: 81.25em) {
  .filters .styled-select {
    margin-right: 1.5em;
  }
}

.filters select {
  padding: .2em .75em .19em .75em;
  display: inline-block;
  width: 100%;
  font-weight: 700;
  color: #4872b4;
  border: none;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
  background: none;
  padding-right: 4em;
  background-image: none;
  -webkit-appearance: none;
}

.filters select::-ms-expand {
  display: none;
  /* remove default arrow on ie10 and ie11 */
}

.filters .sorting {
  display: inline-block;
  width: 100%;
}

.filters .sorting .styled-select {
  margin-right: 0;
}

@media (min-width: 68.75em) {
  .filters .sorting {
    width: inherit;
    float: right;
  }
}

.filters .submit {
  clear: both;
  margin-top: 1.5em;
}

.filters .submit input[type='submit'] {
  padding: .25em .5em;
}

@media (min-width: 68.75em) {
  .filters form * {
    vertical-align: middle;
  }
}

@media (min-width: 81.25em) {
  .filters {
    font-size: 1.0625em;
  }
}

@media (min-width: 95.625em) {
  .filters {
    font-size: 1.125em;
  }
}

.filter-target.loading {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
  position: relative;
  opacity: 0;
}

.filter-target.loading:before {
  content: 'Loading...';
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center;
  top: 0;
  left: 0;
  background-color: white;
  color: #434343;
  font-weight: 700;
  text-align: center;
  font-size: 1.25em;
  padding: 1.5em;
  z-index: 9;
  opacity: 1;
}

.filter-target.loaded ul {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .filters select:focus {
  outline: none;
}

.js .filters .submit {
  display: none;
}

.related-films {
  margin: 3em 0;
}

.related-films img {
  width: 100%;
}

.related-films ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.related-films ul:after {
  display: table;
  clear: both;
  content: '';
}

.related-films ul:before {
  display: table;
  clear: both;
  content: '';
}

.related-films ul li {
  list-style: none;
}

.related-films ul dd {
  margin: 0;
}

.related-films ul li {
  width: 44.44444%;
  float: left;
  margin-bottom: 11.11111%;
}

.related-films ul li:nth-child(2n + 1) {
  margin-left: 0;
  margin-right: -100%;
  clear: both;
  margin-left: 0;
}

.related-films ul li:nth-child(2n + 2) {
  margin-left: 55.55556%;
  margin-right: -100%;
  clear: none;
}

@media (min-width: 40.625em) {
  .related-films ul li {
    width: 29.73684%;
    float: left;
    margin-bottom: 3em;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 35%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 70%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .related-films ul li {
    width: 31.61538%;
    float: left;
    margin-bottom: 2.5641%;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .related-films ul li {
    width: 18.64407%;
    float: left;
  }
  .related-films ul li:nth-child(5n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(5n + 2) {
    margin-left: 20.33898%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 3) {
    margin-left: 40.67797%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 4) {
    margin-left: 61.01695%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 5) {
    margin-left: 81.35593%;
    margin-right: -100%;
    clear: none;
  }
}

.email-signup-form input, .email-signup-form button {
  font-family: 'Roboto Slab', serif;
  padding: 0.75em 1.5em;
}

.email-signup-form .email-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
}

.email-signup-form .email-field::placeholder {
  text-transform: uppercase;
}

.email-signup-form .zip-code-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
  text-transform: uppercase;
}

.email-signup-form .note {
  display: block;
  width: 100%;
  text-align: left;
  margin-bottom: 0.75em;
  font-size: .85em;
  margin-top: 0.75em;
}

.email-signup-form button[type='submit'] {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #243757;
  border: 0;
  padding-right: 3em;
  position: relative;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  text-transform: uppercase;
  width: 9em;
  z-index: 2;
}

.email-signup-form button[type='submit']:hover, .email-signup-form button[type='submit']:focus, .email-signup-form button[type='submit']:active {
  box-shadow: none;
  border: none;
}

.email-signup-form button[type='submit'] * {
  vertical-align: middle;
}

.email-signup-form button[type='submit'] svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.email-signup-form button[type='submit']:hover {
  background: #1d2c45;
}

.email-signup-form button[type='submit']:before {
  content: '';
  display: inline-block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  box-shadow: 0px 0px 0 #243757,1px 1px 0 #243757,2px 2px 0 #243757,3px 3px 0 #243757,4px 4px 0 #243757,5px 5px 0 #243757,6px 6px 0 #243757,7px 7px 0 #243757,8px 8px 0 #243757,9px 9px 0 #243757,10px 10px 0 #243757,11px 11px 0 #243757,12px 12px 0 #243757,13px 13px 0 #243757,14px 14px 0 #243757,15px 15px 0 #243757,16px 16px 0 #243757,17px 17px 0 #243757,18px 18px 0 #243757,19px 19px 0 #243757,20px 20px 0 #243757,21px 21px 0 #243757,22px 22px 0 #243757,23px 23px 0 #243757,24px 24px 0 #243757,25px 25px 0 #243757,26px 26px 0 #243757,27px 27px 0 #243757,28px 28px 0 #243757,29px 29px 0 #243757,30px 30px 0 #243757,31px 31px 0 #243757,32px 32px 0 #243757,33px 33px 0 #243757,34px 34px 0 #243757,35px 35px 0 #243757,36px 36px 0 #243757,37px 37px 0 #243757,38px 38px 0 #243757,39px 39px 0 #243757,40px 40px 0 #243757,41px 41px 0 #243757,42px 42px 0 #243757,43px 43px 0 #243757,44px 44px 0 #243757,45px 45px 0 #243757,46px 46px 0 #243757,47px 47px 0 #243757,48px 48px 0 #243757,49px 49px 0 #243757,50px 50px 0 #243757,51px 51px 0 #243757,52px 52px 0 #243757,53px 53px 0 #243757,54px 54px 0 #243757,55px 55px 0 #243757,56px 56px 0 #243757,57px 57px 0 #243757,58px 58px 0 #243757,59px 59px 0 #243757,60px 60px 0 #243757,61px 61px 0 #243757,62px 62px 0 #243757,63px 63px 0 #243757,64px 64px 0 #243757,65px 65px 0 #243757,66px 66px 0 #243757,67px 67px 0 #243757,68px 68px 0 #243757,69px 69px 0 #243757,70px 70px 0 #243757,71px 71px 0 #243757,72px 72px 0 #243757,73px 73px 0 #243757,74px 74px 0 #243757,75px 75px 0 #243757,76px 76px 0 #243757,77px 77px 0 #243757,78px 78px 0 #243757,79px 79px 0 #243757,80px 80px 0 #243757,81px 81px 0 #243757,82px 82px 0 #243757,83px 83px 0 #243757,84px 84px 0 #243757,85px 85px 0 #243757,86px 86px 0 #243757,87px 87px 0 #243757,88px 88px 0 #243757,89px 89px 0 #243757,90px 90px 0 #243757,91px 91px 0 #243757,92px 92px 0 #243757,93px 93px 0 #243757,94px 94px 0 #243757,95px 95px 0 #243757,96px 96px 0 #243757,97px 97px 0 #243757,98px 98px 0 #243757,99px 99px 0 #243757,100px 100px 0 #243757,101px 101px 0 #243757,102px 102px 0 #243757,103px 103px 0 #243757,104px 104px 0 #243757,105px 105px 0 #243757,106px 106px 0 #243757,107px 107px 0 #243757,108px 108px 0 #243757,109px 109px 0 #243757,110px 110px 0 #243757,111px 111px 0 #243757,112px 112px 0 #243757,113px 113px 0 #243757,114px 114px 0 #243757,115px 115px 0 #243757,116px 116px 0 #243757,117px 117px 0 #243757,118px 118px 0 #243757,119px 119px 0 #243757,120px 120px 0 #243757,121px 121px 0 #243757,122px 122px 0 #243757,123px 123px 0 #243757,124px 124px 0 #243757,125px 125px 0 #243757,126px 126px 0 #243757,127px 127px 0 #243757,128px 128px 0 #243757,129px 129px 0 #243757,130px 130px 0 #243757,131px 131px 0 #243757,132px 132px 0 #243757,133px 133px 0 #243757,134px 134px 0 #243757,135px 135px 0 #243757,136px 136px 0 #243757,137px 137px 0 #243757,138px 138px 0 #243757,139px 139px 0 #243757,140px 140px 0 #243757,141px 141px 0 #243757,142px 142px 0 #243757,143px 143px 0 #243757,144px 144px 0 #243757,145px 145px 0 #243757,146px 146px 0 #243757,147px 147px 0 #243757,148px 148px 0 #243757,149px 149px 0 #243757,150px 150px 0 #243757,151px 151px 0 #243757,152px 152px 0 #243757,153px 153px 0 #243757,154px 154px 0 #243757,155px 155px 0 #243757,156px 156px 0 #243757,157px 157px 0 #243757,158px 158px 0 #243757,159px 159px 0 #243757,160px 160px 0 #243757,161px 161px 0 #243757,162px 162px 0 #243757,163px 163px 0 #243757,164px 164px 0 #243757,165px 165px 0 #243757,166px 166px 0 #243757,167px 167px 0 #243757,168px 168px 0 #243757,169px 169px 0 #243757,170px 170px 0 #243757,171px 171px 0 #243757,172px 172px 0 #243757,173px 173px 0 #243757,174px 174px 0 #243757,175px 175px 0 #243757,176px 176px 0 #243757,177px 177px 0 #243757,178px 178px 0 #243757,179px 179px 0 #243757,180px 180px 0 #243757,181px 181px 0 #243757,182px 182px 0 #243757,183px 183px 0 #243757,184px 184px 0 #243757,185px 185px 0 #243757,186px 186px 0 #243757,187px 187px 0 #243757,188px 188px 0 #243757,189px 189px 0 #243757,190px 190px 0 #243757,191px 191px 0 #243757,192px 192px 0 #243757,193px 193px 0 #243757,194px 194px 0 #243757,195px 195px 0 #243757,196px 196px 0 #243757,197px 197px 0 #243757,198px 198px 0 #243757,200px 200px 0 rgba(0, 0, 0, 0);
  opacity: .35;
}

.homepage-hero-item {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}

.homepage-hero-item:empty {
  display: none;
}

.homepage-hero-item img {
  display: block;
  width: 100%;
}

.homepage-hero-item img.blackAndWhite {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
}

.homepage-hero-item .title {
  padding: 0.75em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.homepage-hero-item .title .zeta {
  color: white;
  display: block;
  margin-bottom: 1.5em;
}

.homepage-hero-item .title.right {
  margin-left: 0 !important;
}

.homepage-hero-item .title.left {
  margin-right: 0 !important;
}

.homepage-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
}

.homepage-hero-item .title .alpha:before {
  display: none;
}

.homepage-hero-item .watch {
  text-decoration: none;
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  padding-right: 3em;
  position: relative;
}

.homepage-hero-item .watch:hover {
  text-decoration: none;
}

.homepage-hero-item .watch:active {
  text-decoration: none;
}

.homepage-hero-item .watch:visited {
  text-decoration: none;
}

.homepage-hero-item .watch:focus {
  text-decoration: none;
}

.homepage-hero-item .watch * {
  vertical-align: middle;
}

.homepage-hero-item .watch svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.homepage-hero-item .watch.zeta {
  display: inline-block;
  font-size: 1em;
}

.homepage-hero-item .watch:hover {
  background: rgba(255, 255, 255, 0.5);
}

@media (min-width: 68.75em) {
  .homepage-hero-item {
    position: relative;
  }
  .homepage-hero-item .title {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
    position: absolute;
    left: 0;
    bottom: 15%;
    padding: 1.5em 3em;
    background: none;
  }
  .homepage-hero-item .title.left {
    left: 0;
    margin-right: 0;
  }
  .homepage-hero-item .title.right {
    right: 0;
    margin-right: 0;
    left: inherit;
  }
  .homepage-hero-item .title .alpha {
    font-size: 3em;
  }
  .homepage-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .homepage-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .homepage-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .homepage-hero-item .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.pagination {
  margin: 3em 0;
  text-align: center;
}

.pagination .load-more {
  display: none;
}

@media (min-width: 81.25em) {
  .pagination {
    margin: 4.5em 0;
  }
  .pagination .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.js .pagination .load-more {
  display: inline-block;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #bb0b0e;
  border: 0;
  -webkit-transition: background 0.35s ease-in-out;
  -ms-transition: background 0.35s ease-in-out;
  transition: background 0.35s ease-in-out;
}

.js .pagination .load-more * {
  vertical-align: middle;
}

.js .pagination .load-more:hover {
  background: #8c0007;
}

.js .pagination .page-numbers {
  display: none;
}

.no-results {
  font-weight: 700;
  text-align: center;
  font-weight: 1.25em;
  padding: 1.5em;
  color: #434343;
}

.no-results.error {
  color: #bb0b0e;
}

.no-results.error b {
  display: block;
}

.appended-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.film-listings ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-listings ul li {
  list-style: none;
}

.film-listings ul dd {
  margin: 0;
}

.film-listings ul li {
  margin-bottom: 3em;
}

.film-listings ul li:after {
  display: table;
  clear: both;
  content: '';
}

.film-listings ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .film-listings ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .film-listings .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .film-listings .image {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .film-listings .image {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%;
  }
}

.film-listings .description h3 {
  margin-bottom: 0;
}

.film-listings .description .zeta {
  display: block;
  margin-top: 0.375em;
  margin-bottom: 0.75em;
}

.film-listings .description p {
  margin-bottom: 0.75em;
}

.film-listings .description .parts {
  color: #777777;
  font-weight: 700;
}

.film-listings .description .parts a:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
}

@media (min-width: 40.625em) {
  .film-listings .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .film-listings .description {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .film-listings .description {
    width: 49.15254%;
    float: right;
    margin-right: 0;
  }
  .film-listings .description p {
    margin-bottom: 1.5em;
  }
}

.film-detail-hero-item {
  margin: 0;
  margin-top: 3em;
}

.film-detail-hero-item img {
  display: block;
  width: 100%;
}

.film-detail-hero-item .title {
  padding: 0.75em 1.5em 1em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.film-detail-hero-item .title.right {
  margin-left: 0 !important;
}

.film-detail-hero-item .title.left {
  margin-right: 0 !important;
}

.film-detail-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
  display: block;
  padding-top: .25em;
}

.film-detail-hero-item .title .alpha:before {
  display: none;
}

.film-detail-hero-item .title .zeta {
  display: inline-block;
  color: white;
  margin-bottom: .5em;
}

.film-detail-hero-item .title .underline {
  display: inline-block;
  font-size: 4vw;
  font-weight: 700;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .title .underline {
    font-size: 1.5em;
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title .zeta {
    margin-bottom: 1.5em;
  }
  .film-detail-hero-item .title .underline {
    margin-top: .5em;
  }
}

.film-detail-hero-item .overlay {
  font-size: 3vw;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .overlay {
    font-size: inherit;
  }
}

.film-detail-hero-item .watch-link {
  text-decoration: none;
  display: block;
  position: relative;
  font-size: 3vw;
}

.film-detail-hero-item .watch-link:hover {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:active {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:visited {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:focus {
  text-decoration: none;
}

.film-detail-hero-item .watch-link .alpha {
  -webkit-transition: color 0.35s ease-in-out;
  -ms-transition: color 0.35s ease-in-out;
  transition: color 0.35s ease-in-out;
}

.film-detail-hero-item .watch-link .alpha:after {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: none;
}

.film-detail-hero-item .watch-link .alpha .title-copy {
  float: left;
  width: calc(100% - 2em);
  padding-top: .125em;
}

.film-detail-hero-item .watch-link .alpha .title-copy:after {
  -webkit-transition: all 0.3s ease-in-out;
  -ms-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  background: white;
  height: 1px;
  width: 100%;
  visibility: hidden;
  -ms-transform: scaleX(0);
  transform: scaleX(0);
}

.film-detail-hero-item .watch-link .alpha .play-icon {
  max-height: 1.25em;
  max-width: 1.25em;
  display: inline-block;
  float: left;
  margin-right: .5em;
}

.film-detail-hero-item .watch-link .alpha .play-icon path {
  -webkit-transition: fill 0.35s ease-in-out;
  -ms-transition: fill 0.35s ease-in-out;
  transition: fill 0.35s ease-in-out;
  fill: white;
}

.film-detail-hero-item .watch-link:hover .title-copy {
  position: relative;
}

.film-detail-hero-item .watch-link:hover .title-copy:after {
  visibility: visible;
  -ms-transform: scaleX(1);
  transform: scaleX(1);
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .watch-link {
    font-size: inherit;
  }
}

@media (min-width: 68.75em) {
  .film-detail-hero-item {
    position: relative;
  }
  .film-detail-hero-item .title {
    position: absolute;
    bottom: 15%;
    padding: 1.5em 1.875em;
    background: none;
  }
  .film-detail-hero-item .title.left {
    width: 55.12821%;
    float: left;
    margin-right: 2.5641%;
    left: 0;
    padding-right: .25em;
  }
  .film-detail-hero-item .title.right {
    width: 55.12821%;
    float: right;
    margin-right: 0;
    right: 0;
    padding-right: .25em;
  }
  .film-detail-hero-item .title .alpha {
    font-size: 3em;
  }
  .film-detail-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .film-detail-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .film-detail-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title.left {
    width: 47.0339%;
    float: left;
    margin-right: 1.69492%;
    left: 0;
  }
  .film-detail-hero-item .title.right {
    width: 47.0339%;
    float: right;
    margin-right: 0;
    right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-detail-hero-item .title.left {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
  .film-detail-hero-item .title.right {
    width: 40.67797%;
    float: right;
    margin-right: 0;
  }
}

.film-detail-hero-item .watch-link + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .title-copy + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .zeta + .watch-link .alpha {
  padding-top: 0;
}

.film-sub-nav {
  background: #174189;
  color: white;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  margin-bottom: 1.5em;
}

.film-sub-nav:after {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav:before {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav a {
  text-decoration: none;
  display: inline-block;
  color: white;
  text-transform: uppercase;
  font-size: 1.125em;
}

.film-sub-nav a:hover {
  text-decoration: none;
}

.film-sub-nav a:active {
  text-decoration: none;
}

.film-sub-nav a:visited {
  text-decoration: none;
}

.film-sub-nav a:focus {
  text-decoration: none;
}

.film-sub-nav a:hover {
  color: white;
  text-decoration: none;
}

.film-sub-nav ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-sub-nav ul li {
  list-style: none;
}

.film-sub-nav ul dd {
  margin: 0;
}

@media (min-width: 68.75em) {
  .film-sub-nav {
    margin-bottom: 3em;
  }
}

.film-parts, .tab-mobile-toggle {
  display: none;
}

.film-parts {
  position: relative;
}

@media (min-width: 81.25em) {
  .film-parts {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-parts {
    width: 23.72881%;
    float: right;
    margin-right: 0;
  }
}

.info-tabs .tab-link {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  padding: .5625em 1em;
  width: 100%;
}

.info-tabs .tab-link:hover {
  background: #103066;
}

.info-tabs .tab-link.active {
  background: #103066;
  cursor: default;
}

@media (min-width: 81.25em) {
  .info-tabs .tab-list {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .info-tabs .tab-list li {
    display: inline-block;
  }
  .info-tabs .tab-list li a {
    padding: 1.3em 1.5em;
  }
}

@media (min-width: 81.25em) {
  .info-tabs {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 95.625em) {
  .info-tabs {
    width: 74.57627%;
    float: left;
    margin-right: 1.69492%;
  }
}

.tab-panel .tab-panel-title {
  margin-bottom: .25em;
}

.tab-panel .part-content {
  margin-top: 3em;
}

.tab-panel .bio figure {
  text-align: center;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

.tab-panel .bio figure span {
  height: 75vw;
  width: 75vw;
  display: inline-block;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.tab-panel .bio figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  object-fit: cover;
  min-height: 100%;
  min-width: 100%;
}

@media (min-width: 40.625em) {
  .tab-panel .bio figure span {
    width: 10em;
    height: 10em;
  }
}

@media (min-width: 68.75em) {
  .tab-panel .bio {
    display: grid;
    grid-template-columns: 2.5fr 4fr;
  }
  .tab-panel .bio figure, .tab-panel .bio .bio-content {
    display: inline-block;
  }
  .tab-panel .bio figure {
    width: 30%;
    vertical-align: top;
  }
  .tab-panel .bio figure span {
    width: 12.5em;
    height: 12.5em;
  }
  .tab-panel .bio .bio-content {
    width: 65%;
  }
  @supports (display: grid) {
    .tab-panel .bio figure, .tab-panel .bio .bio-content {
      width: auto;
      vertical-align: inherit;
    }
    .tab-panel .bio figure {
      align-content: center;
    }
  }
}

@media (min-width: 81.25em) {
  .tab-panel .bio figure span {
    width: 15em;
    height: 15em;
  }
}

@media (min-width: 95.625em) {
  .tab-panel .bio figure span {
    width: 20em;
    height: 20em;
  }
}

.tab-panel .pdf-links strong {
  display: inline-block;
  margin-right: .5em;
}

.tab-panel .pdf-links .part-download {
  display: inline-block;
}

.tab-panel .pdf-links .part-download:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
  vertical-align: text-top;
}

.tab-panel .single-download {
  display: inline-block;
}

@media (min-width: 40.625em) {
  .tab-panel {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
    float: none;
  }
}

@media (min-width: 68.75em) {
  .tab-panel {
    width: 74.35897%;
    float: left;
    margin-right: 2.5641%;
    float: none;
  }
}

@media (min-width: 81.25em) {
  .tab-panel {
    max-width: 65.25em;
  }
}

@media (min-width: 81.25em) {
  .related-feature-list .filters .label {
    margin-left: -4.1875em;
  }
}

.related-feature-list .filters form {
  text-align: center;
}

.related-feature-list .filters form fieldset label {
  width: 100%;
}

.related-feature-list .filters form fieldset label:first-of-type {
  border-radius: 0;
}

.related-feature-list .filters form fieldset label:last-of-type {
  border-radius: 0;
}

@media only screen and (min-width: 45.3125em) {
  .related-feature-list .filters form fieldset label {
    width: 7.5em;
  }
  .related-feature-list .filters form fieldset label:first-of-type {
    border-radius: 1.25em 0 0 1.25em;
    padding-right: 1.15em;
  }
  .related-feature-list .filters form fieldset label:last-of-type {
    border-radius: 0 1.25em 1.25em 0;
    padding-left: 1.15em;
  }
}

@media (min-width: 68.75em) {
  .related-feature-list .filters form fieldset label {
    width: 10em;
  }
}

@media only screen and (max-width: 23.75em) {
  .related-feature-list .filters form fieldset label {
    font-size: 4.85vw;
  }
}

.js .film-parts {
  display: block;
}

.js .part-selection {
  font-size: 1.125em;
  text-transform: uppercase;
  display: block;
  margin: .25em .3em;
}

.js .part-selection:after {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection:before {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection .instruction {
  display: none;
}

.js .part-selection button {
  height: 3.8175em;
  width: 100%;
  position: relative;
  z-index: 2;
  background: white;
  text-align: left;
  border: 0.0625em solid #999999;
  border-bottom: none;
  padding: .25em 1em;
  text-transform: uppercase;
  color: #434343;
  position: relative;
}

.js .part-selection button .part {
  width: calc(100% - 1em);
  font-weight: 700;
}

.js .part-selection button .part span {
  display: block;
  font-size: .777em;
  color: #4872b4;
}

.js .part-selection button svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: #999999;
  transform-origin: 50% 22.5%;
}

.js .part-selection button.close-state svg {
  transform: rotate(180deg);
}

.js .film-parts-large {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  padding: .25em .35em;
  width: 100%;
  position: absolute;
  right: 0;
  top: 4.05em;
  position: absolute;
  z-index: 1;
  overflow: hidden;
  visibility: hidden;
  max-height: 0;
}

.js .film-parts-large.open {
  max-height: 20em;
  visibility: visible;
}

.js .film-parts-large a {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  background: white;
  padding: .25em 1em;
  width: 100%;
  color: #434343;
  border: 0.0625em solid #999999;
}

.js .film-parts-large a span {
  display: block;
  font-size: .777em;
  color: #4872b4;
}

.js .film-parts-large a:hover {
  background: #e6e6e6;
}

.js .film-parts-large a:hover span {
  color: #4872b4;
}

.js .film-parts-large a.active {
  background: #e6e6e6;
  cursor: default;
}

.js .film-parts-large a.active span {
  color: #4872b4;
}

.js .film-parts-large li:not(:last-of-type) a {
  border-bottom: none;
}

@media (min-width: 68.75em) {
  .js .film-parts-large {
    top: 4.35em;
    padding: .25em .35em;
  }
}

.js .tab-mobile-toggle {
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  text-align: left;
  display: inline-block;
  position: relative;
  height: 3.8175em;
  width: calc(100% - .65em);
  margin: .3em;
  font-size: 1.125em;
  text-transform: uppercase;
}

.js .tab-mobile-toggle * {
  vertical-align: middle;
}

.js .tab-mobile-toggle.mutiple-episodes {
  margin: 0 .3em .3em .3em;
}

.js .tab-mobile-toggle span {
  display: inline-block;
  margin-right: 1.5em;
  padding-bottom: .15em;
}

.js .tab-mobile-toggle:hover, .js .tab-mobile-toggle:focus, .js .tab-mobile-toggle:active {
  border: .0625em solid .0625em;
}

.js .tab-mobile-toggle svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: white;
  transform-origin: 50% 22.5%;
}

.js .tab-mobile-toggle.close-state svg {
  transform: rotate(180deg);
}

@media (min-width: 81.25em) {
  .js .tab-mobile-toggle {
    display: none;
  }
}

.js .info-tabs .tab-list.menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  width: 100%;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

.js .info-tabs .tab-list.menu.open {
  visibility: visible;
  max-height: 20em;
}

@media (min-width: 81.25em) {
  .js .info-tabs .tab-list.menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .tab-panel {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  margin-top: 1.5em;
  display: none;
}

.js .tab-panel.default {
  display: block;
}

.js .tab-panel.open {
  display: block;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@media (min-width: 81.25em) {
  .js .tab-panel {
    max-width: 65.25em;
  }
}

.film-shop-links {
  margin: 3.75em 0;
  clear: both;
}

.film-shop-links img {
  max-width: 6.25em;
}

.film-shop-links * {
  vertical-align: middle;
}

.film-shop-links a {
  display: inline-block;
}

.film-shop-links ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-shop-links ul li {
  list-style: none;
}

.film-shop-links ul dd {
  margin: 0;
}

.film-shop-links ul li {
  display: inline-block;
}

.film-shop-links ul li:not(:first-of-type) {
  margin-left: 1em;
}

.film-funders {
  margin-bottom: 3.75em;
  text-align: center;
}

.film-funders * {
  vertical-align: middle;
}

.film-funders a {
  display: inline-block;
}

.film-funders img {
  max-width: 10em;
}

.film-funders ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-funders ul li {
  list-style: none;
}

.film-funders ul dd {
  margin: 0;
}

.film-funders ul li {
  display: inline-block;
  margin-bottom: 1em;
}

.film-funders ul li:not(:first-of-type) {
  margin-left: 1em;
}

@media (min-width: 68.75em) {
  .film-funders {
    text-align: left;
  }
}

.film-title {
  margin-bottom: 0;
}

.film-title .passport-icon {
  max-width: 1.15em;
  max-height: 1.15em;
  padding-right: .25em;
}

.premiere-date {
  color: #4872b4;
}

.tagline {
  font-weight: 700;
  display: block;
  font-size: 1.25em;
  color: #999999;
  text-transform: uppercase;
}

.feature-listings:after {
  display: table;
  clear: both;
  content: '';
}

.feature-listings:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list:after {
  display: table;
  clear: both;
  content: '';
}

.feature-list:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .feature-list li {
    width: 31.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 2.5641%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-list li {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 1.69492%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
}

.features-paginated li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .features-paginated li {
    width: 31.53846%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 34.10256%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 68.20513%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .features-paginated li {
    width: 32.20339%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.feature .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature .overline .zeta {
  display: block;
}

.feature .overline + h4 {
  margin-top: -.65em;
}

.feature .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.25em;
}

.feature .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature .overline .social-sharing span {
  display: inline-block;
  margin-top: .015em;
}

.feature .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature .overline .social-sharing ul li {
  list-style: none;
}

.feature .overline .social-sharing ul dd {
  margin: 0;
}

.feature .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: .1em;
}

.feature .overline .social-sharing li:first-of-type {
  margin-left: .25em;
}

.feature .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: .25em;
  font-size: .95em;
}

.feature .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature .overline .social-sharing li button:hover, .feature .overline .social-sharing li button:focus, .feature .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature .overline .social-sharing li a, .feature .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: .1em;
}

.feature .overline .social-sharing li svg {
  overflow: visible;
}

.feature .overline .social-sharing li svg .color {
  fill: white;
}

.feature .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

@media only screen and (min-width: 57.8125em) {
  .feature .center.large-media img {
    max-width: inherit;
    width: 57.8125em;
    margin-left: -6.640625em;
  }
}

@media (min-width: 68.75em) {
  .feature .right.medium-media {
    max-width: inherit;
    margin-right: -5em;
  }
}

@media (min-width: 68.75em) {
  .feature .left.medium-media {
    max-width: inherit;
    margin-left: -5em;
  }
}

.js .feature .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: .65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature .overline .copy-url-container {
    width: 24em;
  }
  .js .feature .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

@media (min-width: 68.75em) {
  .js .feature .ad-block.desktop {
    padding: 0 0 1.5em 0;
    margin-top: -1.5em;
  }
}

.search-results ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.search-results ul li {
  list-style: none;
}

.search-results ul dd {
  margin: 0;
}

.search-results ul li {
  margin-bottom: 3em;
}

.search-results ul li:after {
  display: table;
  clear: both;
  content: '';
}

.search-results ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .search-results ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .search-results .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .search-results .image {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .image {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.search-results .description h3 {
  margin-bottom: 0;
}

.search-results .description p {
  margin-bottom: 0.75em;
}

@media (min-width: 40.625em) {
  .search-results .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .search-results .description {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .description {
    width: 53.38983%;
    float: left;
    margin-right: 1.69492%;
  }
  .search-results .description p {
    margin-bottom: 1.5em;
  }
}

.newsletter-dialog {
  display: none;
}

.js .newsletter-dialog {
  display: block;
}

.newsletter-dialog {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog:after {
  content: '';
  display: block;
  width: 100%;
  height: 100vh;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
  position: relative;
  z-index: 50;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog:after {
    margin-top: 12.5em;
  }
}

.newsletter-dialog.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog[aria-hidden='true'] {
  display: none;
}

.newsletter-dialog div[role='dialog'] {
  overflow-y: scroll;
  max-height: 80vh;
}

@media screen and (min-height: 37.5em) {
  .newsletter-dialog div[role='dialog'] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog div[role='document'] {
  max-width: 50em;
  margin: 1em auto 0 auto;
  width: 95%;
  position: relative;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog div[role='document'] {
    margin-top: 0;
    top: 12.5vh;
  }
}

.newsletter-dialog .gamma {
  color: white;
}

@media (min-width: 68.75em) {
  .newsletter-dialog .gamma {
    font-size: 2.25em;
  }
}

.newsletter-dialog .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  right: 0;
  top: -2.5em;
  display: inline-block;
  border-radius: 100%;
}

.newsletter-dialog .dimsiss:hover, .newsletter-dialog .dimsiss:focus, .newsletter-dialog .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: white;
  display: block;
}

.newsletter-dialog .dimsiss:hover svg {
  fill: #f3ad00;
}

.newsletter-dialog h1 {
  margin: 1.5em 0 .5em 0;
  text-transform: uppercase;
  line-height: 1;
}

@media (min-width: 68.75em) {
  .newsletter-dialog h1 {
    margin-top: 2em;
  }
}

.newsletter-dialog h1 .logo-type {
  max-width: 13em;
  max-height: .95em;
}

.newsletter-dialog h1 span {
  font-size: .75em;
}

@media (min-width: 68.75em) {
  .newsletter-dialog h1 span {
    font-size: 1.20em;
  }
}

.newsletter-dialog .email-signup-form {
  margin-top: 1.5em;
  padding-bottom: 1.5em;
}

.newsletter-dialog .email-signup-form button[type='submit'] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
}

.newsletter-dialog .email-signup-form button[type='submit']:before {
  content: none;
}

.newsletter-dialog .email-signup-form button[type='submit']:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog .email-signup-form button[type='submit'] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog .email-signup-form button[type='submit']:before {
    content: '';
  }
}

.newsletter-dialog .email-signup-form .note {
  display: block;
  font-size: 1em;
  text-align: center;
}

@media (min-width: 68.75em) {
  .newsletter-dialog .email-signup-form .note {
    font-size: 1.25em;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog .email-signup-form .email-field, .newsletter-dialog .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

#sticky-header {
  width: 100%;
  -webkit-transform: translate3d(0px, 0px, 0px);
  transform: translate3d(0px, 0px, 0px);
}

.sticky #sticky-header {
  top: 0;
  position: fixed;
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.site-header ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.site-header ul li {
  list-style: none;
}

.site-header ul dd {
  margin: 0;
}

.site-header .secondary {
  background: #333;
  text-align: center;
  color: white;
}

.site-header .secondary:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary * {
  vertical-align: middle;
}

.site-header .secondary .title {
  display: block;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-social {
  display: none;
}

.site-header .secondary .header-social .social-list {
  width: 70%;
  margin: 0 auto;
}

.site-header .secondary .header-social .social-list a {
  display: block;
}

.site-header .secondary .header-social .social-list a:hover svg .background {
  fill: black;
}

.site-header .secondary .header-social:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-social:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-social {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    display: block;
    margin-top: .75em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-social {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
    margin-top: 0;
    text-align: left;
  }
  .site-header .secondary .header-social .title {
    display: inline-block;
    margin-bottom: 0;
    font-size: .8125em;
  }
  .site-header .secondary .header-social .social-list {
    width: auto;
    display: inline-block;
  }
}

.site-header .secondary .header-sponsors {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-sponsors ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  line-height: 1;
}

.site-header .secondary .header-sponsors ul:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors ul:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors li {
  display: inline-block;
  margin: .25em .5em;
}

.site-header .secondary .header-sponsors a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.site-header .secondary .header-sponsors .title {
  margin-bottom: .25em;
}

.site-header .secondary .header-sponsors img {
  max-height: 3.125em;
  max-width: 7.375em;
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-sponsors {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-sponsors {
    width: 57.62712%;
    float: right;
    margin-right: 0;
    margin-top: 0;
    margin-bottom: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .site-header .secondary .header-sponsors .title {
    display: inline-block;
    font-size: .8125em;
    vertical-align: middle;
    margin-bottom: 0;
  }
  .site-header .secondary .header-sponsors .sponsor {
    display: inline-block;
  }
}

@media (min-width: 81.25em) {
  .site-header .secondary .header-sponsors img {
    max-height: 3.125em;
    max-width: 8.375em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .grid {
    margin-top: .5em;
    margin-bottom: .5em;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
}

.site-header .primary {
  background: #174189;
  position: relative;
  z-index: 10;
}

.site-header .primary .grid {
  position: relative;
}

.site-header .primary .header-logo {
  position: relative;
  margin: 0;
  line-height: 0;
  width: 72.22222%;
  float: left;
  margin-right: 11.11111%;
}

.site-header .primary .header-logo a {
  display: block;
  padding: .45em;
}

.site-header .primary .header-logo a svg {
  max-height: .5em;
}

.site-header .primary .header-logo a svg .type {
  fill: white;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo a svg {
    max-height: .75em;
  }
}

.site-header .primary .header-logo .logo-type {
  display: inline-block;
  max-width: 100%;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-logo {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
    padding-top: .2em;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-logo {
    padding-top: 0;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .site-header .primary .header-logo a {
    padding: .55em .45em .45em .45em;
  }
  .site-header .primary .header-logo a svg {
    max-height: 1em;
  }
}

.site-header .primary .main-nav-toggle {
  border: none;
  background: none;
  box-shadow: none;
  display: none;
  position: absolute;
  top: 0;
  right: 5%;
  width: 2.75em;
  height: 2.75em;
  overflow: hidden;
  padding: .5em;
  text-align: center;
}

.site-header .primary .main-nav-toggle:hover, .site-header .primary .main-nav-toggle:focus, .site-header .primary .main-nav-toggle:active {
  box-shadow: none;
  border: none;
}

.site-header .primary .main-nav-toggle svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: inline-block;
  width: 1.5em;
}

.site-header .primary .main-nav-toggle .one, .site-header .primary .main-nav-toggle .two, .site-header .primary .main-nav-toggle .three {
  -webkit-transition: all .35s linear;
  transition: all .35s linear;
  -webkit-transform: rotate(0deg) scale(1);
  transform: rotate(0deg) scale(1);
  -webkit-transform-origin: 0 50%;
  transform-origin: 0 50%;
  fill: white;
}

.site-header .primary .main-nav-toggle.close-state .one {
  -webkit-transform: rotateZ(-45deg) scale(0.95);
  transform: rotateZ(-45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

.site-header .primary .main-nav-toggle.close-state .two {
  -webkit-transform: translateY(-25em);
  transform: translateY(-25em);
}

.site-header .primary .main-nav-toggle.close-state .three {
  -webkit-transform: rotateZ(45deg) scale(0.95);
  transform: rotateZ(45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

@media (min-width: 40.625em) {
  .site-header .primary .main-nav-toggle {
    width: 3.3em;
    height: 3.3em;
  }
}

.site-header .primary .dropdown-menu {
  clear: both;
}

@media (min-width: 68.75em) {
  .site-header .primary .dropdown-menu {
    width: 74.35897%;
    float: right;
    margin-right: 0;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .dropdown-menu {
    width: 66.10169%;
    float: right;
    margin-right: 0;
  }
}

.site-header .primary .header-main-navigation {
  font-size: 1.125em;
  font-family: 'Josefin Sans', sans-serif;
  text-transform: uppercase;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation {
    width: 61.2069%;
    float: left;
    margin-right: 3.44828%;
    clear: none;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-main-navigation {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.site-header .primary .header-main-navigation ul li {
  border-bottom: 1px solid #777777;
}

.site-header .primary .header-main-navigation ul li a {
  text-decoration: none;
  display: block;
  padding: 1.1em 1em .9em 1em;
  color: white;
  position: relative;
}

.site-header .primary .header-main-navigation ul li a:hover {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:active {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:visited {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:focus {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:after {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  width: 100%;
  height: .3333em;
  content: '';
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
}

.site-header .primary .header-main-navigation ul li a:hover:after, .site-header .primary .header-main-navigation ul li a.active:after {
  background: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul li {
    text-align: center;
    display: inline-block;
    border-bottom: none;
    flex-grow: 1;
  }
}

.site-header .primary .search {
  position: relative;
  font-size: 1.125em;
  margin-bottom: 1.5em;
}

.site-header .primary .search .search-input {
  display: inline-block;
  height: 2.25em;
  padding: 0 0 0 1em;
  width: 100%;
  border: 1px solid #777777;
  padding-right: 2.5em;
}

.site-header .primary .search .search-button {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  top: .15em;
  right: .45em;
  display: inline-block;
  height: 2em;
  width: 2em;
  padding: .15em;
  background: white;
}

.site-header .primary .search .search-button:hover, .site-header .primary .search .search-button:focus, .site-header .primary .search .search-button:active {
  box-shadow: none;
  border: none;
}

@media (min-width: 68.75em) {
  .site-header .primary .search {
    width: 22.41379%;
    float: left;
    margin-right: 3.44828%;
    margin-top: .7em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .search {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

.site-header .shop {
  margin-bottom: 1.5em;
  display: block;
  padding: .5em .5em .5em 1em;
  border-bottom: 1px solid #777777;
}

.site-header .shop svg {
  height: 2.5em;
  width: 2.5em;
  fill: white;
}

.site-header .shop svg path {
  -webkit-transition: fill 0.25s ease-in-out;
  -ms-transition: fill 0.25s ease-in-out;
  transition: fill 0.25s ease-in-out;
}

.site-header .shop:hover svg path {
  fill: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .shop {
    width: 9.48276%;
    float: right;
    margin-right: 0;
    border: none;
    padding: 0;
    display: inline-block;
    text-align: center;
    margin-top: .75em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .shop {
    width: 10.25641%;
    float: right;
    margin-right: 0;
  }
}

.js .site-header .primary .main-nav-toggle {
  display: inline-block;
}

@media (min-width: 68.75em) {
  .js .site-header .primary .main-nav-toggle {
    display: none;
  }
}

.js .js-dropdown-menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

@media (min-width: 68.75em) {
  .js .js-dropdown-menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .js-dropdown-menu.open {
  visibility: visible;
  max-height: 35em;
}

.js .header-main-navigation.open + .header-search.open {
  margin-top: 1.5em;
}

.cms-ready .primary.fixed {
  position: relative;
}

.site-footer ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  margin-bottom: 1.5em;
}

.site-footer ul li {
  list-style: none;
}

.site-footer ul dd {
  margin: 0;
}

.site-footer .credit-heading {
  font-size: 1em;
  color: #4872b4;
}

.footer-links {
  padding: 0 0 0.75em 0;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
}

.footer-links:before {
  display: block;
  content: '';
  background-image: url("../images/bg-american-flag.jpg");
  background-repeat: no-repeat;
  background-position: center;
  padding-bottom: 6.5%;
  background-size: cover;
  margin-bottom: 4.5em;
}

.footer-links a {
  display: inline-block;
  color: white;
  text-transform: uppercase;
}

.footer-links a:hover {
  color: white;
}

.footer-links ul li {
  margin-bottom: 0.75em;
}

@media (min-width: 81.25em) {
  .footer-links ul li {
    margin-bottom: 1.5em;
  }
}

@media screen and (max-width: 95.625em) and (orientation: portrait) {
  .footer-links:before {
    padding-bottom: 15%;
  }
}

@media (min-width: 40.625em) {
  .footer-navigation {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    min-height: 15em;
  }
  .footer-navigation ul {
    -moz-column-count: 2;
    -webkit-column-count: 2;
    column-count: 2;
  }
  .footer-navigation ul:after {
    display: table;
    clear: both;
    content: '';
  }
  .footer-navigation ul:before {
    display: table;
    clear: both;
    content: '';
  }
}

@media (min-width: 68.75em) {
  .footer-navigation {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-navigation {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .footer-navigation ul {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
  }
}

.footer-production-by {
  margin-bottom: 1.5em;
}

.footer-production-by .wgbh {
  fill: white;
  width: 6em;
  max-height: 3em;
}

.footer-production-by ul {
  margin-top: 1.5em;
}

@media (min-width: 40.625em) {
  .footer-production-by {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-production-by {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-production-by {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-funding {
  color: white;
}

.footer-funding ul li {
  margin-bottom: 1.5em;
}

.footer-funding svg {
  width: 12em;
  max-height: 12em;
}

.footer-funding svg * {
  fill: white;
}

@media (min-width: 40.625em) {
  .footer-funding {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-funding {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-funding {
    width: 19.49153%;
    float: right;
    margin-right: 0;
  }
}

.footer-copyright {
  display: inline-block;
  margin-bottom: 1.5em;
}

.footer-copyright span {
  display: block;
}

@media (min-width: 40.625em) {
  .footer-copyright {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    clear: both;
    padding-top: 2.75vw;
    margin-bottom: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-copyright {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-copyright {
    padding-top: 2.925vw;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-logo-type {
  display: block;
  font-size: 4vw;
  line-height: 1.275;
}

.footer-logo-type svg {
  fill: #243757;
  max-height: 3.875em;
}

@media (min-width: 40.625em) {
  .footer-logo-type {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .footer-logo-type {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-logo-type {
    width: 66.10169%;
    float: right;
    margin-right: 0;
    font-size: 3.5vw;
  }
}

.connect-social {
  background-image: url("../images/bg-triangle-newsletter.png");
  background-size: 11.75em 11.125em;
  color: white;
  margin-bottom: 4.5em;
  overflow-x: hidden;
}

.connect-social h3 {
  color: white;
}

.connect-social .email-signup {
  text-align: center;
  padding: 1.5em 0;
  overflow: hidden;
}

.connect-social .email-signup h3 {
  margin-bottom: .769em;
}

.connect-social .email-signup .email-signup-form .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
}

@media (min-width: 40.625em) {
  .connect-social .email-signup {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    position: relative;
  }
  .connect-social .email-signup .email-signup-form {
    width: 80%;
    margin: 0 auto;
  }
}

@media (min-width: 68.75em) {
  .connect-social .email-signup {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .email-signup {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .connect-social .email-signup h3 {
    text-align: left;
    margin-bottom: 0;
  }
  .connect-social .email-signup .email-signup-form {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 100%;
    padding-right: 10%;
  }
  .connect-social .email-signup .email-signup-form .email-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    margin-right: 1%;
    margin-left: 0;
    width: 45%;
  }
  .connect-social .email-signup .email-signup-form .zip-code-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    width: 30%;
  }
  .connect-social .email-signup .email-signup-form button[type='submit'] {
    width: 24%;
    display: inline-block;
  }
  .connect-social .email-signup .email-signup-form .note {
    width: 75%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .email-signup .email-signup-form button[type='submit'] {
    width: 19%;
  }
}

.connect-social .footer-social-links {
  text-align: center;
  padding: 3em 0;
  background: #243757;
  width: 110%;
  margin-left: -5%;
}

.connect-social .footer-social-links .social-list {
  margin-bottom: 0;
  width: 70%;
  margin: 0 auto;
}

.connect-social .footer-social-links .social-list a {
  width: 3em;
  height: 3em;
}

.connect-social .footer-social-links .social-list a:hover svg .background {
  fill: #835d00;
}

.connect-social .footer-social-links .social-list svg {
  width: 100%;
  height: 100%;
}

.connect-social .footer-social-links .social-list svg .background {
  fill: #f3ad00;
}

.connect-social .footer-social-links .hashtag {
  display: block;
}

@media (min-width: 40.625em) {
  .connect-social .footer-social-links {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    position: relative;
    padding-left: 5.625%;
    margin-left: inherit;
  }
  .connect-social .footer-social-links:before {
    content: '';
    position: absolute;
    background: white;
    height: 100%;
    top: 0;
    right: 100%;
    width: calc(5.26316% * 2);
  }
  .connect-social .footer-social-links:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 11.25%;
    background: #243757;
    top: 0;
    left: 100%;
  }
  .connect-social .footer-social-links .social-list {
    width: 90%;
  }
}

@media (min-width: 68.75em) {
  .connect-social .footer-social-links {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
  .connect-social .footer-social-links .social-list {
    display: inline-block;
    width: auto;
  }
  .connect-social .footer-social-links:before {
    width: 5.26316%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .footer-social-links {
    width: 40.67797%;
    float: right;
    margin-right: 0;
    padding-left: 0;
  }
  .connect-social .footer-social-links:after {
    width: 50%;
  }
  .connect-social .footer-social-links:before {
    width: 4%;
    right: 100%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .footer-social-links:after {
    width: calc((100vw - 1400px)/2);
  }
}

@media (min-width: 40.625em) {
  .connect-social .grid {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.ad-block {
  max-height: 0;
  padding: 0;
  visibility: hidden;
  line-height: 0;
}

.js .ad-block {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  position: relative;
  text-align: center;
}

.js .ad-block.open.ad-side-interior:before, .js .ad-block.open.ad-side-interior:after {
  background: none;
}

.js .ad-block.open {
  padding: 1.5em 0 3em;
  max-height: 25em;
  visibility: visible;
  z-index: inherit;
  line-height: inherit;
}

.js .ad-block.open .ad {
  display: inline-block;
}

.js .ad-block.open:before, .js .ad-block.open:after {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.js .ad-block.open:before {
  background: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
  z-index: -2;
}

.js .ad-block.open:after {
  z-index: -1;
  background: rgba(227, 227, 227, 0.5);
}

.js .ad-block.open.footer-ad {
  padding-top: 2.25em;
  padding-bottom: 2.625em;
  margin-bottom: 4.5em;
}

.js .ad-block .ad {
  margin: 0 auto;
  position: relative;
  display: inline-block;
  display: none;
}

.js .ad-block .ad:after {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad:before {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad div {
  clear: both;
}

.js .ad-block .ad span, .js .ad-block .ad a {
  font-size: .75em;
  float: left;
}

.js .ad-block .ad a {
  float: right;
  color: #174189;
}

.js .ad-block .ad button {
  border: none;
  background: none;
  box-shadow: none;
  background: #777777;
  width: 1.5em;
  height: 1.5em;
  position: absolute;
  top: 1.25em;
  right: 0;
}

.js .ad-block .ad button:hover, .js .ad-block .ad button:focus, .js .ad-block .ad button:active {
  box-shadow: none;
  border: none;
}

.js .ad-block .ad button svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  width: 75%;
  height: 75%;
}

@media (min-width: 68.75em) {
  .js .ad-block .ad button {
    width: 2em;
    height: 2em;
  }
}

.shop-ad {
  background: white;
  text-align: center;
  padding-top: 4.5em;
  padding-bottom: 4.5em;
}

.shop-ad a {
  display: inline-block;
  position: relative;
}

.shop-ad a.mobile {
  background-image: url("../images/amex_shop_mobile.jpg");
  background-repeat: no-repeat;
  width: 20em;
  height: 6.25em;
}

.shop-ad a.desktop {
  background-image: url("../images/amex_shop_desktop.jpg");
  background-repeat: no-repeat;
  width: 75em;
  height: 9.375em;
}

.connect-social + .shop-ad {
  padding-top: 0;
}

@media (min-width: 68.75em) {
  .ad-interior-content {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .ad-interior-content {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 68.75em) {
  .ad-side-interior {
    margin-top: 1.5em;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .ad-side-interior {
    width: 32.20339%;
    float: right;
    margin-right: 0;
  }
}

.collection-detail-hero-item {
  margin-bottom: 3em;
}

.collection-detail-hero-item img {
  width: 100%;
}

:-webkit-full-screen-ancestor:not(iframe) .pbs-cleanslate, :-webkit-full-screen-ancestor:not(iframe) .site-header, :-webkit-full-screen-ancestor:not(iframe) .ad-block, :-webkit-full-screen-ancestor:not(iframe) .cms, :-webkit-full-screen-ancestor:not(iframe) .teaser-item, :-webkit-full-screen-ancestor:not(iframe) .site-footer,
:-webkit-full-screen-ancestor:not(iframe) .film-sub-nav, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonPrevious, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonNext, :-webkit-full-screen-ancestor:not(iframe) .accordion-toggle, :-webkit-full-screen-ancestor:not(iframe) .tab-panel, :-webkit-full-screen-ancestor:not(iframe) .full-screen {
  display: none !important;
}

body {
  overflow-x: hidden;
}

body.fixed {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
}

iframe {
  background: #999999;
}

img {
  max-width: 100%;
}

a {
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  color: #bb0b0e;
  text-decoration: none;
  font-weight: 700;
}

a:hover {
  color: #8c0007;
  text-decoration: underline;
}

.call-to-action {
  -webkit-transition: all 0.5s ease-in-out;
  -ms-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out;
  background: #bb0b0e;
  color: white;
  border-radius: .4375em;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 1.125em;
  padding: 1em 3.5em;
  position: relative;
  top: 0;
}

.call-to-action:hover {
  color: white;
  background: #a30a0c;
  text-decoration: none;
}

.call-to-action:active {
  top: .2777777778em;
}

figure {
  margin: 0;
}

figcaption, .caption {
  font-size: .85em;
  color: #999999;
  font-style: italic;
}

figcaption p, .caption p {
  margin: 0;
}

.caption h4, .caption .delta {
  margin: .25em 0;
  font-style: normal;
}

q {
  display: block;
  color: #999999;
  font-size: 1.15em;
  margin: 1.5em 5%;
  position: relative;
}

q:before {
  content: '';
  position: absolute;
  height: 110%;
  width: .5em;
  background: #999999;
  left: -1.5em;
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
}

@media (min-width: 68.75em) {
  q {
    margin-left: 10%;
    margin-right: 10%;
  }
}

cite {
  display: block;
  font-size: 1.25em;
  margin: 1.5em 5%;
  color: #999999;
}

@media (min-width: 68.75em) {
  cite {
    margin-left: 10%;
    margin-right: 10%;
    position: relative;
  }
  cite:before {
    content: '';
    position: absolute;
    display: inline-block;
    top: 0;
    left: -3.5em;
    background: url("../images/quote.svg") no-repeat;
    background-size: 2.5em;
    width: 2.5em;
    height: 2.5em;
  }
}

.jump-link:before {
  display: block;
  content: "";
  height: 6em;
  margin: -6em 0 0;
}

.jump-link.site-footer:before {
  height: 9em;
  margin: -9em 0 0;
}

.cove-wrapper {
  margin-bottom: 1.5em;
}

.cove-container:before {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  z-index: 3;
  color: white;
  content: 'Video Requires Javascript';
}

.js .cove-container:before {
  content: none;
}

.cove-container {
  position: relative;
  height: 0;
  padding-bottom: 56.25%;
  background: transparent;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.cove-container iframe {
  background: transparent;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.grid {
  max-width: 87.5em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 5%;
}

.grid:after {
  content: " ";
  display: block;
  clear: both;
}

.grid:after {
  display: table;
  clear: both;
  content: '';
}

.grid:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 95.625em) {
  .grid {
    padding: 0;
  }
}

.grid.full {
  max-width: 100%;
  padding: 0;
}

.plugin-item-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-item-block:before {
  display: table;
  clear: both;
  content: '';
}

.page {
  margin-top: 3em;
  margin-bottom: 3em;
}

.page:after {
  display: table;
  clear: both;
  content: '';
}

.page:before {
  display: table;
  clear: both;
  content: '';
}

.right-arrow {
  fill: white;
  max-width: 2em;
  max-height: 2em;
}

.passport-icon {
  vertical-align: middle;
  margin-top: -.15em;
  max-width: 1.25em;
  max-height: 1.25em;
}

.related-feature-list {
  clear: both;
  margin-bottom: 3em;
  margin-top: 3em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIl9ub3JtYWxpemUuc2NzcyIsIl9jb25maWcuc2NzcyIsIl9taXhpbnMuc2NzcyIsIl9hbmltYXRpb25zLnNjc3MiLCJfdHlwb2dyYXBoeS5zY3NzIiwiX2dyaWRIZWxwZXJzLnNjc3MiLCJfc29jaWFsLnNjc3MiLCJfdGVhc2VySXRlbS5zY3NzIiwiX3BsYWNlaG9sZGVycy5zY3NzIiwiX2Nhcm91c2VsLnNjc3MiLCJfYWNjb3JkaW9ucy5zY3NzIiwiX2ZpbHRlcnMuc2NzcyIsIl9yZWxhdGVkRmlsbXMuc2NzcyIsIl9uZXdzbGV0dGVyRm9ybS5zY3NzIiwiX2hvbWVQYWdlSGVyby5zY3NzIiwiX3BhZ2luYXRpb24uc2NzcyIsIl9maWxtTGlzdC5zY3NzIiwiX2ZpbG1EZXRhaWwuc2NzcyIsIl9mZWF0dXJlTGlzdGluZ3Muc2NzcyIsIl9mZWF0dXJlRGV0YWlsLnNjc3MiLCJfc2VhcmNoUmVzdWx0cy5zY3NzIiwiX25ld3NsZXR0ZXJNb2RhbC5zY3NzIiwiX2hlYWRlci5zY3NzIiwiX2Zvb3Rlci5zY3NzIiwiX2Nvbm5lY3Quc2NzcyIsIl9hZHMuc2NzcyIsIl9zaGFtZS5zY3NzIiwiX2dsb2JhbEdlbmVyYWwuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvL2Jhc2Ugc3R1ZmZcbkBpbXBvcnQgJ2JyZWFrcG9pbnQnO1xuQGltcG9ydCAnc3VzeSc7XG5AaW1wb3J0ICdub3JtYWxpemUnO1xuQGltcG9ydCAnY29uZmlnJztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICdhbmltYXRpb25zJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHknO1xuQGltcG9ydCAnZ3JpZEhlbHBlcnMnO1xuXG4vLyBzbWFsbCByZXVzYWJsZSBjb21wb25lbnRzXG5AaW1wb3J0ICdzb2NpYWwnO1xuQGltcG9ydCAndGVhc2VySXRlbSc7XG5AaW1wb3J0ICdwbGFjZWhvbGRlcnMnO1xuQGltcG9ydCAnY2Fyb3VzZWwnO1xuQGltcG9ydCAnYWNjb3JkaW9ucyc7XG5AaW1wb3J0ICdmaWx0ZXJzJztcbkBpbXBvcnQgJ3JlbGF0ZWRGaWxtcyc7XG5AaW1wb3J0ICduZXdzbGV0dGVyRm9ybSc7XG5AaW1wb3J0ICdob21lUGFnZUhlcm8nO1xuQGltcG9ydCAncGFnaW5hdGlvbic7XG5cbi8vIHBhZ2VzXG5AaW1wb3J0ICdmaWxtTGlzdCc7XG5AaW1wb3J0ICdmaWxtRGV0YWlsJztcbkBpbXBvcnQgJ2ZlYXR1cmVMaXN0aW5ncyc7XG5AaW1wb3J0ICdmZWF0dXJlRGV0YWlsJztcbkBpbXBvcnQgJ3NlYXJjaFJlc3VsdHMnO1xuXG4vLyBoaWdoIGxldmVsIGNvbXBvbmVudHNcbkBpbXBvcnQgJ25ld3NsZXR0ZXJNb2RhbCc7XG5AaW1wb3J0ICdoZWFkZXInO1xuQGltcG9ydCAnZm9vdGVyJztcbkBpbXBvcnQgJ2Nvbm5lY3QnO1xuQGltcG9ydCAnYWRzJztcblxuLy9zaGFtZVxuQGltcG9ydCAnc2hhbWUnO1xuXG4vL2dlbmVyYWwgZ2xvYmFsXG5AaW1wb3J0ICdnbG9iYWxHZW5lcmFsJzsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuXG4gICAgICAgICRfcGFzcyA6IG51bGw7XG5cbiAgICAgICAgLy8gc2FzcyAzLjUgb3IgZ3JlYXRlclxuICAgICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKCdnZXQtZnVuY3Rpb24nKSB7XG4gICAgICAgICAgJF9wYXNzOiBjYWxsKGdldC1mdW5jdGlvbih1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSksICRfaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FzcyAzLjQgb3IgbGVzc1xuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2NC4xLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBJRSBhbmQgaU9TLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuXG4vKiBhcHBseSBhIG5hdHVyYWwgYm94IGxheW91dCBtb2RlbCB0byBhbGwgZWxlbWVudHMsIGJ1dCBhbGxvd2luZyBjb21wb25lbnRzIHRvIGNoYW5nZSAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscywgLyogMSAqL1xuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbm1haW4sIC8qIDIgKi9cbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7IC8qIDEgKi9cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGlPUyA0LTcuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gKi9cblxudGVtcGxhdGUsIC8qIDEgKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIGdhcHMgaW4gbGlua3MgdW5kZXJsaW5lIGluIGlPUyA4KyBhbmQgU2FmYXJpIDgrLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXG4gKiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lLXdpZHRoOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgOS0uXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICogICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLS5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHRleHQgc3R5bGUgb2YgcGxhY2Vob2xkZXJzIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgb3BhY2l0eTogMC41NDtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qKlxuICogIHJlbW92ZSBpb3Mgc3R5bGluZy4gT25seSB1c2Ugb24gYnV0dG9ucyBhbmQgc2VhcmNoIGlucHV0c1xuICovXG5idXR0b24sIFt0eXBlPVwic2VhcmNoXCJdLCBbdHlwZT1cImJ1dHRvblwiXSB7IFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6MDtcbiAgcGFkZGluZzowO1xufVxuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcbiAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBtYXJnaW46IDA7XG59XG4iLCIvLyBjb2xvcnNcbiRjcmltc29uOiM4YzAwMDc7XG4kcmVkOiNiYjBiMGU7XG4keWVsbG93OiNmM2FkMDA7XG4kbXVzdGFyZDojODM1ZDAwO1xuJGJsdWU6IzE3NDE4OTsgXG4kZGFya0JsdWU6IzEwMzA2NjtcbiRuYXZ5OiMyNDM3NTc7XG4kY29ybmZsb3dlcjojNDg3MmI0O1xuJGNoYXJjb2FsOiM0MzQzNDM7XG4kZ3JheTojNzc3Nzc3O1xuJG1lZEdyYXk6Izk5OTk5OTtcbiRkYXJrR3JheTojMzMzO1xuJHdhcm1HcmF5OiNlYmViZWI7XG4kZG92ZTojZTZlNmU2O1xuJG92ZXJsYXk6I2UzZTNlMztcblxuXG4vLyBjaGFzaW5nIHRoZSBtb29uXG4kY2hhc2luZ0JsdWU6ICMwMDNmYTY7XG4kY2hhc2luZ0hlYXRoZXI6ICNkNmQ2ZDY7XG4kY2hhc2luZ0Nvcm5mbG93ZXI6ICMyNjdkZmU7XG4kY2hhc2luZ1NsYXRlOiAjMWMxYzFjO1xuJGNoYXNpbmdHcmF5OiM1YjViNWI7XG4kbm90SW5TdHlsZ3VpZGVCdXRJblN0eWxndWlkZTojMjQyNDI0O1xuJGNoYXNpbmdXdGZCbGFjazojMTAxMDEwO1xuXG5cbi8vIGJyZWFrcG9pbnRzXG4vLyA2NTBweFxuJHNjcmVlbi1zbS1taW46NDAuNjI1ZW07XG4vLyAxMTAwcHhcbiRzY3JlZW4tbWQtbWluOjY4Ljc1ZW07XG4vLyAxMzAwcHhcbiRzY3JlZW4tbGctbWluOjgxLjI1ZW07XG4vLyAxNTMwcHhcbiRzY3JlZW4tamItbWluOjk1LjYyNWVtO1xuXG4vLyB2ZXJ0aWNhbCByaHl0aG0gdmFyLiB1c2VkIHRvIGJyZWFrIHVwIHNlY3Rpb25zIGJhc2VkIG9uIGEgc2NhbGVcbiR2LXJoeXRobToxLjVlbTtcblxuLy8gc3VzeSBiYXNlIGNvbmZpZyBmb3Igc21hbGxlciBzY3JlZW5zXG4vLyBncmlkIGNoYW5nZXMgYmFzZWQgb24gd3JhcHBlciBjbGFzcyBkZWZpbmVkIGluIGN1c3RvbS5zY3NzXG4kc3VzeTogKFxuICBjb2x1bW5zOigyKSxcbiAgY29udGFpbmVyOjg3LjVlbSxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIC8vIGRlYnVnOihpbWFnZTpzaG93KVxuKTtcblxuJG1hcC1zbTogKFxuICBjb2x1bW5zOig0KSxcbik7XG5cbiRtYXAtbWQ6IChcbiAgY29sdW1uczooOCksXG4pO1xuXG4kbWFwLWxnOiAoXG4gIGNvbHVtbnM6KDEyKSxcbik7XG5cbi8vIGdyaWRcbkBtaXhpbiBncmlkKCkge1xuICBAaW5jbHVkZSBjb250YWluZXIoKTtcbiAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgcGFkZGluZzowIDUlO1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoNCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoOCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzaG93LWdyaWQoMTIpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluKSB7XG4gICAgcGFkZGluZzowO1xuICB9XG59IiwiIC8vIGNsZWFyIGZpeGluXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIGNsZWFyOmJvdGg7XG4gICAgY29udGVudDonJztcbiAgfVxuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICAgIGNvbnRlbnQ6Jyc7XG4gIH1cbn1cbi8vIHBhcmVudCBzaG91bGQgYmUgc2V0IHRvIHJlbGF0aXZlXG4vLyBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvY2VudGVyaW5nLW1peGluL1xuQG1peGluIGNlbnRlcigkaG9yaXpvbnRhbDogdHJ1ZSwgJHZlcnRpY2FsOiB0cnVlKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGlmICgkaG9yaXpvbnRhbCBhbmQgJHZlcnRpY2FsKSB7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gIH0gQGVsc2UgaWYgKCRob3Jpem9udGFsKSB7XG4gICAgbGVmdDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICB9IEBlbHNlIGlmICgkdmVydGljYWwpIHtcbiAgICB0b3A6IDUwJTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgfVxufVxuXG4vLyB0cmFuc2l0aW9uc1xuQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tcHJvcGVydHksICR0cmFuc2l0aW9uLXRpbWUsICRtZXRob2QpIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbiAgICAgIC1tcy10cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiR0cmFuc2l0aW9uLXByb3BlcnR5ICR0cmFuc2l0aW9uLXRpbWUgJG1ldGhvZDtcbn1cblxuLy8gZ3JhZGllbnRzXG5AbWl4aW4gbGluZWFyLWdyYWRpZW50KCRmcm9tQ29sb3IsICR0b0NvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6JHRvQ29sb3I7IC8qIEZhbGxiYWNrIENvbG9yICovXG4gIGJhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgkZnJvbUNvbG9yKSwgdG8oJHRvQ29sb3IpKTsgLyogU2FmNCssIENocm9tZSAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBDaHJvbWUgMTArLCBTYWY1LjErLCBpT1MgNSsgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogRkYzLjYgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogSUUxMCAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBPcGVyYSAxMS4xMCsgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgIGxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTtcblxuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChHcmFkaWVudFR5cGU9MCxTdGFydENvbG9yU3RyPScjeyRmcm9tQ29sb3J9JywgRW5kQ29sb3JTdHI9JyN7JHRvQ29sb3J9Jyk7XG59XG5cbi8vIHBsYWluIGxpc3RzXG5AbWl4aW4gcGxhaW4tbGlzdCB7XG4gIG1hcmdpbi1yaWdodDowO1xuICBtYXJnaW4tdG9wOjA7XG4gIG1hcmdpbi1sZWZ0OjA7XG4gIG1hcmdpbi1ib3R0b206MDtcbiAgcGFkZGluZzowO1xuICBsaSB7XG4gICAgbGlzdC1zdHlsZTpub25lO1xuICB9XG4gIGRkIHtcbiAgICBtYXJnaW46MDtcbiAgfVxufVxuXG5AbWl4aW4gcGxhaW4tYnV0dG9uIHtcbiAgYm9yZGVyOm5vbmU7XG4gIGJhY2tncm91bmQ6bm9uZTtcbiAgYm94LXNoYWRvdzpub25lO1xuICAmOmhvdmVyLCAmOmZvY3VzLCAmOmFjdGl2ZSB7XG4gICAgYm94LXNoYWRvdzpub25lO1xuICAgIGJvcmRlcjpub25lO1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24oJGJhY2tncm91bmQ6bnVsbCwgJGNvbG9yOm51bGwpIHtcbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICB9XG4gIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiN7JGNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjojeyRiYWNrZ3JvdW5kfTtcbiAgYm9yZGVyOjA7XG59XG5cbkBtaXhpbiBib3JkZXItYnV0dG9uKCRib3JkZXJDb2xvcjpudWxsLCAkYm9yZGVyV2lkdGg6bnVsbCwgJGNvbG9yOm51bGwpIHtcbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICB9XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiN7JGNvbG9yfTtcbiAgYm9yZGVyLWNvbG9yOiN7JGJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLXdpZHRoOiN7JGJvcmRlcldpZHRofTtcbiAgYm9yZGVyLXN0eWxlOnNvbGlkO1xufVxuXG5AbWl4aW4gYXJyb3ctYnV0dG9uKCRjb2xvcikge1xuICBwYWRkaW5nLXJpZ2h0OjNlbTtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIHN2ZyB7XG4gICAgQGluY2x1ZGUgY2VudGVyKGZhbHNlLCB0cnVlKTtcbiAgICBmaWxsOiRjb2xvcjtcbiAgICByaWdodDoxZW07XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6MWVtO1xuICAgIGhlaWdodDoxZW07XG4gIH1cbiAgLy8gcmVxdWlyZXMgdGhpcyBzdmcgYXMgYSBjaGlsZFxuICAvLyAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTUgMTAxXCI+XG4gIC8vICAgPHBhdGggZD1cIk03LjQ1IDEwMEwwIDkyLjEgMzkuNTUgNTAgMCA4LjE4IDcuNDUgMGw0Ny4xIDUwXCIvPlxuICAvLyA8L3N2Zz5cbn1cblxuLy8gbGluayByZXNldFxuQG1peGluIGxpbmstcmVzZXQge1xuICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbiAgJjphY3RpdmUge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbiAgJjpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbn1cblxuLy8gbG9uZyBzaGFkb3cgZ2VuZXJhdG9yXG4vLyBodHRwOi8vY29kZXBlbi5pby9tYXhha29obGVyL3Blbi9tQXhIelxuQG1peGluIGxvbmctc2hhZG93KCR0eXBlLCAkY29sb3IsICRsZW5ndGgsICRmYWRlb3V0OiB0cnVlLCAkc2tldzogZmFsc2UsICRkaXJlY3Rpb246IHJpZ2h0KXtcbiAgJHNoYWRvdzogJyc7XG4gIEBpZiAkc2tldyA9PSBmYWxzZSBvciAkdHlwZSA9PSB0ZXh0e1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRvICRsZW5ndGggLSAxIHtcbiAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkY29sb3IgKyAnLCc7XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGNvbG9yICsgJywnO1xuICAgICAgIH1cbiAgICAgIH1cbiAgICAgfVxuICAgICAgICBcbiAgIEBpZiAkZmFkZW91dCA9PSB0cnVle1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRsZW5ndGggLSAxIHtcbiAgICAgIEBpZiAkdHlwZSA9PSB0ZXh0IG9yICRza2V3ID09IGZhbHNle1xuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICAgICAgIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0e1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSAqIC0xICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAgICAgICByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoJHR5cGUgPT0gYm94KSBhbmQgJHNrZXcgPT0gdHJ1ZXtcbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGkgKiAuMiArICdweCAnICsgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSAqIC0xICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkaSAqIC4yICsgJ3B4ICcgKyByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICAkc2hhZG93OiAkc2hhZG93ICsgJGxlbmd0aCArICdweCAnICsgJGxlbmd0aCArICdweCAwICcgKyByZ2JhKCRjb2xvciwgMCk7XG4gfVxuIEBpZiAkZmFkZW91dCA9PSBmYWxzZXtcbiAgIEBpZiAkc2tldyA9PSB0cnVlIGFuZCAoICR0eXBlID09IGJveCApe1xuICAgICBAZm9yICRpIGZyb20gMCB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRpICogLjEgKyAncHggJyArICRjb2xvciArICcsJztcbiAgICAgIH1cbiAgIH1cbiAgICAkc2hhZG93OiAkc2hhZG93ICsgJGxlbmd0aCArICdweCAnICsgJGxlbmd0aCArICdweCAwICcgKyByZ2JhKDAsMCwwLDApO1xuIH1cbiAkc2hhZG93OiB1bnF1b3RlKCRzaGFkb3cpO1xuICBAaWYgJHR5cGUgPT0gJ2JveCcge2JveC1zaGFkb3c6ICRzaGFkb3c7fVxuICBAaWYgJHR5cGUgPT0gJ3RleHQnIHt0ZXh0LXNoYWRvdzogJHNoYWRvdzt9XG59XG5cbi8vIGFzc2l0aXZlIHRleHQuIG5vdCBhIG1peGluIGJ1dCBhbiBpbXBvcnRhbnQgdXRpbGl0eSBjbGFzc1xuLmFzc2lzdGl2ZS10ZXh0IHtcbiAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiAxcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hc3Npc3RpdmUtdGV4dDpob3ZlciwgLmFzc2lzdGl2ZS10ZXh0OmFjdGl2ZSwgLmFzc2lzdGl2ZS10ZXh0OmZvY3VzIHtcbiAgZm9udC1zaXplOi44NzVlbTtcbiAgZm9udC13ZWlnaHQ6Ym9sZDtcbiAgbGluZS1oZWlnaHQ6bm9ybWFsO1xuICB6LWluZGV4OjEwMDAwMDtcbiAgdG9wOjVweDtcbiAgbGVmdDo1cHg7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGNsaXA6YXV0byAhaW1wb3J0YW50O1xuICB3aWR0aDphdXRvO1xuICBoZWlnaHQ6YXV0bztcbiAgcGFkZGluZzoxNXB4IDIzcHggMTRweDtcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIGNvbG9yOiMyMTc1OWI7XG4gIGJvcmRlci1yYWRpdXM6M3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7XG4gIGJveC1zaGFkb3c6MCAwIDJweCAycHggcmdiYSgwLCAwLCAwLCAuNik7XG59XG5cbi5oaWRlIHtcbiAgZGlzcGxheTpub25lO1xufVxuXG5cbkBtaXhpbiBmbGV4IHtcbiAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgZGlzcGxheTpmbGV4O1xufVxuXG5AbWl4aW4gZmxleC13cmFwIHtcbiAgLW1zLWZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWl4aW4gZmxleC1hbGlnbi1jZW50ZXIge1xuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWl4aW4gZmxleC1hbGlnbi1lbmQge1xuICAtd2Via2l0LWJveC1hbGlnbjogZW5kO1xuICAgICAtbXMtZmxleC1hbGlnbjogZW5kO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LWVuZCB7XG4gIC13ZWJraXQtYm94LXBhY2s6IGVuZDtcbiAgICAgLW1zLWZsZXgtcGFjazogZW5kO1xuICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgXG59XG5cbkBtaXhpbiBmbGV4LWp1c3RpZnktc3RhcnQge1xuIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IFxufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LWNlbnRlciB7XG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IFxufVxuIiwiQG1peGluIGFuaW1hdGVkKCRkdXIpIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246ICRkdXI7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cjtcbiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBtaXhpbiBmYWRlSW4ge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW47XG59XG5cbkBtaXhpbiBmYWRlSW5TdGFydGVkIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluU3RhcnRlZDtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblN0YXJ0ZWQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZmFkZU91dCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluTGVmdCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJbkxlZnQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5MZWZ0O1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJblJpZ2h0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJblJpZ2h0O1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJblJpZ2h0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVPdXRSaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlT3V0UmlnaHQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFJpZ2h0O1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dERvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXREb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0RG93biB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gIH1cbn1cblxuLnNsaWRlT3V0RG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXRMZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuLnNsaWRlT3V0TGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dExlZnQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluRG93biB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluRG93biB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duO1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd247XG59XG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5VcCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluVXAge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluVXA7XG59XG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIFxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbiAgXG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGJvdW5jZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBib3VuY2UgM3MgaW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uOiBib3VuY2UgM3MgaW5maW5pdGU7XG59XG5cbi8vIGNoYXNpbmcgbW9vbiBhbmltYXRpb25zXG4vLyBhbmltYXRpb25zIGxhc3QgMzBzZWNvbmRzXG4vLyBsYXN0IDEuNXNlY29uZHMgb2YgYW5pbWF0aW9uIGlzIHRyYW5zZm9ybSBiYWNrdG8gb3JpZ2luYWwgc3RhdGVcbkAtd2Via2l0LWtleWZyYW1lcyBNb29uSW1hZ2VBbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbiAgNzUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFxuICA4NSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cblxufVxuXG5Aa2V5ZnJhbWVzIE1vb25JbWFnZUFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cblxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgXG4gIDg1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxufVxuXG5AbWl4aW4gTW9vbkltYWdlQW5pbWF0aW9uIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogTW9vbkltYWdlQW5pbWF0aW9uO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uSW1hZ2VBbmltYXRpb247XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAgXG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBNb29uR3JhZGllbnRSaXNlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIDg1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgTW9vbkdyYWRpZW50UmlzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICA4NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG5AbWl4aW4gTW9vbkdyYWRpZW50UmlzZSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25HcmFkaWVudFJpc2U7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IE1vb25HcmFkaWVudFJpc2U7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAgXG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBNb29uVHlwZVJldmVhbCB7XG4gIDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzppbmhlcml0O1xuICB9XG5cbiAgODUlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgTW9vblR5cGVSZXZlYWwge1xuICAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtcbiAgfVxuICBcbiAgODUlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG59XG5cblxuQG1peGluIE1vb25UeXBlUmV2ZWFsIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogTW9vblR5cGVSZXZlYWw7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IE1vb25UeXBlUmV2ZWFsO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5cblxuXG5cbiIsIi8vIGZvbnQtZmFtaWx5OiAnSm9zZWZpbiBTYW5zJywgc2Fucy1zZXJpZjtcbi8vIGZvbnQtZmFtaWx5OiAnTXVsaScsIHNhbnMtc2VyaWY7XG4vLyBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG5cbi8vIGJvZHkgYmFzZVxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnTXVsaScsICdUcmVidWNoZXQgTVMnLCBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMS42MjU7XG4gIGZvbnQtc2l6ZToxZW07XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cbi8vIGJhc2UgaGVhZGluZyBzdHlsaW5nXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuYWxwaGEsIC5iZXRhLCAuZ2FtbWEsIC5kZWx0YSwgLmVwc2lsb24sIC56ZXRhIHtcbiAgbWFyZ2luLXRvcDowO1xuICBmb250LXdlaWdodDo3MDA7XG59XG4vLyBoMSBpcyB1c2VkIGZvciB0aGUgc2l0ZSBsb2dvIG9ubHkgZm9yIHBhZ2UgaGVhZGluZ3Mgb3IgY3JlYXRpbmcgdG9wIGxldmVsIHNlY3Rpb25zXG4vLyB1c2UgaDIgb3IgLmJldGFcbi5hbHBoYSB7XG4gIGNvbG9yOiRjaGFyY29hbDtcbiAgZm9udC1zaXplOjIuMjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNTtcbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgY29udGVudDonJztcbiAgICBoZWlnaHQ6LjE2NjZlbTtcbiAgICB3aWR0aDo0LjE2NzdlbTtcbiAgICBiYWNrZ3JvdW5kOiR5ZWxsb3c7XG4gICAgbWFyZ2luLWJvdHRvbTouMzVlbTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbn1cblxuaDIsIC5iZXRhIHtcbiAgY29sb3I6JGNoYXJjb2FsO1xuICBmb250LXNpemU6MmVtO1xuICBtYXJnaW4tYm90dG9tOi41ZW07XG4gIGxpbmUtaGVpZ2h0OjEuMDYyNTtcbiAgJjphZnRlciB7XG4gICAgbWFyZ2luLXRvcDouNGVtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgY29udGVudDonJztcbiAgICBoZWlnaHQ6LjE4NzVlbTtcbiAgICB3aWR0aDozLjEyNWVtO1xuICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgfVxufVxuXG4vLyBhbHRlcm5hdGUgbGV2ZWwgdHdvIGhlYWRpbmdcbi5wcmVtaWVyZS1kYXRlIHtcbiAgY29sb3I6JGdyYXk7XG4gIGZvbnQtc2l6ZToyZW07XG4gIG1hcmdpbi1ib3R0b206LjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNjI1O1xufVxuXG4ub3ZlcmxpbmUge1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgaDEsIC5hbHBoYXtcbiAgICBsaW5lLWhlaWdodDoxLjA1O1xuICAgIG1hcmdpbi1ib3R0b206LjJlbTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG4gICY6YmVmb3JlIHtcbiAgICBtYXJnaW4tdG9wOi40ZW07XG4gICAgbWFyZ2luLWJvdHRvbTouNzVlbTtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgaGVpZ2h0Oi4zNzVlbTtcbiAgICB3aWR0aDo5LjM3NWVtO1xuICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgfVxufVxuXG4vLyBoZWFkaW5nIGFuaW1hdGlvblxuLmpzIHtcbiAgLmFscGhhLCAgaDIsIC5iZXRhLCAub3ZlcmxpbmUge1xuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24od2lkdGgsIC43NXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIHdpZHRoOjA7XG4gICAgfVxuICB9XG4gIC5vdmVybGluZSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6OS4zNzVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmFscGhhLCBoMi5hbHBoYSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6NC4xNjc3ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGgyLCAuYmV0YSB7XG4gICAgJi5hbmltYXRlIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICB3aWR0aDozLjEyNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5oMywgLmdhbW1hIHtcbiAgbGluZS1oZWlnaHQ6MS4yNTtcbiAgY29sb3I6JGNoYXJjb2FsO1xuICBmb250LXNpemU6MS42MjVlbTtcbn1cblxuaDQsIC5kZWx0YSB7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXNpemU6MS41ZW07XG4gIGxpbmUtaGVpZ2h0OjEuMDc7XG59XG5cbmg1LCAuZXBpc2xvbiB7XG4gIGNvbG9yOmJsYWNrO1xuICBmb250LXNpemU6MS4zNzVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wODtcbn0gXG5cbmg2LCAuemV0YSB7XG4gIGNvbG9yOiRncmF5O1xuICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTouODc1ZW07XG4gIGxldHRlci1zcGFjaW5nOi4wNzE0ZW07XG59XG5cbi8vIGNvcHkgYW5kIGxpc3RzXG5wIHtcbiAgbWFyZ2luOjAgMCAxLjY2NjY2N2VtO1xuICBmb250LXNpemU6MS4xMjVlbTtcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTpub25lO1xuICB9XG59XG5cbi8vIHRhcmdldGluZyBwbHVnaW4gY29udGFpbmVyIGNsYXNzIGluY2x1ZGVkIG9uIGZlYXR1cmUtZGV0YWlsLCB1dGlpbHR5IHBhZ2UgYW5kIDQwNCB0ZW1wbGF0ZVxuLy8gcHJldmVudHMgY29sbGlzaW9ucyB3aXRoIGxpc3RzIHNpdGUgd2lkZVxuLnBsdWdpbi1jb250YWluZXIge1xuICBcbiAgb2wsIHVsIHtcbiAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgIG1hcmdpbjowIDAgMS42NjY2NjdlbTtcbiAgICBwYWRkaW5nLWxlZnQ6MS41ZW07XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6Mi41ZW07XG4gICAgfVxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206MWVtO1xuICAgIH1cbiAgfVxuICBvbCB7XG4gICAgcGFkZGluZy1sZWZ0OjJlbTtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIHBhZGRpbmctbGVmdDozZW07XG4gICAgfVxuICB9XG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gICAgbGkge1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6LjVlbTtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDotLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6MS41O1xuICAgICAgICBjb250ZW50OidcXDIwMjInO1xuICAgICAgICBjb2xvcjokeWVsbG93O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbn1cbiIsIi50d28tdXAge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbGkge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyIG9mIDQpO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgOCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNiBvZiAxMik7XG4gICAgfVxuICB9XG59XG5cbi50aHJlZS11cCB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiAxMik7XG4gICAgfVxuICB9XG59IiwiLnNvY2lhbC1saXN0IHtcbiAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgZGlzcGxheTpmbGV4O1xuICB0ZXh0LWFsaWduOmNlbnRlcjsgIFxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoyZW07XG4gICAgaGVpZ2h0OjJlbTtcbiAgICBzdmcge1xuICAgICAgcGF0aCB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxpIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOjAgLjI1ZW07XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xuICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgc3ZnIHtcbiAgICAuYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiRncmF5OyAgICBcbiAgICB9XG4gICAgLmNvbG9yIHtcbiAgICAgIGZpbGw6d2hpdGU7XG4gICAgfVxuICB9XG59IiwiLnRlYXNlci1saXN0IHtcbiAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbn1cblxuLnRlYXNlci1pdGVtIHtcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46MCAwICR2LXJoeXRobS8yO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICAgIGEge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICB9XG4gICAgaW1nICB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICB9XG4gIH1cbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xuICB9XG4gIGgzIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS80O1xuICAgIC5wYXNzcG9ydC1pY29uIHtcbiAgICAgIG1heC13aWR0aDoxZW07XG4gICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICB9XG4gIH1cbiAgLnpldGEge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzQ7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIH1cbiAgLmljb24ge1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIGJvdHRvbTowO1xuICAgIGxlZnQ6MDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDozLjEyNWVtO1xuICAgIGhlaWdodDozLjEyNWVtO1xuICAgIGJhY2tncm91bmQ6cmdiYSgkYmx1ZSwgLjc1KTtcbiAgICBpbWcge1xuICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgbWF4LXdpZHRoOjEuNTYyNWVtO1xuICAgICAgbWF4LWhlaWdodDoxLjU2MjVlbTtcbiAgICAgIHdpZHRoOmF1dG87XG4gICAgICBoZWlnaHQ6YXV0bztcbiAgICB9XG4gIH1cbn1cblxuLmNvbGxlY3Rpb24taXRlbSB7XG4gIGZpZ3VyZSB7XG4gICAgcGFkZGluZy1ib3R0b206MjcuNSU7XG4gIH1cbn1cblxuLmpzIHtcbiAgLnRlYXNlci1pdGVtIHtcbiAgICAmLnNsaWRlLWluLWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgICAgIEBpbmNsdWRlIHNsaWRlSW5VcDtcbiAgICB9XG4gICAgJi5oaWRkZW4taXRlbSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG59IiwiLy8gR2VuZXJpYyBTdHlsaW5nIGZvciBwbGFjZWhvbGRlcnMuIExheW91dCBjYW4gYmUgZm91bmQgaW4gZ3JpZCBoZWxwZXJzXG4ucGx1Z2luLWJsb2NrLCAucGx1Z2luLWxpc3QtYmxvY2sge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbn1cblxuLnBsdWdpbi1ibG9jayB7XG4gIGgzIHtcbiAgICBib3JkZXItYm90dG9tOi4wNjI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICBoMyB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vODtcbiAgfVxufVxuXG4ucGx1Z2luLWxpc3QtYmxvY2sge1xuICB1bCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgfVxufVxuXG4uYWxwaGEge1xuICAmICsgLnBsdWdpbi1ibG9jaywgJiArIC5wbHVnaW4tbGlzdC1ibG9jayAge1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG4gIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICBmaWd1cmUge1xuICAgIG1hcmdpbi1ib3R0b206MS41ZW07XG4gICAgaW1nIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICAgICYuY2VudGVyIHtcbiAgICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBqYW5reSBvdmVyaWRlIG9mIGRqYW5nbyBpbmxpbmUgc3R5bGluZyBmb3IgZmxvYXRpbmcgc3R1ZmZcbipbc3R5bGUqPVwiZmxvYXQ6IGxlZnRcIl0sIC5sZWZ0IHtcbiAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICBkaXNwbGF5OmJsb2NrO1xuICBtYXJnaW46IDAgYXV0byAkdi1yaHl0aG0qMS41IGF1dG87XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIGRpc3BsYXk6aW5oZXJpdDtcbiAgICBmbG9hdDpsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobTtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuKltzdHlsZSo9XCJmbG9hdDogcmlnaHRcIl0sIC5yaWdodCB7XG4gIGZsb2F0Om5vbmUgIWltcG9ydGFudDtcbiAgZGlzcGxheTpibG9jaztcbiAgbWFyZ2luOiAwIGF1dG8gJHYtcmh5dGhtKjEuNSBhdXRvO1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBkaXNwbGF5OmluaGVyaXQ7XG4gICAgZmxvYXQ6cmlnaHQgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tbGVmdDokdi1yaHl0aG07XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMiAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5jZW50ZXIge1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG59IiwiLyoqXG4gKiB3YWxsb3AuY3NzXG4gKlxuICogQGZpbGVvdmVydmlldyBEZWZhdWx0IHN0eWxlcyBmb3Igd2FsbG9wIOKAkyByZWNvbW1lbmRlZFxuICpcbiAqIEBhdXRob3IgUGVkcm8gRHVhcnRlXG4gKiBAYXV0aG9yIGh0dHA6Ly9wZWRyb2R1YXJ0ZS5tZS93YWxsb3BcbiAqL1xuXG4uY2Fyb3VzZWwtY29udGFpbmVyIHtcbiAgKjpmb2N1cyB7XG4gICAgb3V0bGluZTouMTI1ZW0gc29saWQgJHllbGxvdztcbiAgfVxuXG4gIC5mdWxsLXNjcmVlbiwgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgLldhbGxvcC1saXN0IHtcbiAgICBkaXNwbGF5OmdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjUwcHgsIDFmciApKTtcbiAgICBncmlkLWdhcDozcHg7XG4gICAgcGFkZGluZzowO1xuICAgIC5XYWxsb3AtaXRlbSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICB3aWR0aDoxNTAlO1xuICAgICAgbWFyZ2luLWxlZnQ6LTI1JTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgICB3aWR0aDoyMDAlO1xuICAgICAgbWFyZ2luLWxlZnQ6LTUwJTtcbiAgICB9XG4gIH1cbn1cblxuLmpzIHtcbiAgICAvLyBhZGRlZCB0byBmb3IgZXhpdCBhbmltYXRpb25zXG4gICAgLmNhcm91c2VsLWNvbnRhaW5lciB7XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgYmFja2dyb3VuZDpibGFjaztcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBwYWRkaW5nLXRvcDoxZW07XG4gICAgICB9XG4gICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICBkaXNwbGF5OmluaGVyaXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLldhbGxvcC1saXN0IHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgfVxuXG4gICAgLmNhcm91c2VsIHtcbiAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24sIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgLldhbGxvcCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaW5jbHVkZSBhbmltYXRlZCguNDVzKTtcbiAgICAgICYuZW50ZXJpbmctZnVsbHNjcmVlbiB7XG4gICAgICAgIEBpbmNsdWRlIHNsaWRlSW5Eb3duO1xuICAgICAgfVxuICAgICAgJi5leGl0aW5nLWZ1bGxzY3JlZW4ge1xuICAgICAgICBAaW5jbHVkZSBzbGlkZU91dERvd247XG4gICAgICB9XG4gICAgICAmLmVudGVyaW5nLWJhY2sge1xuICAgICAgICBAaW5jbHVkZSBmYWRlSW47XG4gICAgICB9XG4gICAgICAmLnZpZXdpbmctZnVsbCB7XG4gICAgICAgIHBvc2l0aW9uOmZpeGVkO1xuICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgbGVmdDowO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgei1pbmRleDoyMTQ3NDgzNjQ3O1xuICAgICAgICBiYWNrZ3JvdW5kOmJsYWNrO1xuICAgICAgICBidXR0b24ge1xuICAgICAgICAgIHotaW5kZXg6MTsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgICByaWdodDoyMCU7XG4gICAgICAgICAgdG9wOmNhbGMoNzV2aCArIDFlbSk7XG4gICAgICAgIH1cbiAgICAgICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgICBsZWZ0OjIwJTtcbiAgICAgICAgICB0b3A6Y2FsYyg3NXZoICsgMS4xNWVtKTtcbiAgICAgICAgfVxuICAgICAgICAuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206bm9uZTtcbiAgICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICAgICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICAgIHdpZHRoOjEwMCU7ICAgICAgICAgIFxuICAgICAgICAgICYuV2FsbG9wLWl0ZW0tLWN1cnJlbnQge1xuICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgbWFyZ2luOjAgYXV0bztcbiAgICAgICAgICAgICAgd2lkdGg6NjAlO1xuICAgICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6NzV2aDtcbiAgICAgICAgICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOjFlbTtcbiAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46M2VtIGF1dG8gMCBhdXRvO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6MDsgXG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOjYwdnc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICBsZWZ0OmNhbGMoMjAlIC0gLjQ1ZW0pO1xuICAgICAgICAgICAgICAgIHRvcDpjYWxjKDc1dmggKyA3Ljc1ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC5oaWRlLW1vcmUge1xuICAgICAgICAgICAgICAgIHJpZ2h0OjIwJTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAmLmxvbmctY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6M2VtO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKlxuICAgIFRoaXMgZWxlbWVudCBncm91cHMgYWxsIHRoZSBpdGVtcywgYnV0IG5vdCB0aGUgYnV0dG9uc1xuICAgIEl0J3MgYSByZWNvbW1lbmRhdGlvbiBidXQgaXQncyB2ZXJ5IGxpa2VseVxuICAgIHlvdSdsbCB3YW50IHRvIGhpZGUgYW55IG92ZXJmbG93IGZyb20gdGhlIGl0ZW1zXG4gICAgRXNwZWNpYWxseSB3aGVuIGRvaW5nIGFuaW1hdGlvbnMgc3VjaCBhcyBzY2FsZVxuICAgKi9cblxuICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgLldhbGxvcC1saXN0IHtcbiAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgICBkaXNwbGF5OmluaGVyaXQ7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyB0aGUgaXRlbSBlbGVtZW50XG4gICAgQnkgZGVmYXVsdCwgdGhleSBhcmUgYWxsIGhpZGRlbiBhbmRcbiAgICBwb3NpdGlvbmVkIGFic29sdXRlXG4gICAgSSByZWNvbW1lbmQgYWx3YXlzIGhhdmluZyAuV2FsbG9wLWl0ZW0tLWN1cnJlbnRcbiAgICBpbiB5b3VyIG1hcmt1cCBieSBkZWZhdWx0IChwcm9iYWJseSBvbiB0aGUgZmlyc3QgZWxlbWVudClcbiAgICovXG5cbiAgLnBsdWdpbi1jb250YWluZXIge1xuICAgIC5XYWxsb3AtaXRlbSB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nLWxlZnQ6MDtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgLm1lZGlhLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgIGhlaWdodDoyNGVtO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIGhlaWdodDozMi44MTI1ZW07XG4gICAgICAgIH1cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICAgICAgbWF4LWhlaWdodDoxMDAlO1xuICAgICAgICAgIG1heC13aWR0aDo5MCU7XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6MTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGg0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTouMjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC5jYXJvdXNlbC1pdGVtLWNhcHRpb24ge1xuICAgIHBhZGRpbmc6LjVlbSAkdi1yaHl0aG07XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xuICB9XG5cbiAgLypcbiAgICBUaGlzIGlzIHRoZSBjdXJyZW50IGl0ZW0gZWxlbWVudFxuICAgIEFsbCB3ZSBkbyBoZXJlLCBpcyBtYWtlIGl0IHZpc2libGUgYWdhaW4gcmVzZXRcbiAgICB0aGUgcG9zaXRpb24gdG8gc3RhdGljLiBDb3VsZCBhbHNvIGJlIHJlbGF0aXZlXG4gICAqL1xuXG4gIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAuV2FsbG9wLWl0ZW0tLWN1cnJlbnQge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgZmlndXJle1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgJi5sb25nLWNhcHRpb24ge1xuICAgICAgICAgIC5oaWRlLW1vcmUsIC5zZWUtbW9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG1heC1oZWlnaHQsIDFzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgIG1heC1oZWlnaHQ6MTVlbTtcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgIG1heC1oZWlnaHQ6NC41ZW07XG4gICAgICAgICAgICAgIG1pbi1oZWlnaHQ6NC41ZW07XG4gICAgICAgICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zZWUtbW9yZSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICBjb2xvcjokcmVkO1xuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgIGxlZnQ6Y2FsYyg1JSAtIC40NWVtKTtcbiAgICAgICAgICAgICAgdG9wOjQwLjI1ZW07XG4gICAgICAgICAgICAgIHBhZGRpbmc6MCAuNDVlbTtcbiAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6JHllbGxvdztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmhpZGUtbW9yZSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgb3BhY2l0eTowO1xuICAgICAgICAgICAgICB3aWR0aDoyZW07XG4gICAgICAgICAgICAgIGhlaWdodDoyZW07XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgcmlnaHQ6NSU7XG4gICAgICAgICAgICAgIHotaW5kZXg6MTtcbiAgICAgICAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgZmlsbDokeWVsbG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOjFlbTtcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDguNTVlbTtcbiAgICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDoxMDAlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiR2LXJoeXRobSoyIDUlICR2LXJoeXRobSA1JTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6aW5oZXJpdDtcbiAgICAgICAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OmluaGVyaXQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLmhpZGUtbW9yZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IFxuICAgICAgICB9XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGg0IHtcbiAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICB9XG4gICAgICBmaWdjYXB0aW9uLCAuY2FwdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6JHYtcmh5dGhtIDAgMCAwO1xuICAgICAgICBiYWNrZ3JvdW5kOnJnYmEoYmxhY2ssIC43NSk7XG4gICAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgIGZvbnQtc3R5bGU6bm9ybWFsO1xuICAgICAgICBtYXgtd2lkdGg6OTAlO1xuICAgICAgICBtYXJnaW46MS41ZW0gYXV0byAwIGF1dG87XG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206LjU1ZW07XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgaGVpZ2h0OmF1dG87XG4gICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobSoyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLldhbGxvcC1idXR0b25QcmV2aW91cywgLldhbGxvcC1idXR0b25OZXh0IHtcbiAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgc3ZnIHtcbiAgICAgIGhlaWdodDoxZW07XG4gICAgICB3aWR0aDoxZW07XG4gICAgICBwYXRoIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgICAgb3BhY2l0eTouODU7XG4gICAgICB9XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgc3ZnIHtcbiAgICAgICAgcGF0aCB7XG4gICAgICAgICAgZmlsbDokeWVsbG93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAuZnVsbC1zY3JlZW4ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbihudWxsLCAkbWVkR3JheSk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgYmFja2dyb3VuZDpub25lO1xuICAgIHBhZGRpbmc6LjNlbSAuNDVlbSAuNWVtIC40NWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6MzcuNWVtO1xuICAgIGxlZnQ6NSU7XG4gICAgZGlzcGxheTpub25lO1xuICAgIGxpbmUtaGVpZ2h0OjA7XG4gICAgei1pbmRleDoxO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIC5mdWxsLXNjcmVlbi1pY29uIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICBmaWxsOndoaXRlO1xuICAgICAgd2lkdGg6MS4yNWVtO1xuICAgICAgaGVpZ2h0OjEuMjVlbTtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLXJpZ2h0OjAuNWVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogLS4wNWVtO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiR5ZWxsb3c7XG4gICAgICAuZnVsbC1zY3JlZW4taWNvbiB7XG4gICAgICAgIGZpbGw6JHllbGxvdzsgICAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICBtYXJnaW46MDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOjI3Ljc1ZW07XG4gICAgcmlnaHQ6NSU7XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgIHotaW5kZXg6MTtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHRvcDozNy43NWVtO1xuICAgIH1cbiAgICAuY291bnQge1xuICAgICAgY29sb3I6JG1lZEdyYXk7XG4gICAgICBmbG9hdDpsZWZ0O1xuICAgICAgbWFyZ2luOi0uMDVlbSAxZW0gMCAwO1xuICAgIH1cbiAgICBidXR0b24ge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6Ljc1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAudmlkZW8tZ2FsbGVyeSB7XG4gICAgICAgbWF4LXdpZHRoOjQ0ZW07XG4gICAgICAgbWFyZ2luOjAgYXV0bztcbiAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiwgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgdG9wOi41ZW07XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIHRvcDoyMy43NWVtO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgIHRvcDoyNS43NWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBsZWZ0OmNhbGMoNSUgLSAuNDVlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgcGFkZGluZzowO1xuICAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMi41O1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICAgIC5jb3ZlLWNvbnRhaW5lciB7XG4gICAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtKjEuNTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLnZpZXdpbmctZnVsbCB7XG4gICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICAgIHJpZ2h0OmNhbGMoNTAlIC0gMjNlbSk7XG4gICAgICAgICAgdG9wOjI4ZW07XG4gICAgICAgIH1cbiAgICAgICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgICBsZWZ0OmNhbGMoNTAlIC0gMjNlbSk7XG4gICAgICAgICAgdG9wOjI4ZW07XG4gICAgICAgIH1cbiAgICAgICAgLldhbGxvcC1pdGVtLS1jdXJyZW50LldhbGxvcC1pdGVtIHtcbiAgICAgICAgICBoZWlnaHQ6MTAwdmg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdmUtd3JhcHBlciB7XG4gICAgICAgICAgd2lkdGg6NDBlbTtcbiAgICAgICAgICBtYXJnaW46JHYtcmh5dGhtIGF1dG8gMCBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC5jb3ZlLWNvbnRhaW5lciB7XG4gICAgICAgICAgbWFyZ2luOjA7XG4gICAgICAgIH1cbiAgICAgICAgLmNhcHRpb24ge1xuICAgICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogd2FsbG9wLS1zbGlkZS5jc3NcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IFNsaWRlIGFuaW1hdGlvbiBmb3Igd2FsbG9wXG4gKlxuICogQGF1dGhvciBQZWRybyBEdWFydGVcbiAqIEBhdXRob3IgaHR0cDovL3BlZHJvZHVhcnRlLm1lL3dhbGxvcFxuICovXG5cbi8qIHRoZSAxMG1zIGFuaW1hdGlvbi1kZWxheSBmaXhlZCBzb21lIHdlaXJkIHJlbmRlcmluZyBpc3N1ZXMgd2l0aCBpUGhvbmUgKi9cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0tc2hvd1ByZXZpb3VzIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgLW1vei1hbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgLW1zLWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICBhbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1zaG93TmV4dCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbW96LWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgLW1zLWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVQcmV2aW91cyxcbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZU5leHQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVQcmV2aW91cyB7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbW96LWFuaW1hdGlvbjogc2xpZGVUb0xlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb0xlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVOZXh0IHtcbiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlVG9SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAtbW96LWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gIC1tcy1hbmltYXRpb246IHNsaWRlVG9SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICBhbmltYXRpb246IHNsaWRlVG9SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVGcm9tTGVmdCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVGcm9tTGVmdCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVGcm9tTGVmdCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzbGlkZVRvTGVmdCB7XG4gIDk5JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvTGVmdCB7XG4gIDk5JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgOTklIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICA5OSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuIiwiLmFjY29yZGlvbi10b2dnbGUge1xuICBkaXNwbGF5Om5vbmU7XG59XG5cbi5qcyB7XG4gIC5hY2NvcmRpb24tdG9nZ2xlIHtcbiAgICBib3JkZXI6bm9uZTtcbiAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiRyZWQ7XG4gICAgZm9udC1zaXplOjEuMjVlbTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtLzM7XG4gICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgKiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi10b3A6LS4xNWVtO1xuICAgICAgaGVpZ2h0Oi43NWVtO1xuICAgICAgd2lkdGg6Ljc1ZW07XG4gICAgICBmaWxsOiRyZWQ7XG4gICAgfVxuICAgIC52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSwgLjI1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAudmVydGljYWwge1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVkoMCk7IFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7XG4gICAgIH1cbiAgICB9XG4gIH1cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gICAgJi5vcGVuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICB9XG59IiwiLmZpbHRlcnMge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgYmFja2dyb3VuZDojZDBkYmVkO1xuICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzowO1xuICAgIG1hcmdpbjowO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGJvcmRlcjpub25lO1xuICAgIGlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTk5OTlweDtcbiAgICAgICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgICAmOmZvY3VzICsgbGFiZWwge1xuICAgICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICR5ZWxsb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgcGFkZGluZzouMmVtIDEuNWVtO1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOjEuMjVlbSAwIDAgMS4yNWVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czowIDEuMjVlbSAxLjI1ZW0gMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICB3aWR0aDoxMi44MTI1ZW07XG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAgIGZvbnQtc2l6ZTozLjg1dnc7XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjojNDM0MzQzO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS80OyAgICAgIFxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjsgIFxuICAgIH1cbiAgfVxuXG4gIC5zdHlsZWQtc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgJi5mb2N1c2VkIHtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6JHllbGxvdyAkeWVsbG93ICR5ZWxsb3cgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOi0uMTI1ZW07XG4gICAgICByaWdodDotLjEyNWVtO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NDhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElpQjJhV1YzUW05NFBTSXdJREFnTkRBZ05EQWlJSE4wZVd4bFBTSmxibUZpYkdVdFltRmphMmR5YjNWdVpEcHVaWGNnTUNBd0lEUXdJRFF3T3lJZ2VHMXNPbk53WVdObFBTSndjbVZ6WlhKMlpTSStQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0dWMzUXdlMlpwYkd3Nkl6UTROekpDTkR0OUxuTjBNWHRtYVd4c09pTkdSa1pHUmtZN2ZUd3ZjM1I1YkdVK1BISmxZM1FnWTJ4aGMzTTlJbk4wTUNJZ2QybGtkR2c5SWpRd0lpQm9aV2xuYUhROUlqUXdJaTgrUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRURXlMak1zTVRkc055NDNMRGN1TjJ3M0xqY3ROeTQzYkMweExqY3RNUzQ0YkMwMUxqa3NObXd0TlM0NUxUWk1NVEl1TXl3eE4zb2lMejQ4TDNOMlp6ND0pO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIGhlaWdodDpjYWxjKDEwMCUgKyAuMjVlbSk7XG4gICAgICB3aWR0aDoyLjQ5ZW07XG4gICAgICBwb2ludGVyLWV2ZW50czpub25lO1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkY29ybmZsb3dlcjtcbiAgICAgIGJvcmRlci1sZWZ0Om5vbmU7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgICByaWdodDowO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGhlaWdodDoxMDAlOyAgXG4gICAgICB3aWR0aDo1LjI1ZW0gXFw5O1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBtYXJnaW46MDtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtO1xuICAgIH0gICAgXG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmc6LjJlbSAuNzVlbSAuMTllbSAuNzVlbTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZDpub25lO1xuICAgIHBhZGRpbmctcmlnaHQ6NGVtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG4gIFxuICAvKiBDQVVUSU9OOiBJRSBoYWNrZXJ5IGFoZWFkICovXG4gIHNlbGVjdDo6LW1zLWV4cGFuZCB7IFxuICAgIGRpc3BsYXk6IG5vbmU7IC8qIHJlbW92ZSBkZWZhdWx0IGFycm93IG9uIGllMTAgYW5kIGllMTEgKi9cbiAgfVxuXG4gIC5zb3J0aW5nIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIC5zdHlsZWQtc2VsZWN0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBmbG9hdDpyaWdodDtcbiAgICB9XG4gIH1cbiAgXG4gIC5zdWJtaXQge1xuICAgIGNsZWFyOmJvdGg7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAgICAgcGFkZGluZzouMjVlbSAuNWVtO1xuICAgIH1cbiAgfVxuICBcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgZm9ybSB7XG4gICAgICAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBmb250LXNpemU6MS4wNjI1ZW07XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgZm9udC1zaXplOjEuMTI1ZW07XG4gIH1cbn1cblxuXG4vLyBsb2FkaW5nXG4uZmlsdGVyLXRhcmdldCB7XG4gICYubG9hZGluZyB7XG4gICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjM1cyk7XG4gICAgQGluY2x1ZGUgZmFkZUluOyBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3BhY2l0eTowO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6J0xvYWRpbmcuLi4nO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDowO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGNvbG9yOiM0MzQzNDM7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZToxLjI1ZW07XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgICAgIHotaW5kZXg6OTtcbiAgICAgIG9wYWNpdHk6MTtcbiAgICB9XG4gIH1cbiAgJi5sb2FkZWQge1xuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gICAgICBAaW5jbHVkZSBzbGlkZUluVXA7XG4gICAgfVxuICB9XG59XG5cbi8vIHJlbW92ZSBzdWJtaXQgd2hlbiBqYXZhc2NyaXB0IGlzIGVuYWJsZWRcbi5qcyB7XG4gIC5maWx0ZXJzIHtcbiAgICBzZWxlY3Qge1xuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnN1Ym1pdCB7XG4gICAgICBkaXNwbGF5Om5vbmUgXG4gICAgfVxuICB9XG59IiwiLnJlbGF0ZWQtZmlsbXMge1xuICBtYXJnaW46JHYtcmh5dGhtKjIgMDtcbiAgaW1nIHtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMSBvZiAyKTtcbiAgICAgIG1hcmdpbi1ib3R0b206Z3V0dGVyKCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgbGkge1xuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDEuMzMpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTpndXR0ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBsaSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi40IG9mIDEyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIuZW1haWwtc2lnbnVwLWZvcm0ge1xuICBpbnB1dCwgYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG4gICAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG07XG4gIH1cbiAgLmVtYWlsLWZpZWxkIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBib3JkZXI6MXB4IHNvbGlkICRncmF5O1xuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC56aXAtY29kZS1maWVsZCB7XG4gICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgIHdpZHRoOjEwMCU7XG4gICAgIGJvcmRlcjoxcHggc29saWQgJGdyYXk7XG4gICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbiAgLm5vdGUge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICBmb250LXNpemU6Ljg1ZW07XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgfVxuICBidXR0b25bdHlwZT0nc3VibWl0J10ge1xuICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICBAaW5jbHVkZSBidXR0b24oJG5hdnksIHdoaXRlKTtcbiAgICBAaW5jbHVkZSBhcnJvdy1idXR0b24od2hpdGUpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIHdpZHRoOjllbTtcbiAgICB6LWluZGV4OjI7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOmRhcmtlbigkbmF2eSwgNSUpO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIHotaW5kZXg6LTE7XG4gICAgICBAaW5jbHVkZSBsb25nLXNoYWRvdyhib3gsICRuYXZ5LCAyMDAsIGZhbHNlLCBmYWxzZSwgcmlnaHQpO1xuICAgICAgb3BhY2l0eTouMzU7XG4gICAgfVxuICB9XG59IiwiLy8gSG9tZSBQYWdlIEhlcm8gQ29tcG9uZW50XG4uaG9tZXBhZ2UtaGVyby1pdGVtIHtcbiAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIC8vIGFsbCBjb250ZW50IGluc2lkZSBpcyBkeW5hbWljLiB0aGVyZSBpcyBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXB0eVxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgaW1nIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgJi5ibGFja0FuZFdoaXRlIHtcbiAgICAgIC13ZWJraXQtZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICAgICAgICAgICAgZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICB9XG4gIH1cbiAgLnRpdGxlIHtcbiAgICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgICBiYWNrZ3JvdW5kOiNhYzBiMGU7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50O1xuICAgIC56ZXRhIHtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIH1cbiAgICAmLnJpZ2h0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5sZWZ0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5hbHBoYSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgICBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIGZvbnQtc2l6ZToyZW07XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICBsaW5lLWhlaWdodDoxLjI7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLndhdGNoIHtcbiAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIC4wNjI1ZW0sIHdoaXRlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgIEBpbmNsdWRlIGFycm93LWJ1dHRvbih3aGl0ZSk7XG4gICAgJi56ZXRhIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOjFlbTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC41KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgLnRpdGxlIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNCk7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIGJvdHRvbToxNSU7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAkdi1yaHl0aG0qMjtcbiAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICAgIGxlZnQ6aW5oZXJpdDtcbiAgICAgIH1cbiAgICAgIC5hbHBoYSB7XG4gICAgICAgIGZvbnQtc2l6ZTozZW07XG4gICAgICB9XG4gICAgICAqIHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6MztcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC4yKTtcbiAgICAgICAgfVxuICAgICAgICB6LWluZGV4OjE7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYShibGFjaywgLjYpO1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOigjZDkwMDAyKTtcbiAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIH1cbiAgICAgICAgei1pbmRleDoyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn0iLCIvLyBkZWZhdWx0IHBhZ2luYXRpb25cbi5wYWdpbmF0aW9uIHtcbiAgbWFyZ2luOiR2LXJoeXRobSoyIDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICAubG9hZC1tb3JlIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICBtYXJnaW46JHYtcmh5dGhtKjMgMDtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gYWpheCBwYWdpbmF0aW9uXG4uanMge1xuICAucGFnaW5hdGlvbiB7XG4gICAgLmxvYWQtbW9yZSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbigkcmVkLCB3aGl0ZSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiRjcmltc29uO1xuICAgICAgfVxuICAgIH1cbiAgICAucGFnZS1udW1iZXJzIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm5vLXJlc3VsdHMge1xuICBmb250LXdlaWdodDo3MDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBmb250LXdlaWdodDoxLjI1ZW07XG4gIHBhZGRpbmc6JHYtcmh5dGhtO1xuICBjb2xvcjojNDM0MzQzO1xuICAmLmVycm9yIHtcbiAgICBjb2xvcjokcmVkO1xuICAgIGIge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLmFwcGVuZGVkLWl0ZW0ge1xuICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICBAaW5jbHVkZSBzbGlkZUluVXA7XG59XG4iLCIuZmlsbS1saXN0aW5ncyB7XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH0gICAgXG4gICAgfVxuICB9XG4gIC5pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEuNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDYgZmlyc3QpO1xuICAgIH0gICAgXG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIC56ZXRhIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS80O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICAucGFydHMge1xuICAgICAgY29sb3I6JGdyYXk7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICBhIHtcbiAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDonfCc7XG4gICAgICAgICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OjQwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6LjQzNzVlbTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDouMzEyNWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH1cbiAgICB9ICBcbiAgfVxufSIsIi8vIGZpbG0gRGV0YWlsIEhlcm8gQ29tcG9uZW50XG4uZmlsbS1kZXRhaWwtaGVyby1pdGVtIHtcbiAgbWFyZ2luOjA7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG4gIGltZyB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICB9XG4gIC50aXRsZSB7XG4gICAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG0gMWVtICR2LXJoeXRobTtcbiAgICBiYWNrZ3JvdW5kOiNhYzBiMGU7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50O1xuICAgICYucmlnaHQge1xuICAgICAgbWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAmLmxlZnQge1xuICAgICAgbWFyZ2luLXJpZ2h0OjAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmFscGhhIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSm9zZWZpbiBTYW5zJywgc2Fucy1zZXJpZjtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgZm9udC1zaXplOjJlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIGxpbmUtaGVpZ2h0OjEuMjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZy10b3A6LjI1ZW07XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnpldGEge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIG1hcmdpbi1ib3R0b206LjVlbTtcbiAgICB9XG4gICAgLnVuZGVybGluZSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGZvbnQtc2l6ZTo0dnc7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgZm9udC1zaXplOjEuNWVtO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIC56ZXRhIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbToxLjVlbTtcbiAgICAgIH1cbiAgICAgIC51bmRlcmxpbmUge1xuICAgICAgICBtYXJnaW4tdG9wOi41ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm92ZXJsYXkge1xuICAgIGZvbnQtc2l6ZTozdnc7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBmb250LXNpemU6aW5oZXJpdDtcbiAgICB9XG4gIH1cbiAgLndhdGNoLWxpbmsge1xuICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBmb250LXNpemU6M3Z3O1xuICAgIC5hbHBoYSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgICAgLnRpdGxlLWNvcHkge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICB3aWR0aDpjYWxjKDEwMCUgLSAyZW0pO1xuICAgICAgICBwYWRkaW5nLXRvcDouMTI1ZW07XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICBjb250ZW50OicnO1xuICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTowO1xuICAgICAgICAgIGxlZnQ6MDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgICAgIGhlaWdodDoxcHg7XG4gICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKDApO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnBsYXktaWNvbiB7XG4gICAgICAgIG1heC1oZWlnaHQ6MS4yNWVtO1xuICAgICAgICBtYXgtd2lkdGg6MS4yNWVtO1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgZmxvYXQ6bGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0Oi41ZW07XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICAudGl0bGUtY29weSB7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBmb250LXNpemU6aW5oZXJpdDtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgLnRpdGxlIHtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgYm90dG9tOjE1JTtcbiAgICAgIHBhZGRpbmc6JHYtcmh5dGhtICR2LXJoeXRobSoxLjI1O1xuICAgICAgYmFja2dyb3VuZDpub25lO1xuICAgICAgJi5sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUpO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6LjI1ZW07XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUgbGFzdCk7XG4gICAgICAgIHJpZ2h0OjA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6LjI1ZW07XG4gICAgICB9XG4gICAgICAuYWxwaGEge1xuICAgICAgICBmb250LXNpemU6M2VtO1xuICAgICAgfVxuICAgICAgKiB7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OjM7XG4gICAgICB9XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDowO1xuICAgICAgICBAc3VwcG9ydHMobWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5KSB7XG4gICAgICAgICAgYmFja2dyb3VuZDpyZ2JhKHdoaXRlLCAuMik7XG4gICAgICAgIH1cbiAgICAgICAgei1pbmRleDoxO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOnJnYmEoYmxhY2ssIC42KTtcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDowO1xuICAgICAgICBAc3VwcG9ydHMobWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5KSB7XG4gICAgICAgICAgYmFja2dyb3VuZDooI2Q5MDAwMik7XG4gICAgICAgICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICAgICAgICB9XG4gICAgICAgIHotaW5kZXg6MjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgLnRpdGxlIHtcbiAgICAgICYubGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSk7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgIH1cbiAgICAgICYucmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuNzUgbGFzdCk7XG4gICAgICAgIHJpZ2h0OjA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIC50aXRsZSB7XG4gICAgICAmLmxlZnQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUpO1xuICAgICAgfVxuICAgICAgJi5yaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNSBsYXN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gc3BhY2luZyBhZGp1c3RtZW50cyBkZXBlbmRpbmcgb24gcHJlc2VuY2Ugb2YgY29udGVudFxuICAud2F0Y2gtbGluayAgKyAuemV0YSB7XG4gICAgbWFyZ2luLXRvcDoxLjVlbTtcbiAgfVxuICAudGl0bGUtY29weSAgKyAuemV0YSB7XG4gICAgbWFyZ2luLXRvcDoxLjVlbTtcbiAgfVxuICAuemV0YSArIC53YXRjaC1saW5rIHtcbiAgICAuYWxwaGEge1xuICAgICAgcGFkZGluZy10b3A6MDtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vIGJhc2Ugc3R5bGluZyBmb3IgZmlsbSBkZXRhaWwgbmF2IGZvciB0YWJzIGFuZCBjb3ZlIGxpbmtzXG4uZmlsbS1zdWItbmF2IHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIGJhY2tncm91bmQ6JGJsdWU7XG4gIGNvbG9yOndoaXRlO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zcywgZWFzZS1pbi1vdXQpO1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgYSB7XG4gICAgQGluY2x1ZGUgbGluay1yZXNldDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICAgIH1cbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICB9XG59XG4vLyBoaWRlIGphdmFzY3JpcHQgZGVwZW5kZW50IHBhcnRzXG4uZmlsbS1wYXJ0cywgLnRhYi1tb2JpbGUtdG9nZ2xlICB7XG4gIGRpc3BsYXk6bm9uZTtcbn1cblxuLy8gZGVza3RvcCBsYXlvdXQgZm9yIGZpbG0gc3ViIG5hdmlnYXRpb25zXG4uZmlsbS1wYXJ0cyB7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDMuNSBsYXN0KVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KVxuICB9XG59XG5cbi5pbmZvLXRhYnMge1xuICAudGFiLWxpbmsge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjVzLCBlYXNlLWluLW91dCk7XG4gICAgcGFkZGluZzouNTYyNWVtIDFlbTtcbiAgICB3aWR0aDoxMDAlO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDokZGFya0JsdWU7XG4gICAgfVxuICAgICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6JGRhcmtCbHVlO1xuICAgICAgY3Vyc29yOmRlZmF1bHQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIC50YWItbGlzdCB7XG4gICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGEge1xuICAgICAgICAgIHBhZGRpbmc6MS4zZW0gMS41ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig4LjUgZmlyc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOSBmaXJzdCk7XG4gIH1cbn1cblxuLy8gdGFiIGNvbnRlbnQgZGVmYXVsdFxuLnRhYi1wYW5lbCB7XG4gIC50YWItcGFuZWwtdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206LjI1ZW07XG4gIH1cbiAgLnBhcnQtY29udGVudCB7XG4gICAgbWFyZ2luLXRvcDozZW07XG4gIH1cblxuICAuYmlvIHtcbiAgICBmaWd1cmUge1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICBzcGFuIHtcbiAgICAgICAgaGVpZ2h0Ojc1dnc7XG4gICAgICAgIHdpZHRoOjc1dnc7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOjUwJTtcbiAgICAgIH1cbiAgICAgIGltZyB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgb2JqZWN0LWZpdDpjb3ZlcjtcbiAgICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIGZpZ3VyZSB7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIHdpZHRoOjEwZW07XG4gICAgICAgICAgaGVpZ2h0OjEwZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBmaWd1cmUsIC5iaW8tY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgICAgZmlndXJlIHtcbiAgICAgICAgd2lkdGg6MzAlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp0b3A7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIHdpZHRoOjEyLjVlbTtcbiAgICAgICAgICBoZWlnaHQ6MTIuNWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuYmlvLWNvbnRlbnQge1xuICAgICAgICB3aWR0aDo2NSU7XG4gICAgICB9XG4gICAgICBAc3VwcG9ydHMoZGlzcGxheTpncmlkKSB7XG4gICAgICAgIGZpZ3VyZSwgLmJpby1jb250ZW50IHtcbiAgICAgICAgICB3aWR0aDphdXRvO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOmluaGVyaXQ7XG4gICAgICAgIH1cbiAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OmNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGlzcGxheTpncmlkO1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIuNWZyIDRmcjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBmaWd1cmUge1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICB3aWR0aDoxNWVtO1xuICAgICAgICAgIGhlaWdodDoxNWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgZmlndXJlIHtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6MjBlbTtcbiAgICAgICAgICBoZWlnaHQ6MjBlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wZGYtbGlua3Mge1xuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1yaWdodDouNWVtO1xuICAgIH1cbiAgICAucGFydC1kb3dubG9hZCB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICY6bm90KDpsYXN0LW9mLXR5cGUpIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDonfCc7XG4gICAgICAgICAgY29sb3I6JG1lZEdyYXk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC40Mzc1ZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAuMzEyNWVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuc2luZ2xlLWRvd25sb2FkIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBAaW5jbHVkZSBzcGFuKDMpO1xuICAgIGZsb2F0Om5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig2KTtcbiAgICBmbG9hdDpub25lO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIG1heC13aWR0aDo2NS4yNWVtO1xuICB9XG59XG5cbi5yZWxhdGVkLWZlYXR1cmUtbGlzdCB7XG4gIC5maWx0ZXJzIHtcbiAgICAubGFiZWwge1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0Oi00LjE4NzVlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9ybSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmaWVsZHNldCBsYWJlbCB7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czowO1xuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NS4zMTI1ZW0pIHtcbiAgICAgICAgICB3aWR0aDo3LjVlbTtcbiAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czoxLjI1ZW0gMCAwIDEuMjVlbTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MS4xNWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOjAgMS4yNWVtIDEuMjVlbSAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjEuMTVlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgd2lkdGg6MTBlbTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAgICAgICBmb250LXNpemU6NC44NXZ3O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIGVuaGFuY2VkIHZlcnNpb25zIG9mIGZpbG0gc3VibmF2cyBhbmQgdGFiIGNvbnRlbnRcbi5qcyB7XG4gIC8vIGFsbCBjb3ZlIHN0dWZmIGlzIGphdmFzY3JpcHQgZGVwZW5kZW50IHNvIG9ubHkgc2hvdyBpdCBpZlxuICAvLyBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAuZmlsbS1wYXJ0cyAge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gIH1cbiAgLnBhcnQtc2VsZWN0aW9uIHtcbiAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBtYXJnaW46LjI1ZW0gLjNlbTtcbiAgICAuaW5zdHJ1Y3Rpb24ge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgIH1cbiAgICBidXR0b24ge1xuICAgICAgaGVpZ2h0OjMuODE3NWVtO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgei1pbmRleDoyO1xuICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgIGJvcmRlcjouMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgcGFkZGluZzouMjVlbSAxZW07XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgY29sb3I6JGNoYXJjb2FsO1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAucGFydCB7XG4gICAgICAgIHdpZHRoOmNhbGMoMTAwJSAtIDFlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICBmb250LXNpemU6Ljc3N2VtO1xuICAgICAgICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdmcge1xuICAgICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgbWF4LXdpZHRoOjFlbTtcbiAgICAgICAgcmlnaHQ6MWVtO1xuICAgICAgICBmaWxsOiRtZWRHcmF5O1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjUwJSAyMi41JTtcbiAgICAgIH1cbiAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWxtLXBhcnRzLWxhcmdlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgIHBhZGRpbmc6LjI1ZW0gLjM1ZW07XG4gICAgd2lkdGg6MTAwJTtcbiAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICByaWdodDowO1xuICAgIHRvcDo0LjA1ZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6MTtcbiAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgbWF4LWhlaWdodDowO1xuICAgICYub3BlbiB7XG4gICAgICBtYXgtaGVpZ2h0OjIwZW07XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgfVxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICBwYWRkaW5nOi4yNWVtIDFlbTtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBjb2xvcjokY2hhcmNvYWw7XG4gICAgICBib3JkZXI6LjA2MjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBmb250LXNpemU6Ljc3N2VtO1xuICAgICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiRkb3ZlO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiRkb3ZlO1xuICAgICAgICBjdXJzb3I6ZGVmYXVsdDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGkge1xuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICBhIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOm5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICB0b3A6NC4zNWVtO1xuICAgICAgcGFkZGluZzouMjVlbSAuMzVlbTtcbiAgICB9XG4gIH1cbiAgLnRhYi1tb2JpbGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYnV0dG9uKHdoaXRlLCAuMDYyNWVtLCB3aGl0ZSk7XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGhlaWdodDozLjgxNzVlbTtcbiAgICB3aWR0aDpjYWxjKDEwMCUgLSAuNjVlbSk7XG4gICAgbWFyZ2luOi4zZW07XG4gICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJi5tdXRpcGxlLWVwaXNvZGVzIHtcbiAgICAgIG1hcmdpbjowIC4zZW0gLjNlbSAuM2VtO1xuXG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6MS41ZW07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogLjE1ZW07XG4gICAgfVxuICAgICY6aG92ZXIsICY6Zm9jdXMsICY6YWN0aXZlIHtcbiAgICAgIGJvcmRlcjouMDYyNWVtIHNvbGlkIC4wNjI1ZW07XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgbWF4LWhlaWdodDoxZW07XG4gICAgICBtYXgtd2lkdGg6MWVtO1xuICAgICAgcmlnaHQ6MWVtO1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46NTAlIDIyLjUlO1xuICAgIH1cbiAgICAmLmNsb3NlLXN0YXRlIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG5cbiAgLmluZm8tdGFicyB7XG4gICAgLnRhYi1saXN0Lm1lbnUge1xuICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXgtaGVpZ2h0OjA7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICYub3BlbiB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDoyMGVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDppbmhlcml0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyB0YWIgY29udGVudFxuICAudGFiLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgICAmLmRlZmF1bHQge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBAaW5jbHVkZSBmYWRlSW47XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbWF4LXdpZHRoOjY1LjI1ZW07XG4gICAgfVxuICB9XG59XG5cblxuLmZpbG0tc2hvcC1saW5rcyAge1xuICBtYXJnaW46JHYtcmh5dGhtKjIuNSAwO1xuICBjbGVhcjpib3RoO1xuICBpbWcge1xuICAgIG1heC13aWR0aDo2LjI1ZW07XG4gIH1cbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OjFlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmZpbG0tZnVuZGVycyB7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjIuNTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICoge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbiAgYSB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIH1cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6MTBlbTtcbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206MWVtO1xuICAgICAgJjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gIH1cbn1cblxuLmZpbG0tdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOjA7XG4gIC5wYXNzcG9ydC1pY29uIHtcbiAgICBtYXgtd2lkdGg6MS4xNWVtO1xuICAgIG1heC1oZWlnaHQ6MS4xNWVtO1xuICAgIHBhZGRpbmctcmlnaHQ6LjI1ZW07XG4gIH1cbn1cblxuLnByZW1pZXJlLWRhdGUge1xuICBjb2xvcjokY29ybmZsb3dlcjtcbn1cblxuLnRhZ2xpbmUge1xuICBmb250LXdlaWdodDo3MDA7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZTogMS4yNWVtO1xuICBjb2xvcjokbWVkR3JheTtcbiAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xufSIsIi5mZWF0dXJlLWxpc3RpbmdzIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi5mZWF0dXJlLWxpc3Qge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbGkge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjY2KTtcbiAgICAgICY6bnRoLWNoaWxkKDNuKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNSl7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNS4zMik7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDYpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDcpIHtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOCkge1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6Z3V0dGVyKCk7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDkpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1LjMyKTtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEwKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDExKSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxMikge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxMykge1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNCkge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTUpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1LjMyKTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0KTtcbiAgICAgICY6bnRoLWNoaWxkKDNuKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtY2hpbGQoNSl7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oOCk7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDYpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDcpIHtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOCkge1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6Z3V0dGVyKCk7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDkpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEwKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDExKSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxMikge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxMykge1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNCkge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTUpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5mZWF0dXJlcy1wYWdpbmF0ZWQge1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIuNjYpO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQpO1xuICAgIH1cbiAgfVxufSIsIlxuLmZlYXR1cmUge1xuICAub3ZlcmxpbmUge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIC56ZXRhIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICAgICsgaDQge1xuICAgICAgbWFyZ2luLXRvcDotLjY1ZW07XG4gICAgfVxuICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgIG1heC13aWR0aDo0NWVtO1xuICAgICAgbWFyZ2luOjAgYXV0bzsgICAgICBcbiAgICB9XG4gICAgLmludHJvIHtcbiAgICAgIG1hcmdpbjokdi1yaHl0aG0vMS41IDAgMCAwO1xuICAgICAgZm9udC1zaXplOjEuMjVlbTtcbiAgICB9XG4gICAgLmJ5bGluZSB7XG4gICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgICAgIGNvbG9yOiRncmF5O1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgJiArIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS8yO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobSoxLjI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobSoxLjU7XG4gICAgICB9XG4gICAgfVxuICAgIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAvLyBoaWRlIGZvciBub25lIGphdmFzY3JpcHQgY3BhYmxlIGJyb3dzZXJzXG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICBjb2xvcjokZ3JheTtcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOi4wMTVlbTtcbiAgICAgIH1cbiAgICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgICAgICAgaGVpZ2h0OjEuOTVlbTtcbiAgICAgIH1cbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6MDtcbiAgICAgICAgbWFyZ2luOjA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6MS45NWVtO1xuICAgICAgICBoZWlnaHQ6MS45NWVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6LjFlbTtcbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDouMjVlbTtcbiAgICAgICAgfVxuICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiNlYWE3MDA7XG4gICAgICAgICAgcGFkZGluZzoxZW07XG4gICAgICAgICAgZm9udC13ZWlnaHQ6NDAwO1xuICAgICAgICAgIGZvbnQtc2l6ZToxZW07XG4gICAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOi45NWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6MTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgcGFkZGluZzowO1xuICAgICAgICB9XG4gICAgICAgIGEsIGJ1dHRvbiB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgICBwYWRkaW5nOi4xZW07XG4gICAgICAgIH1cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBvdmVyZmxvdzp2aXNpYmxlO1xuICAgICAgICAgIC5jb2xvciB7XG4gICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuZmFjZWJvb2sge1xuICAgICAgICAgICAgZmlsbDojNDA3M2I3O1xuICAgICAgICAgIH1cbiAgICAgICAgICAudHdpdHRlciB7XG4gICAgICAgICAgICBmaWxsOiMyOGE5ZTA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5tYWlsdG8ge1xuICAgICAgICAgICAgZmlsbDojOGRiNzI5O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY29weSB7XG4gICAgICAgICAgICBmaWxsOiNlYWE3MDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAuaW50cm8tY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDppbmhlcml0O1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgZmlyc3QpO1xuICAgICAgfVxuICAgICAgLmFkLWJsb2NrIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAuaW50cm8tY29udGVudCB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oOC41IGZpcnN0KTtcbiAgICAgIH1cbiAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDMuNSBsYXN0KTtcbiAgICAgIH0gICAgICBcbiAgICB9XG4gIH1cbiAgLy8gdGV4dCBibG9jayBzdHlsaW5nXG4gIC5mZWF0dXJlLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDo0NC41MzEyNWVtO1xuICAgIG1hcmdpbjowIGF1dG87XG4gIH1cbiAgLy8gbWVkaWEgZWxlbWVudCBzdHVmZnMgZm9yIGZlYXR1cmVzIG9ubHlcbiAgLmNlbnRlciB7XG4gICAgJi5sYXJnZS1tZWRpYSB7XG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3LjgxMjVlbSkge1xuICAgICAgICBpbWcge1xuICAgICAgICAgIG1heC13aWR0aDppbmhlcml0O1xuICAgICAgICAgIHdpZHRoOjU3LjgxMjVlbTtcbiAgICAgICAgICBtYXJnaW4tbGVmdDotNi42NDA2MjVlbTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBmdWxsIHdpZHRoIGltYWdlIGxlYXZlIGhlcmVcbiAgICAgICAgICAvLyB3aWR0aDogMTAwdnc7XG4gICAgICAgICAgLy8gbWFyZ2luLWxlZnQ6Y2FsYygtNTB2dyArIDIyLjI2NTYyNWVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgJi5tZWRpdW0tbWVkaWEge1xuICAgICAgICBtYXgtd2lkdGg6aW5oZXJpdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0Oi01ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5sZWZ0IHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICYubWVkaXVtLW1lZGlhIHtcbiAgICAgICAgbWF4LXdpZHRoOmluaGVyaXQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0Oi01ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5qcyB7XG4gIC5mZWF0dXJlIHtcbiAgICAub3ZlcmxpbmUge1xuICAgICAgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5jb3B5LXVybC1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgdG9wOi02ZW07XG4gICAgICAgIHdpZHRoOjE1ZW07XG4gICAgICAgIGxlZnQ6LTEwZW07XG4gICAgICAgIG9wYWNpdHk6MDtcbiAgICAgICAgei1pbmRleDotMTtcbiAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICBvcGFjaXR5OjE7XG4gICAgICAgICAgei1pbmRleDoxO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OjFlbTtcbiAgICAgICAgICB0b3A6LjY1ZW07XG4gICAgICAgICAgd2lkdGg6MS41ZW07XG4gICAgICAgICAgaGVpZ2h0OjEuNWVtO1xuICAgICAgICAgIHBhZGRpbmc6MDtcbiAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6MS4yNGVtO1xuICAgICAgICAgICAgaGVpZ2h0OjEuMjRlbTtcbiAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIHdpZHRoOjI0ZW07XG4gICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDdlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9ICBcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gcGFkZGluZyBhbmQgbWFyZ2luIGFkanVzdG1lbnRzXG4gICAgLmFkLWJsb2NrIHtcbiAgICAgICYuZGVza3RvcCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIHBhZGRpbmc6MCAwICR2LXJoeXRobSAwO1xuICAgICAgICAgIG1hcmdpbi10b3A6LSR2LXJoeXRobTsgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLnNlYXJjaC1yZXN1bHRzIHtcbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfSAgICBcbiAgICB9XG4gIH1cbiAgLmltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMS41IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMi41IGZpcnN0KTtcbiAgICB9ICAgIFxuICB9XG4gIC5kZXNjcmlwdGlvbiB7XG4gICAgaDMge1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgIH1cbiAgICBwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDYuNSk7XG4gICAgICBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICB9XG4gICAgfSAgXG4gIH1cbn0iLCIvLyBlbnN1cmUgbW9kYWwgaXMgbm90IHNob3duIHdoZW4ganMgaXMgbm90IHByZXNlbnRcbi5uZXdzbGV0dGVyLWRpYWxvZyB7XG4gIGRpc3BsYXk6bm9uZTtcbn1cblxuLy8gc2hvdyBpdCB3aGVuIGl0IGlzXG4uanMgLm5ld3NsZXR0ZXItZGlhbG9nIHtcbiAgZGlzcGxheTpibG9jaztcbn0gXG5cbi5uZXdzbGV0dGVyLWRpYWxvZyB7XG4gIGJhY2tncm91bmQtY29sb3I6cmdiYShibGFjaywgLjg1KTtcbiAgY29sb3I6d2hpdGU7XG4gIHBvc2l0aW9uOmZpeGVkO1xuICBoZWlnaHQ6MTAwdmg7XG4gIHdpZHRoOjEwMCU7XG4gIHotaW5kZXg6MTAwMDI7XG4gIHRvcDowO1xuICBsZWZ0OjA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OicnO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBoZWlnaHQ6MTAwdmg7XG4gICAgYmFja2dyb3VuZDp1cmwoJy4uL2ltYWdlcy9iZy10cmlhbmdsZS1mb290ZXIucG5nJyk7XG4gICAgYmFja2dyb3VuZC1zaXplOjExLjc1ZW0gMTEuMTI1ZW07XG4gICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6NTA7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDokc2NyZWVuLW1kLW1pbiApIGFuZCAobWluLWhlaWdodDozNy41ZW0gKSB7XG4gICAgICBtYXJnaW4tdG9wOjEyLjVlbTtcbiAgICB9XG4gIH1cbiAgJi5kaXNtaXNzZWQge1xuICAgIEBpbmNsdWRlIGFuaW1hdGVkKC4zNXMpO1xuICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjsgICAgXG4gIH1cbiAgJlthcmlhLWhpZGRlbj0ndHJ1ZSddIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgZGl2W3JvbGU9J2RpYWxvZyddIHtcbiAgICBvdmVyZmxvdy15OnNjcm9sbDtcbiAgICBtYXgtaGVpZ2h0Ojgwdmg7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6MzcuNWVtKSB7XG4gICAgICBtYXgtaGVpZ2h0OmluaGVyaXQ7XG4gICAgICBvdmVyZmxvdzp2aXNpYmxlO1xuICAgIH1cbiAgfVxuICBkaXZbcm9sZT0nZG9jdW1lbnQnXXtcbiAgICBtYXgtd2lkdGg6NTBlbTtcbiAgICBtYXJnaW46MWVtIGF1dG8gMCBhdXRvO1xuICAgIHdpZHRoOjk1JTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDokc2NyZWVuLW1kLW1pbiApIGFuZCAobWluLWhlaWdodDozNy41ZW0gKSB7XG4gICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICB0b3A6MTIuNXZoO1xuICAgIH1cbiAgfVxuICAuZ2FtbWEge1xuICAgIGNvbG9yOndoaXRlO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgZm9udC1zaXplOjIuMjVlbTtcbiAgICB9XG4gIH1cbiAgLmRpbXNpc3Mge1xuICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6MDtcbiAgICB0b3A6LTIuNWVtO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6MTAwJTtcbiAgICBzdmcge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIHdpZHRoOjJlbTtcbiAgICAgIGhlaWdodDoyZW07XG4gICAgICBmaWxsOndoaXRlO1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBzdmcge1xuICAgICAgICBmaWxsOiR5ZWxsb3c7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGgxIHtcbiAgICBtYXJnaW46MS41ZW0gMCAuNWVtIDA7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OjE7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBtYXJnaW4tdG9wOjJlbTtcbiAgICB9XG4gICAgLmxvZ28tdHlwZSB7XG4gICAgICBtYXgtd2lkdGg6MTNlbTtcbiAgICAgIG1heC1oZWlnaHQ6Ljk1ZW07XG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgZm9udC1zaXplOi43NWVtO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGZvbnQtc2l6ZToxLjIwZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgbWFyZ2luLXRvcDoxLjVlbTtcbiAgICBwYWRkaW5nLWJvdHRvbToxLjVlbTtcbiAgICBidXR0b25bdHlwZT0nc3VibWl0J10ge1xuICAgICAgcGFkZGluZy1yaWdodDoxLjVlbTtcbiAgICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgICAgIGNvbG9yOiRuYXZ5O1xuICAgICAgbWFyZ2luLXRvcDoxLjVlbTtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50Om5vbmU7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDpkYXJrZW4oJHllbGxvdywgNSUpO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDppbmhlcml0O1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDonJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAubm90ZSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgZm9udC1zaXplOjFlbTtcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGZvbnQtc2l6ZToxLjI1ZW07XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgLmVtYWlsLWZpZWxkLCAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgfVxuICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6NTUlO1xuICAgICAgfSAgICBcbiAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgIHdpZHRoOjQ0JTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MSU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8geGZpeGVkIHBvc2l0aW9uIHN0YXRlcyBmb3IgaGVhZGVyXG4jc3RpY2t5LWhlYWRlciB7XG4gIHdpZHRoOjEwMCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDBweCwwcHgsMHB4KTtcbiAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMHB4LDBweCwwcHgpO1xufVxuXG4uc3RpY2t5ICNzdGlja3ktaGVhZGVyIHtcbiAgdG9wOjA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgQGluY2x1ZGUgc2xpZGVJbkRvd247XG59XG5cbi5zaXRlLWhlYWRlcntcbiAgLy8gcmVzZXRzIGJyb3dzZXIgc3R5bGluZyBmb3IgYWxsIGxpc3RzIGluc2lkZSB0aGUgaGVhZGVyXG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICB9XG4gIC5zZWNvbmRhcnkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIGJhY2tncm91bmQ6JGRhcmtHcmF5O1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgIGNvbG9yOndoaXRlO1xuICAgICp7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgIC50aXRsZSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgLmhlYWRlci1zb2NpYWwge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgd2lkdGg6NzAlO1xuICAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIGZpbGw6YmxhY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBvZiA0IGZpcnN0KTtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDouNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgb2YgMTIgZmlyc3QpO1xuICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICB3aWR0aDphdXRvO1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItc3BvbnNvcnMge1xuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAtd2Via2l0LWJveC1wYWNrOmNlbnRlcjtcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOmNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OmNlbnRlcjtcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtd3JhcDp3cmFwO1xuICAgICAgICAgICAgZmxleC13cmFwOndyYXA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OjE7ICAgICAgICAgICAgICAgIFxuICAgICAgfVxuICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46LjI1ZW0gLjVlbTtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LXBhY2s6Y2VudGVyO1xuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6Y2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgICAudGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDozLjEyNWVtO1xuICAgICAgICBtYXgtd2lkdGg6Ny4zNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgNCBsYXN0KTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNyBvZiAxMiBsYXN0KTtcbiAgICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgICAtd2Via2l0LWJveC1wYWNrOmVuZDtcbiAgICAgICAgICAgIC1tcy1mbGV4LXBhY2s6ZW5kO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDpmbGV4LWVuZDtcbiAgICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgIH1cbiAgICAgICAgLnNwb25zb3Ige1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OjMuMTI1ZW07XG4gICAgICAgICAgbWF4LXdpZHRoOjguMzc1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAuZ3JpZCB7XG4gICAgICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6JGJsdWU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgei1pbmRleDoxMDtcbiAgICAuZ3JpZCB7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB9XG4gICAgLmhlYWRlci1sb2dvIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjowO1xuICAgICAgbGluZS1oZWlnaHQ6MDtcbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBwYWRkaW5nOi40NWVtO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIG1heC1oZWlnaHQ6LjVlbTtcbiAgICAgICAgICAudHlwZSB7XG4gICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6Ljc1ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubG9nby10eXBlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6MTAwJTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHNwYW4oMS41IGZpcnN0KTtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyBmaXJzdCk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgcGFkZGluZy10b3A6LjJlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBwYWRkaW5nLXRvcDowO1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgICAgICBhIHtcbiAgICAgICAgICBwYWRkaW5nOi41NWVtIC40NWVtIC40NWVtIC40NWVtO1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gYmFzZSBzdHlsaW5nIGZvciBtYWluIG5hdmlnYXRpb25cbiAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgdG9wOjA7XG4gICAgICByaWdodDo1JTtcbiAgICAgIHdpZHRoOjIuNzVlbTtcbiAgICAgIGhlaWdodDoyLjc1ZW07XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBwYWRkaW5nOi41ZW07XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOjEuNWVtO1xuICAgICAgfVxuICAgICAgLm9uZSwgLnR3bywgLnRocmVlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlO1xuICAgICAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICB9XG4gICAgICAmLmNsb3NlLXN0YXRlIHtcbiAgICAgICAgLm9uZSB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnR3byB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgIH1cbiAgICAgICAgLnRocmVlIHtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZVooNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICB3aWR0aDozLjNlbTtcbiAgICAgICAgaGVpZ2h0OjMuM2VtO1xuICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICBjbGVhcjpib3RoO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDggbGFzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgICAgZm9udC1mYW1pbHk6ICdKb3NlZmluIFNhbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzLjc1IG9mIDYpO1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1IG9mIDgpO1xuICAgICAgfVxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6MS4xZW0gMWVtIC45ZW0gMWVtO1xuICAgICAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0Oi4zMzMzZW07XG4gICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICAgICAgbGVmdDowO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciwgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiR5ZWxsb3c7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgICAgICAgZmxleC1ncm93OjE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC5zZWFyY2gge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIC5zZWFyY2gtaW5wdXQgIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6Mi4yNWVtO1xuICAgICAgICBwYWRkaW5nOjAgMCAwIDFlbTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JheTtcbiAgICAgICAgcGFkZGluZy1yaWdodDoyLjVlbTtcbiAgICAgIH1cbiAgICAgIC5zZWFyY2gtYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgdG9wOi4xNWVtO1xuICAgICAgICByaWdodDouNDVlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDoyZW07XG4gICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgcGFkZGluZzouMTVlbTtcbiAgICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEuNSBvZiA2KTtcbiAgICAgICAgbWFyZ2luLXRvcDouN2VtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIG9mIDgpO1xuICAgICAgfSBcbiAgICB9XG4gIH1cbiAgLnNob3Age1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgcGFkZGluZzouNWVtIC41ZW0gLjVlbSAxZW07XG4gICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgc3ZnIHtcbiAgICAgIGhlaWdodDoyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIHBhdGgge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIC4yNXMsIGVhc2UtaW4tb3V0KVxuICAgICAgfVxuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIGZpbGw6JHllbGxvdztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oLjc1IG9mIDYgbGFzdCk7XG4gICAgICBib3JkZXI6bm9uZTtcbiAgICAgIHBhZGRpbmc6MDtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBtYXJnaW4tdG9wOi43NWVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMSBvZiA4IGxhc3QpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gZW5oYW5jZWQgc3R5bGVzIGZvciBoZWFkZXIgKEphdmFTY3JpcHQgU3VjY2Vzcylcbi5qcyB7XG4gIC8vIHNob3cgbWFpbiBuYXYgdG9nZ2xlIHdpdGggSlNcbiAgLnNpdGUtaGVhZGVyIHtcbiAgICAucHJpbWFyeSB7XG4gICAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gaGlkaW5nIGFuZCBzaG93IG9mIGRyb3AgZG93biBtZW51IHdpdGggSlNcbiAgLmpzLWRyb3Bkb3duLW1lbnUge1xuICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXgtaGVpZ2h0OjA7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDppbmhlcml0O1xuICAgICAgfVxuICAgICYub3BlbiB7XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICBtYXgtaGVpZ2h0OjM1ZW07XG4gICAgfVxuICB9XG4gIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uLm9wZW4gKyAuaGVhZGVyLXNlYXJjaC5vcGVuIHtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgfVxufVxuXG4vLyBkbyBub3QgaGF2ZSBmaXhlZCBmdW5jdGlvbmFsaXR5IG9mIGxvZ2dlZCBpblxuLmNtcy1yZWFkeSB7XG4gIC5wcmltYXJ5IHtcbiAgICAmLmZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpdGUtZm9vdGVyIHtcbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIH1cbiAgLmNyZWRpdC1oZWFkaW5nIHtcbiAgICBmb250LXNpemU6MWVtO1xuICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICB9XG59XG5cbi5mb290ZXItbGlua3Mge1xuICBwYWRkaW5nOjAgMCAkdi1yaHl0aG0vMiAwO1xuICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLWZvb3Rlci5wbmcnKTtcbiAgYmFja2dyb3VuZC1zaXplOjExLjc1ZW0gMTEuMTI1ZW07XG4gIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBjb250ZW50OicnO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYmctYW1lcmljYW4tZmxhZy5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO1xuICAgIHBhZGRpbmctYm90dG9tOjYuNSU7XG4gICAgYmFja2dyb3VuZC1zaXplOmNvdmVyO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjM7XG4gIH1cbiAgYSB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgfVxuICB9XG4gIHVsIHtcbiAgICBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiRzY3JlZW4tamItbWluICkgYW5kIChvcmllbnRhdGlvbjpwb3J0cmFpdCkge1xuICAuZm9vdGVyLWxpbmtzIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbToxNSU7XG4gICAgfVxuICB9XG59XG5cbi5mb290ZXItbmF2aWdhdGlvbiB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgbWluLWhlaWdodDoxNWVtO1xuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDI7XG4gICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjtcbiAgICAgICAgICAgICAgY29sdW1uLWNvdW50OiAyO1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oNyBmaXJzdCk7XG4gICAgdWwge1xuICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDM7XG4gICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMztcbiAgICAgICAgICAgICAgY29sdW1uLWNvdW50OiAzO1xuICAgIH1cbiAgfVxufVxuLmZvb3Rlci1wcm9kdWN0aW9uLWJ5IHtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIC53Z2JoIHtcbiAgICBmaWxsOndoaXRlO1xuICAgIHdpZHRoOjZlbTtcbiAgICBtYXgtaGVpZ2h0OjNlbTtcbiAgfVxuICB1bCB7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDIuNSk7XG4gIH1cbn1cbi5mb290ZXItZnVuZGluZyB7XG4gIHVsIHtcbiAgICBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICB9XG4gIH1cbiAgY29sb3I6d2hpdGU7XG4gIC8vIC5jcGIge1xuICAvLyAgICoge1xuICAvLyAgICAgZmlsbDp3aGl0ZTtcbiAgLy8gICB9XG4gIC8vICAgd2lkdGg6N2VtO1xuICAvLyAgIG1heC1oZWlnaHQ6NGVtO1xuICAvLyB9XG4gIHN2ZyB7XG4gICAgd2lkdGg6MTJlbTtcbiAgICBtYXgtaGVpZ2h0OjEyZW07XG4gICAgKiB7XG4gICAgICBmaWxsOndoaXRlO1xuICAgIH1cbiAgfVxuICBhIHtcbiAgICAvLyB3aWR0aDoxMDAlO1xuICAgIC8vIGhlaWdodDoxMDAlO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gIH1cbn1cbi5mb290ZXItY29weXJpZ2h0IHtcbiAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICBzcGFuIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBwYWRkaW5nLXRvcDoyLjc1dnc7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgcGFkZGluZy10b3A6Mi45MjV2dztcbiAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICB9XG59XG4uZm9vdGVyLWxvZ28tdHlwZSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZTo0dnc7XG4gIGxpbmUtaGVpZ2h0OjEuMjc1O1xuICBzdmcge1xuICAgIGZpbGw6JG5hdnk7XG4gICAgbWF4LWhlaWdodDogMy44NzVlbTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOCBsYXN0KTtcbiAgICBmb250LXNpemU6My41dnc7XG4gIH1cbn0iLCIuY29ubmVjdC1zb2NpYWwge1xuICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLW5ld3NsZXR0ZXIucG5nJyk7XG4gIGJhY2tncm91bmQtc2l6ZToxMS43NWVtIDExLjEyNWVtO1xuICBjb2xvcjp3aGl0ZTtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMztcbiAgb3ZlcmZsb3cteDpoaWRkZW47XG4gIGgzIHtcbiAgICBjb2xvcjp3aGl0ZTtcbiAgfVxuICAuZW1haWwtc2lnbnVwIHtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICBwYWRkaW5nOiR2LXJoeXRobSAwO1xuICAgIGgzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206Ljc2OWVtO1xuICAgIH1cbiAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgIC5ub3RlIHtcbiAgICAgICAgLy8gZmxleCBib3ggb3ZlcmlkZSBmb3Igc291cmNlIG9yZGVyIGluIGNvbm5lY3Qgc2VjdGlvblxuICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyO1xuICAgICAgICAgICAgICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgIHdpZHRoOjgwJTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDcgZmlyc3QpO1xuICAgICAgaDMge1xuICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIH1cbiAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OjEwJTtcbiAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6MSU7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6MDtcbiAgICAgICAgICB3aWR0aDo0NSU7XG4gICAgICAgIH1cbiAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICAgICB3aWR0aDozMCU7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uW3R5cGU9J3N1Ym1pdCddIHtcbiAgICAgICAgICB3aWR0aDoyNCU7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLm5vdGUge1xuICAgICAgICAgIHdpZHRoOjc1JTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgIGJ1dHRvblt0eXBlPSdzdWJtaXQnXSB7XG4gICAgICAgICAgd2lkdGg6MTklOyBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuZm9vdGVyLXNvY2lhbC1saW5rcyB7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgcGFkZGluZzokdi1yaHl0aG0qMiAwO1xuICAgIGJhY2tncm91bmQ6JG5hdnk7XG4gICAgd2lkdGg6MTEwJTtcbiAgICBtYXJnaW4tbGVmdDotNSU7XG4gICAgLnNvY2lhbC1saXN0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIHdpZHRoOjcwJTtcbiAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICBhIHtcbiAgICAgICAgd2lkdGg6M2VtO1xuICAgICAgICBoZWlnaHQ6M2VtO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICBmaWxsOiRtdXN0YXJkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICBmaWxsOiR5ZWxsb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmhhc2h0YWcge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctbGVmdDo1LjYyNSU7XG4gICAgICBtYXJnaW4tbGVmdDppbmhlcml0O1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgcmlnaHQ6MTAwJTtcbiAgICAgICAgd2lkdGg6Y2FsYyg1LjI2MzE2JSAqIDIpO1xuICAgICAgfVxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjExLjI1JTtcbiAgICAgICAgYmFja2dyb3VuZDokbmF2eTtcbiAgICAgICAgdG9wOjA7XG4gICAgICAgIGxlZnQ6MTAwJTtcbiAgICAgIH1cbiAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgIHdpZHRoOjkwJTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6YXV0bztcbiAgICAgIH1cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6NS4yNjMxNiU7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1IGxhc3QpO1xuICAgICAgcGFkZGluZy1sZWZ0OjA7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6NTAlO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICB3aWR0aDogNCU7XG4gICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICAvLyBtYWdpY1xuICAgICAgICB3aWR0aDpjYWxjKCgxMDB2dyAtIDE0MDBweCkvMik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5ncmlkIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgZGlzcGxheTpmbGV4O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gbm8ganMgYWQgYmxvY2sgc2hvdyBub3RoaW5nXG4uYWQtYmxvY2sge1xuICBtYXgtaGVpZ2h0OjA7XG4gIHBhZGRpbmc6MDtcbiAgdmlzaWJpbGl0eTpoaWRkZW47XG4gIGxpbmUtaGVpZ2h0OjA7XG59XG4gXG4uanMge1xuICAuYWQtYmxvY2sge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgJi5vcGVuLmFkLXNpZGUtaW50ZXJpb3Ige1xuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgICYub3BlbiB7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAwICR2LXJoeXRobSoyO1xuICAgICAgbWF4LWhlaWdodDoyNWVtO1xuICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgei1pbmRleDppbmhlcml0O1xuICAgICAgbGluZS1oZWlnaHQ6aW5oZXJpdDtcbiAgICAgIC5hZCB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDowO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL2JnLWRlY28tY2lyY2xlLnBuZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6MThlbSAxOGVtO1xuICAgICAgICB6LWluZGV4Oi0yO1xuICAgICAgfVxuICAgICAgJjphZnRlciB7XG4gICAgICAgIHotaW5kZXg6LTE7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYSgkb3ZlcmxheSwgLjUpO1xuXG4gICAgICB9XG4gICAgICAmLmZvb3Rlci1hZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiR2LXJoeXRobSoxLjU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiR2LXJoeXRobSoxLjc1O1xuICAgICAgICBtYXJnaW4tYm90dG9tOjQuNWVtO1xuICAgICAgfVxuICAgIH1cbiAgICAuYWQge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICBkaXYge1xuICAgICAgICBjbGVhcjpib3RoOyAgXG4gICAgICB9XG4gICAgICBzcGFuLCBhIHtcbiAgICAgICAgZm9udC1zaXplOi43NWVtO1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgfVxuICAgICAgYSB7XG4gICAgICAgIGZsb2F0OnJpZ2h0O1xuICAgICAgICBjb2xvcjokYmx1ZTtcbiAgICAgIH0gXG4gICAgICBidXR0b24ge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIGJhY2tncm91bmQ6JGdyYXk7XG4gICAgICAgIHdpZHRoOjEuNWVtO1xuICAgICAgICBoZWlnaHQ6MS41ZW07XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6MS4yNWVtO1xuICAgICAgICByaWdodDowO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDo3NSU7XG4gICAgICAgICAgaGVpZ2h0Ojc1JTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICB3aWR0aDoyZW07XG4gICAgICAgICAgaGVpZ2h0OjJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2hvcC1hZCB7XG4gIGJhY2tncm91bmQ6d2hpdGU7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBwYWRkaW5nLXRvcDokdi1yaHl0aG0qMztcbiAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtKjM7XG4gIGEgIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAmLm1vYmlsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2FtZXhfc2hvcF9tb2JpbGUuanBnJyk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgICB3aWR0aDoyMGVtO1xuICAgICAgaGVpZ2h0OjYuMjVlbTtcbiAgICB9XG4gICAgJi5kZXNrdG9wIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYW1leF9zaG9wX2Rlc2t0b3AuanBnJyk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgICB3aWR0aDo3NWVtO1xuICAgICAgaGVpZ2h0OjkuMzc1ZW07XG4gICAgfSAgICBcbiAgfVxufVxuXG4vLyBhZGp1c3QgbWFyZ2luIGZvciBzaG9wIGFkIGlmIGJvdHRvbSBiYW5uZXIgZG9lcyBub3QgZXhpc3Rcbi5jb25uZWN0LXNvY2lhbCB7XG4gICYgKyAuc2hvcC1hZCAge1xuICAgIHBhZGRpbmctdG9wOjA7XG4gIH1cbn1cblxuLy8gbGF5b3V0IGZvciBcInNpZGViYXIgYWRcIlxuLmFkLWludGVyaW9yLWNvbnRlbnQge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDUgZmlyc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOCBmaXJzdCk7XG4gIH1cbn1cblxuLmFkLXNpZGUtaW50ZXJpb3Ige1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgICBAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICB9XG59IiwiLy8gbW92ZSB0aGVzZXMhISFcbi8vIGRlbGV0ZSB0aGVzZSAhIVxuXG4vLyBjb2xsZWN0aW9ucyBjdXJyZW50bHkgaGVhdmlseSBib3Jyb3dzIGZyb20gb3RoZXIgdGhpbmdzXG4uY29sbGVjdGlvbi1kZXRhaWwtaGVyby1pdGVte1xuICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0qMjtcbiAgaW1nIHtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG59XG5cblxuXG5cbiIsIjotd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yOm5vdChpZnJhbWUpe1xuICAucGJzLWNsZWFuc2xhdGUsIC5zaXRlLWhlYWRlciwgLmFkLWJsb2NrLCAuY21zLCAudGVhc2VyLWl0ZW0sIC5zaXRlLWZvb3RlciwgXG4gIC5maWxtLXN1Yi1uYXYsIC5XYWxsb3AtYnV0dG9uUHJldmlvdXMsIC5XYWxsb3AtYnV0dG9uTmV4dCwgLmFjY29yZGlvbi10b2dnbGUsIC50YWItcGFuZWwsIC5mdWxsLXNjcmVlbiB7XG4gICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmJvZHkge1xuICBvdmVyZmxvdy14OmhpZGRlbjtcbiAgLy8gc3RhdGUgcnVsZXMgZm9yIGJvZHkgd2hlbiBtb2RhbCBpcyBvcGVuXG4gICYuZml4ZWQge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBsZWZ0OjA7XG4gICAgdG9wOjA7XG4gICAgd2lkdGg6MTAwJTtcbiAgfVxufVxuXG5pZnJhbWUge1xuICBiYWNrZ3JvdW5kOiRtZWRHcmF5O1xufVxuXG5pbWcge1xuICBtYXgtd2lkdGg6MTAwJTtcbn1cblxuYSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIC4zcywgZWFzZS1pbi1vdXQpO1xuICBjb2xvcjokcmVkO1xuICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgZm9udC13ZWlnaHQ6NzAwO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjokY3JpbXNvbjtcbiAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xuICB9XG59XG5cbi5jYWxsLXRvLWFjdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgYmFja2dyb3VuZDokcmVkO1xuICBjb2xvcjp3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czouNDM3NWVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZToxLjEyNWVtO1xuICBwYWRkaW5nOjFlbSAzLjVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDA7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOndoaXRlO1xuICAgIGJhY2tncm91bmQ6ZGFya2VuKCRyZWQsIDUlKTtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOmFjdGl2ZSB7XG4gICAgdG9wOi4yNzc3Nzc3Nzc4ZW07XG4gIH1cbn1cblxuZmlndXJlIHtcbiAgbWFyZ2luOjA7XG59XG5cbmZpZ2NhcHRpb24sIC5jYXB0aW9uIHtcbiAgZm9udC1zaXplOi44NWVtO1xuICBjb2xvcjokbWVkR3JheTtcbiAgZm9udC1zdHlsZTppdGFsaWM7XG4gIHAge1xuICAgIG1hcmdpbjowO1xuICB9XG59XG5cbi5jYXB0aW9uIHtcbiAgaDQsIC5kZWx0YSB7XG4gICAgbWFyZ2luOi4yNWVtIDA7XG4gICAgZm9udC1zdHlsZTpub3JtYWw7XG4gIH1cbn1cblxucSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXNpemU6MS4xNWVtO1xuICBtYXJnaW46JHYtcmh5dGhtIDUlO1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDoxMTAlO1xuICAgIHdpZHRoOi41ZW07XG4gICAgYmFja2dyb3VuZDokbWVkR3JheTtcbiAgICBsZWZ0Oi0xLjVlbTtcbiAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIG1hcmdpbi1sZWZ0OjEwJTtcbiAgICBtYXJnaW4tcmlnaHQ6MTAlO1xuICB9XG59XG5cbmNpdGUge1xuICBkaXNwbGF5OmJsb2NrO1xuICBmb250LXNpemU6MS4yNWVtO1xuICBtYXJnaW46JHYtcmh5dGhtIDUlO1xuICBjb2xvcjokbWVkR3JheTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWxlZnQ6MTAlO1xuICAgIG1hcmdpbi1yaWdodDoxMCU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDonJztcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6LTMuNWVtO1xuICAgICAgYmFja2dyb3VuZDp1cmwoJy4uL2ltYWdlcy9xdW90ZS5zdmcnKSBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6Mi41ZW07XG4gICAgICB3aWR0aDoyLjVlbTtcbiAgICAgIGhlaWdodDoyLjVlbTtcbiAgICB9XG4gIH1cbn1cblxuLmp1bXAtbGluayB7XG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogNmVtO1xuICAgIG1hcmdpbjotNmVtIDAgMDtcbiAgfVxuICAmLnNpdGUtZm9vdGVyIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBoZWlnaHQ6IDllbTtcbiAgICAgIG1hcmdpbjotOWVtIDAgMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gY292ZSBzdHVmZlxuLmNvdmUtd3JhcHBlciB7XG4gIG1hcmdpbi1ib3R0b206MS41ZW07XG59XG5cbi5jb3ZlLWNvbnRhaW5lciB7XG4gICY6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgei1pbmRleDogMztcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICBjb250ZW50OidWaWRlbyBSZXF1aXJlcyBKYXZhc2NyaXB0J1xuICB9XG59XG5cbi5qcyB7XG4gIC5jb3ZlLWNvbnRhaW5lciB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDpub25lXG4gICAgfVxuICB9XG59XG5cbi5jb3ZlLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOjU2LjI1JTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYW5pbWF0ZWQoMXMpO1xuICBAaW5jbHVkZSBmYWRlSW47XG4gIGlmcmFtZSB7XG4gICAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6MjtcbiAgfVxufVxuXG4uZ3JpZCB7XG4gIEBpbmNsdWRlIGdyaWQ7XG59XG5cbi5ncmlkLmZ1bGwge1xuICBtYXgtd2lkdGg6MTAwJTtcbiAgcGFkZGluZzowO1xufVxuXG4ucGx1Z2luLWl0ZW0tYmxvY2sge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLy8gZ2VuZXJpYyBzcGFjaW5nIGZvciBzdGFuZGFyZCBwYWdlICBcbi5wYWdlIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG59XG5cbi5yaWdodC1hcnJvdyB7XG4gIGZpbGw6d2hpdGU7XG4gIG1heC13aWR0aDoyZW07XG4gIG1heC1oZWlnaHQ6MmVtO1xufVxuXG4ucGFzc3BvcnQtaWNvbiB7XG4gIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgbWFyZ2luLXRvcDotLjE1ZW07XG4gIG1heC13aWR0aDoxLjI1ZW07XG4gIG1heC1oZWlnaHQ6MS4yNWVtO1xufVxuXG4ucmVsYXRlZC1mZWF0dXJlLWxpc3Qge1xuICBjbGVhcjpib3RoO1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICBtYXJnaW4tdG9wOiR2LXJoeXRobSoyO1xufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0ErREFBLDRFQUE0RTtBQUU1RTs7O0dBR0c7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRUFBRSxVQUFVO0VBQUUsT0FBTztFQUNoQyxvQkFBb0IsRUFBRSxJQUFJO0VBQUUsT0FBTztFQUNuQyx3QkFBd0IsRUFBRSxJQUFJO0VBQUUsT0FBTztDQUN4Qzs7QUFHRCx5RkFBeUY7QUFDekYsQUFBQSxJQUFJLENBQUM7RUFDSCxVQUFVLEVBQUUsVUFBVTtDQUN2Qjs7QUFDRCxBQUFBLENBQUMsRUFBRSxDQUFDLEFBQUEsT0FBTyxFQUFFLENBQUMsQUFBQSxNQUFNLENBQUM7RUFDbkIsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FBR0Q7O0dBRUc7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILE1BQU0sRUFBRSxDQUFDO0NBQ1Y7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7O0dBSUc7QUFFSCxBQUFBLE9BQU87QUFDUCxLQUFLO0FBQ0wsT0FBTztBQUNQLFVBQVU7QUFDVixNQUFNO0FBQ04sTUFBTTtBQUNOLE1BQU07QUFDTixJQUFJO0FBQ0osSUFBSTtBQUNKLEdBQUc7QUFDSCxPQUFPO0FBQ1AsT0FBTyxDQUFDO0VBQUUsT0FBTztFQUNmLE9BQU8sRUFBRSxLQUFLO0NBQ2Y7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLEtBQUs7QUFDTCxNQUFNO0FBQ04sUUFBUTtBQUNS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 */
