@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: #5b5b5b;
  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.75em;
}

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

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

h6, .zeta {
  color: #777777;
  text-transform: uppercase;
  font-weight: 700;
  font-size: 1em;
  letter-spacing: 0.05em;
}

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

p:empty {
  display: none;
}

.promo-text {
  color: white;
  font-size: 1.5em;
  font-weight: 200;
  text-transform: uppercase;
  letter-spacing: .15em;
}

@media (min-width: 81.25em) {
  .promo-text {
    font-size: 2.8125em;
  }
}

.plugin-container ol, .plugin-container ul, .plugin-container p {
  font-family: 'Arbutus Slab', Georgia, serif;
}

.plugin-container p {
  margin: 0 0 1.5;
  /* 0 0 1.1363636364em; AE-1270 */
  font-size: 1.188em;
  /* 1.375em;  AE-1270 changed from 1.25em */
  line-height: 1.7272727273;
}

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

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

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

.four-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

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

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

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

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

.four-up p {
  font-size: 1em;
  line-height: 1.5;
}

@media (min-width: 40.625em) {
  .five-up {
    margin-bottom: 3em;
    display: grid;
    grid-gap: 1.5em;
    justify-content: space-between;
    align-content: start;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  }
}

@media (min-width: 81.25em) {
  .five-up {
    grid-template-columns: 1fr 1fr 1fr 1fr;
  }
}

.five-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

.five-up li {
  margin-bottom: 1.5em;
  box-sizing: border-box;
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / 2;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(2) {
    grid-column: 4 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(2) {
    grid-column: 3 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(2) {
    grid-column: 2 / 3;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(3) {
    grid-column: 5 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / 1;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(4) {
    grid-column: 4 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(4) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(4) {
    grid-column: 2 / 3;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(5) {
    grid-column: 1 / span 6;
    grid-row: 3;
    align-items: center;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(5) {
    grid-column: 4 / span 3;
    grid-row: 2;
    align-items: center;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(5) {
    grid-column: 3 / span 2;
    grid-row: 1 / span 2;
    align-items: center;
  }
}

.five-up li p {
  font-size: 1em;
  line-height: 1.5;
}

@supports not (display: grid) {
  .five-up:after {
    display: table;
    clear: both;
    content: '';
  }
  .five-up:before {
    display: table;
    clear: both;
    content: '';
  }
  .five-up li {
    margin-bottom: 3em;
  }
  @media (min-width: 40.625em) {
    .five-up li {
      width: 47.36842%;
      float: left;
    }
    .five-up li:nth-child(2n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(2n + 2) {
      margin-left: 52.63158%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 68.75em) {
    .five-up li {
      width: 31.61538%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 34.17949%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 68.35897%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 81.25em) {
    .five-up li {
      width: 32.20339%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none;
    }
  }
}

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

.six-up li p {
  font-size: 1em;
  line-height: 1.5;
}

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

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

@media (min-width: 81.25em) {
  .six-up li {
    width: 23.72881%;
    float: left;
  }
  .six-up li:nth-child(4n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(4n + 2) {
    margin-left: 25.42373%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 3) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 4) {
    margin-left: 76.27119%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5), .six-up li:nth-child(6) {
    width: 47.36842%;
    float: left;
  }
  .six-up li:nth-child(5):nth-child(2n + 1), .six-up li:nth-child(6):nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(5):nth-child(2n + 2), .six-up li:nth-child(6):nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5) p, .six-up li:nth-child(6) p {
    font-size: 1.125em;
    line-height: 1.625;
  }
}

.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 {
  display: block;
  margin: 15px auto;
}

*[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% - 0.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: 0.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% - 0.45em);
    top: 40.25em;
    padding: 0 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: 0.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 .plugin-container .Wallop-item--current figcaption.credit,
.js .plugin-container .Wallop-item--current .caption.credit {
  display: block;
  position: relative;
  padding: 0 0 0 30px !important;
}

.js .plugin-container .Wallop-item--current figcaption.credit:before,
.js .plugin-container .Wallop-item--current .caption.credit:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 3px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.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: 0.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: 0.3em 0.45em 0.5em 0.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: -0.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: -0.05em 1em 0 0;
}

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

.js .slides-pagination button:first-of-type {
  margin-right: 0.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: 0.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% - 0.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;
}

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

.clock-section {
  background: #1c1c1c;
  text-align: center;
  padding: 4em 5% 6em 5%;
}

.clock-section .promo-text {
  display: inline-block;
  margin-top: 1em;
}

@media (min-width: 68.75em) {
  .clock-section {
    padding: 6em 5% 8em 5%;
  }
}

.image-separator + .clock-section {
  padding: 7em 5% 6em 5%;
  margin-top: -3em;
}

@media (min-width: 68.75em) {
  .image-separator + .clock-section {
    padding: 9em 5% 8em 5%;
  }
}

.countdown {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  align-items: center;
  color: #d6d6d6;
  text-align: center;
  line-height: 1;
  font-size: 20vw;
}

.countdown > span {
  position: relative;
  font-family: 'ds-digitalitalic', sans-serif;
  background: #101010;
  display: inline-block;
  padding: .15em 0 .55em 0;
  width: 2em;
  margin-bottom: .2em;
  letter-spacing: .085em;
  margin-right: .2em;
}

.countdown b {
  position: absolute;
  left: 50%;
  -webkit-transform: translate(-50%, 0);
  -ms-transform: translate(-50%, 0);
  transform: translate(-50%, 0);
  bottom: 1.15em;
  font-family: 'Muli', 'Trebuchet MS', sans-serif;
  font-weight: 200;
  font-size: .275em;
  color: #777777;
  text-transform: uppercase;
  display: inline-block;
  width: 100%;
  letter-spacing: 0;
}

@media (min-width: 40.625em) {
  .countdown {
    font-size: 4em;
  }
}

@media (min-width: 68.75em) {
  .countdown {
    font-size: 5em;
  }
}

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

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

.feature .overline .social-sharing li:first-of-type {
  margin-left: 0.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: 0.25em;
  font-size: 0.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: 0.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 .mp4-wrapper {
  position: relative;
  margin-bottom: 30px;
}

.feature .mp4-wrapper .hero {
  width: 100%;
  padding-top: 56%;
  position: relative;
}

.feature .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.feature .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.feature .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.feature .mp4-wrapper .caption-wrapper {
  padding: 10px 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: 0.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;
  }
}

@font-face {
  font-family: 'ds-digitalitalic';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2"), url(data:application/font-woff;charset=utf-8;base64,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) format("woff");
  font-weight: normal;
  font-style: normal;
}

.grid.full .film-sub-nav, .grid.full .film-overline, .grid.full .tab-panel {
  padding: 0 5%;
  max-width: 85em;
}

.grid.full .film-sub-nav {
  margin-top: 0;
}

.grid.full .film-detail-hero-item {
  margin-top: 0;
}

.grid.full .film-detail-hero-item .title {
  padding: 0.75em 5% 1em 5%;
}

@media (min-width: 68.75em) {
  .grid.full .title.left {
    left: 6.25%;
    max-width: 40%;
  }
  .grid.full .film-sub-nav {
    padding: 0;
    margin: 0 6% 3em 6%;
  }
  .grid.full .film-overline, .grid.full .tab-panel {
    padding: 0 6%;
  }
}

@media (min-width: 81.25em) {
  .grid.full .film-detail-hero-item .title {
    padding: 0.75em 1.5em 1em 1.5em;
  }
}

@media (min-width: 95.625em) {
  .grid.full .title.left {
    max-width: 25%;
  }
  .grid.full .film-sub-nav, .grid.full .film-overline, .grid.full .tab-panel {
    padding: 0;
  }
  .grid.full .tab-panel, .grid.full .film-overline, .grid.full .film-sub-nav {
    margin-right: auto;
    margin-left: auto;
    width: 100%;
  }
}

.film-video-container {
  max-width: 85em;
  margin: 0 5%;
}

@media (min-width: 68.75em) {
  .film-video-container {
    margin: 0 6%;
  }
}

@media (min-width: 95.625em) {
  .film-video-container {
    margin: 0 auto;
  }
}

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

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

.film-detail-hero-item .title {
  padding: 0.75em 1.5em 1em 1.5em;
  background: #003fa6;
  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-weight: 400;
  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;
  margin-top: .5em;
  letter-spacing: normal;
}

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

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

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

.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;
    letter-spacing: 0.15em;
  }
  .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: 2.8125em;
  }
  .film-detail-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .film-detail-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:before {
      background: #174189;
      mix-blend-mode: multiply;
      -webkit-filter: brightness(1.5);
      filter: brightness(1.5);
    }
  }
}

@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: 68.75em) {
  .film-parts {
    width: 29.48718%;
    float: right;
    margin-right: 0;
  }
}

@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: 68.75em) {
  .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.35em 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;
  color: #d6d6d6;
}

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

.filters {
  background: black;
  padding-top: 0;
}

.filters .label {
  color: white;
}

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

.filters form {
  text-align: center;
}

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

.filters form fieldset label {
  width: 100%;
  color: white;
  background-color: #242424;
  border: 0.125em solid #242424;
}

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

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

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

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

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

.filter-target.loading:before {
  background-color: black;
  color: white;
}

.pagination {
  color: white;
}

.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: 68.75em) {
  .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: 68.75em) {
  .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 {
  padding: 1.5em 0 6em 0;
  clear: both;
  background: black;
}

.film-shop-links .zeta {
  color: #d6d6d6;
}

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

.funders {
  background: black;
  padding: 0 0 1.5em 0;
  margin-bottom: 1.5em;
}

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

.film-funders .zeta {
  margin-bottom: 2em;
}

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

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

.film-title {
  margin-bottom: 0;
  color: #d6d6d6;
}

.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: #777777;
  text-transform: uppercase;
}

.film-main {
  background: black;
  padding-bottom: 6em;
  margin-top: -.125em;
}

.film-main p {
  color: #d6d6d6;
  font-family: 'Arbutus Slab', Georgia, serif;
  margin: 0 0 1.5;
  /* 0 0 1.1363636364em; AE-1270 */
  font-size: 1.188em;
  /* 1.375em;  AE-1270 changed from 1.25em */
  line-height: 1.7272727273;
}

.section-title {
  font-size: 2.5em;
  text-align: center;
  font-weight: 200;
  text-transform: uppercase;
  letter-spacing: .15em;
  margin: 1em 0;
}

.section-title:after, .section-title :before {
  content: none;
}

@media (min-width: 68.75em) {
  .section-title {
    font-size: 4.0625em;
  }
}

.rendered-film-content h2 {
  font-size: 2.5em;
  text-align: center;
  font-weight: 200;
  text-transform: uppercase;
  letter-spacing: .15em;
  margin: 1em 0;
}

.rendered-film-content h2:after, .rendered-film-content h2 :before {
  content: none;
}

@media (min-width: 68.75em) {
  .rendered-film-content h2 {
    font-size: 4.0625em;
  }
}

.film-top {
  background: black;
}

.film-top h2 {
  margin: 0;
  padding: 1.5em 0 .5em;
}

.features-container {
  background: black;
  padding-bottom: 3em;
}

.features-container h2, .features-container .beta {
  font-size: 2.5em;
  text-align: center;
  font-weight: 200;
  text-transform: uppercase;
  letter-spacing: .15em;
  margin: 1em 0;
  margin-top: .5em;
}

.features-container h2:after, .features-container h2 :before, .features-container .beta:after, .features-container .beta :before {
  content: none;
}

@media (min-width: 68.75em) {
  .features-container h2, .features-container .beta {
    font-size: 4.0625em;
  }
}

.features-container .teaser-item p {
  color: #d6d6d6;
}

.other-related {
  background: #1c1c1c;
}

.other-related h2, .other-related .beta {
  font-size: 2.5em;
  text-align: center;
  font-weight: 200;
  text-transform: uppercase;
  letter-spacing: .15em;
  margin: 1em 0;
}

.other-related h2:after, .other-related h2 :before, .other-related .beta:after, .other-related .beta :before {
  content: none;
}

@media (min-width: 68.75em) {
  .other-related h2, .other-related .beta {
    font-size: 4.0625em;
  }
}

.other-related .related-films {
  margin: 4em 0 8em 0;
}

.newsletter-dialog {
  display: none;
}

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

.newsletter-dialog.general {
  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.general: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.general:after {
    margin-top: 12.5em;
  }
}

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

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

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

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

.newsletter-dialog.general 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.general div[role="document"] {
    margin-top: 0;
    top: 12.5vh;
  }
}

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

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

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

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

.newsletter-dialog.general .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.general .dimsiss:hover svg {
  fill: #f3ad00;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

.newsletter-dialog.vote {
  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.vote.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

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

.newsletter-dialog.vote div[role="dialog"] {
  overflow-y: scroll;
  max-height: 90vh;
  margin-top: 4.5vh;
}

@media screen and (min-height: 750vh) {
  .newsletter-dialog.vote div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.vote div[role="document"] {
  max-width: 600px;
  margin: 6vh auto 0;
  width: 95%;
  position: relative;
  border: 10px solid #fcc320;
  background-color: #3c225e;
}

@media screen and (min-width: 68.75em) and (min-height: 750px) {
  .newsletter-dialog.vote div[role="document"] {
    margin-top: 0;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

.newsletter-dialog.vote .gamma {
  color: #ebe3d7;
  font-weight: 400;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .gamma {
    font-size: 20px;
  }
}

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

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

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

.newsletter-dialog.vote .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: #fcc320;
  display: block;
}

@media (min-width: 675px) {
  .newsletter-dialog.vote .dimsiss {
    right: -2.5em;
    top: -2.5em;
  }
}

.newsletter-dialog.vote #newsletter-dialog-title {
  margin: 0 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
  font-size: 25px;
  color: #ebe3d7;
}

.newsletter-dialog.vote #newsletter-dialog-title .logo-type {
  max-width: 8em;
  max-height: 0.92em;
}

.newsletter-dialog.vote span.under {
  display: block;
  margin: 5px auto;
  font-size: 24px;
  font-family: "Muli", sans-serif;
  color: #fcc320;
  font-weight: 500;
  text-transform: uppercase;
}

.newsletter-dialog.vote .vote-image {
  position: relative;
  max-width: 600px;
  width: 100%;
  margin: 0;
  padding: 0;
  height: auto;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .vote-image {
    background: url(../images/vote_image_header.jpg) no-repeat center center;
    background-size: cover;
    height: 150px;
  }
  .newsletter-dialog.vote .vote-image img {
    display: none;
  }
}

.newsletter-dialog.vote .title-wrapper {
  background-color: #3c225e;
  position: relative;
  display: block;
  padding: 10px;
  margin: -87px auto 0;
  height: 87px;
  width: 100%;
}

@media (min-width: 650px) {
  .newsletter-dialog.vote .title-wrapper {
    width: 70%;
  }
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper {
    margin-top: 0;
  }
}

.newsletter-dialog.vote .title-wrapper .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto 15px;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper .vote-headline {
    max-width: 80%;
  }
}

.newsletter-dialog.vote .email-signup-form {
  padding: 20px 40px;
}

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

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

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

.newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
  box-shadow: none !important;
}

.newsletter-dialog.vote .email-signup-form .note {
  display: block;
  font-size: 20px;
  color: #ebe3d7;
  text-align: center;
}

@media (max-width: 650px) {
  .newsletter-dialog.vote .email-signup-form .note {
    font-size: 14px;
  }
}

@media (min-width: 40.625em) {
  .newsletter-dialog.vote .email-signup-form .email-field,
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.vote .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.vote .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: #ffffff;
}

.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;
  color: #ffffff;
  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: 0.769em;
}

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

.connect-social .email-signup.vote .headline {
  padding: 0 10% 0 0;
  width: 100%;
}

.connect-social .email-signup.vote .headline .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .connect-social .email-signup.vote .headline .vote-headline {
    max-width: 80%;
    margin: 0;
  }
}

.connect-social .email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

@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.vote h3 {
    text-align: center;
    margin-bottom: 15px;
  }
  .connect-social .email-signup h3 {
    text-align: left;
    margin-bottom: 15px;
  }
  .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;
}

a {
  -webkit-transition: all 0.4s ease-in-out;
  -ms-transition: all 0.4s ease-in-out;
  transition: all 0.4s ease-in-out;
  color: #267dfe;
}

a:hover {
  color: #174189;
  text-decoration: none;
}

.plugin-container h3 {
  text-transform: uppercase;
  color: #003fa6;
}

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

.image-separator span {
  display: inline-block;
  position: relative;
  background: #003fa6;
  width: 5em;
  height: 5em;
  border-radius: 100%;
  margin-top: -2.5em;
}

.image-separator span img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-width: 50%;
}

@media (min-width: 68.75em) {
  .image-separator span {
    width: 6em;
    height: 6em;
    margin-top: -3em;
  }
}

.js .pagination .load-more {
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #267dfe;
  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;
  font-size: 1.125em;
  display: inline-block;
  padding-left: 3.5em;
  padding-right: 3.5em;
  border-radius: .4375em;
}

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

.js .pagination .load-more:hover {
  background: #003fa6;
}

@media (min-width: 68.75em) {
  .js .pagination .load-more {
    padding-left: 7em;
    padding-right: 7em;
  }
}

.feature-header {
  background-color: black;
  background-image: url("../images/ctm/bg-stars.jpg");
  padding: 0 5%;
  text-align: center;
  position: relative;
  min-height: 7em;
  margin-top: -1px;
}

.feature-header .title {
  display: inline-block;
  background-image: url("../images/ctm/header-moon.jpg");
  background-repeat: no-repeat;
  background-position: center .5em;
  padding: 10em 0 1em 0;
  width: 100%;
}

.feature-header .title svg {
  fill: white;
  max-width: 20em;
  max-height: 20em;
}

@media (min-width: 68.75em) {
  .feature-header .title {
    background-image: url("../images/ctm/bg-moon.jpg");
    padding: 2em 0 1.5em 4em;
    background-position: left bottom;
    max-width: 70em;
    display: block;
    margin-right: auto;
    margin-left: auto;
  }
}

.js .accordion-toggle {
  color: #267dfe;
  border-bottom: 0.125em solid #5b5b5b;
}

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

.js .accordion-toggle svg {
  fill: #267dfe;
}

cite {
  font-size: 1em;
  font-family: 'Muli', 'Trebuchet MS', sans-serif;
}

.call-to-action {
  background: #003fa6;
}

.call-to-action:hover {
  background: #00358d;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhc2luZ01vb24uY3NzIiwic291cmNlcyI6WyJjaGFzaW5nTW9vbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9fYnJlYWtwb2ludC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19zZXR0aW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19jb250ZXh0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2hlbHBlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcGFyc2Vycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3F1ZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fc2luZ2xlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9zaW5nbGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19kb3VibGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC1wYWlyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RvdWJsZS1zdHJpbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3RyaXBsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvdHJpcGxlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcmVzb2x1dGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvcmVzb2x1dGlvbi9fcmVzb2x1dGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19uby1xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19yZXNwb25kLXRvLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2xlZ2FjeS1zZXR0aW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiX25vcm1hbGl6ZS5zY3NzIiwiX2NvbmZpZy5zY3NzIiwiX21peGlucy5zY3NzIiwiX2FuaW1hdGlvbnMuc2NzcyIsIl90eXBvZ3JhcGh5Q2hhc2luZy5zY3NzIiwiX2dyaWRIZWxwZXJzLnNjc3MiLCJfc29jaWFsLnNjc3MiLCJfdGVhc2VySXRlbS5zY3NzIiwiX3BsYWNlaG9sZGVycy5zY3NzIiwiX2Nhcm91c2VsLnNjc3MiLCJfYWNjb3JkaW9ucy5zY3NzIiwiX2ZpbHRlcnMuc2NzcyIsIl9yZWxhdGVkRmlsbXMuc2NzcyIsIl9uZXdzbGV0dGVyRm9ybS5zY3NzIiwiX3BhZ2luYXRpb24uc2NzcyIsImNvdW50ZG93bkNsb2NrQ2hhc2luZy5zY3NzIiwiX2ZlYXR1cmVEZXRhaWwuc2NzcyIsIl9maWxtRGV0YWlsQ2hhc2luZ01vb24uc2NzcyIsIl9uZXdzbGV0dGVyTW9kYWwuc2NzcyIsIl9oZWFkZXIuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl9jb25uZWN0LnNjc3MiLCJfYWRzLnNjc3MiLCJfc2hhbWUuc2NzcyIsIl9nbG9iYWxHZW5lcmFsLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy9iYXNlIHN0dWZmXG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ3N1c3knO1xuQGltcG9ydCAnbm9ybWFsaXplJztcbkBpbXBvcnQgJ2NvbmZpZyc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAnYW5pbWF0aW9ucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5Q2hhc2luZyc7XG5AaW1wb3J0ICdncmlkSGVscGVycyc7XG5cbi8vIHNtYWxsIHJldXNhYmxlIGNvbXBvbmVudHNcbkBpbXBvcnQgJ3NvY2lhbCc7XG5AaW1wb3J0ICd0ZWFzZXJJdGVtJztcbkBpbXBvcnQgJ3BsYWNlaG9sZGVycyc7XG5AaW1wb3J0ICdjYXJvdXNlbCc7XG5AaW1wb3J0ICdhY2NvcmRpb25zJztcbkBpbXBvcnQgJ2ZpbHRlcnMnO1xuQGltcG9ydCAncmVsYXRlZEZpbG1zJztcbkBpbXBvcnQgJ25ld3NsZXR0ZXJGb3JtJztcbkBpbXBvcnQgJ3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY291bnRkb3duQ2xvY2tDaGFzaW5nJztcblxuLy8gcGFnZXNcbkBpbXBvcnQgJ2ZlYXR1cmVEZXRhaWwnO1xuQGltcG9ydCAnZmlsbURldGFpbENoYXNpbmdNb29uJztcblxuLy8gaGlnaCBsZXZlbCBjb21wb25lbnRzXG5AaW1wb3J0ICduZXdzbGV0dGVyTW9kYWwnO1xuQGltcG9ydCAnaGVhZGVyJztcbkBpbXBvcnQgJ2Zvb3Rlcic7XG5AaW1wb3J0ICdjb25uZWN0JztcbkBpbXBvcnQgJ2Fkcyc7XG5cbi8vc2hhbWVcbkBpbXBvcnQgJ3NoYW1lJztcblxuLy8gZ2xvYmFsIEdlbmVyYWxcbkBpbXBvcnQgJ2dsb2JhbEdlbmVyYWwnO1xuXG4vLyBnZW5lcmFsIG92ZXJyaWRlc1xuYSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuNHMsIGVhc2UtaW4tb3V0KTtcbiAgY29sb3I6JGNoYXNpbmdDb3JuZmxvd2VyO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGJsdWU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICBoMyB7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIGNvbG9yOiRjaGFzaW5nQmx1ZTtcbiAgfVxufVxuXG4uaW1hZ2Utc2VwYXJhdG9yIHtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIHNwYW4ge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQ6JGNoYXNpbmdCbHVlO1xuICAgIHdpZHRoOjVlbTtcbiAgICBoZWlnaHQ6NWVtO1xuICAgIGJvcmRlci1yYWRpdXM6MTAwJTtcbiAgICBtYXJnaW4tdG9wOi0yLjVlbTtcbiAgICBpbWcge1xuICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgbWF4LXdpZHRoOjUwJTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgc3BhbiB7XG4gICAgICB3aWR0aDo2ZW07XG4gICAgICBoZWlnaHQ6NmVtO1xuICAgICAgbWFyZ2luLXRvcDotM2VtO1xuICAgIH1cbiAgfVxufVxuXG4vLyBhamF4IHBhZ2luYXRpb25cbi5qcyB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICAubG9hZC1tb3JlIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbigkY2hhc2luZ0Nvcm5mbG93ZXIsIHdoaXRlKTtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmctbGVmdDozLjVlbTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6My41ZW07XG4gICAgICBib3JkZXItcmFkaXVzOi40Mzc1ZW07XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDokY2hhc2luZ0JsdWU7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OjdlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDo3ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5mZWF0dXJlLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6YmxhY2s7XG4gIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvY3RtL2JnLXN0YXJzLmpwZycpO1xuICBwYWRkaW5nOjAgNSU7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgbWluLWhlaWdodDo3ZW07XG4gIG1hcmdpbi10b3A6LTFweDtcbiAgLnRpdGxlIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2N0bS9oZWFkZXItbW9vbi5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgLjVlbTtcbiAgICBwYWRkaW5nOjEwZW0gMCAxZW0gMDtcbiAgICB3aWR0aDoxMDAlO1xuICAgIHN2ZyB7XG4gICAgICBmaWxsOndoaXRlO1xuICAgICAgbWF4LXdpZHRoOjIwZW07XG4gICAgICBtYXgtaGVpZ2h0OjIwZW07XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIC50aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2N0bS9iZy1tb29uLmpwZycpO1xuICAgICAgcGFkZGluZzoyZW0gMCAxLjVlbSA0ZW07XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgYm90dG9tO1xuICAgICAgbWF4LXdpZHRoOjcwZW07XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgbWFyZ2luLXJpZ2h0OmF1dG87XG4gICAgICBtYXJnaW4tbGVmdDphdXRvO1xuICAgIH1cbiAgfVxufVxuXG4uanMge1xuICAuYWNjb3JkaW9uLXRvZ2dsZSB7XG4gICAgY29sb3I6JGNoYXNpbmdDb3JuZmxvd2VyO1xuICAgIGJvcmRlci1ib3R0b206LjEyNWVtIHNvbGlkICRjaGFzaW5nR3JheTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlci1ib3R0b206LjEyNWVtIHNvbGlkICRjaGFzaW5nR3JheTtcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIGZpbGw6JGNoYXNpbmdDb3JuZmxvd2VyO1xuICAgIH1cbiAgfVxufVxuXG5jaXRlIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtZmFtaWx5OiAnTXVsaScsICdUcmVidWNoZXQgTVMnLCBzYW5zLXNlcmlmO1xufVxuXG4uY2FsbC10by1hY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiRjaGFzaW5nQmx1ZTtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDpkYXJrZW4oJGNoYXNpbmdCbHVlLCA1JSk7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG5cbiAgICAgICAgJF9wYXNzIDogbnVsbDtcblxuICAgICAgICAvLyBzYXNzIDMuNSBvciBncmVhdGVyXG4gICAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoJ2dldC1mdW5jdGlvbicpIHtcbiAgICAgICAgICAkX3Bhc3M6IGNhbGwoZ2V0LWZ1bmN0aW9uKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpKSwgJF9pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzYXNzIDMuNCBvciBsZXNzXG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qISBub3JtYWxpemUuY3NzIHY0LjEuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGRlZmF1bHQgZm9udCBmYW1pbHkgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIGFuZCBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG5cbi8qIGFwcGx5IGEgbmF0dXJhbCBib3ggbGF5b3V0IG1vZGVsIHRvIGFsbCBlbGVtZW50cywgYnV0IGFsbG93aW5nIGNvbXBvbmVudHMgdG8gY2hhbmdlICovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSwgYW5kIEZpcmVmb3guXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLCAvKiAxICovXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxubWFpbiwgLyogMiAqL1xubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHsgLyogMSAqL1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG50ZW1wbGF0ZSwgLyogMSAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG91dGxpbmUgb24gZm9jdXNlZCBsaW5rcyB3aGVuIHRoZXkgYXJlIGFsc28gYWN0aXZlIG9yIGhvdmVyZWRcbiAqIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmUtd2lkdGg6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyoqXG4gKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBtYXJnaW4gaW4gSUUgOC5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gIGhlaWdodDogMDsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udDogaW5oZXJpdDsgLyogMSAqL1xuICBtYXJnaW46IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb250IHdlaWdodCB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4gKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgW3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC0uXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxuICovXG5cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGFuZCBjYW5jZWwgYnV0dG9ucyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgdGV4dCBzdHlsZSBvZiBwbGFjZWhvbGRlcnMgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBvcGFjaXR5OiAwLjU0O1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiAgcmVtb3ZlIGlvcyBzdHlsaW5nLiBPbmx5IHVzZSBvbiBidXR0b25zIGFuZCBzZWFyY2ggaW5wdXRzXG4gKi9cbmJ1dHRvbiwgW3R5cGU9XCJzZWFyY2hcIl0sIFt0eXBlPVwiYnV0dG9uXCJdIHsgXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czowO1xuICBwYWRkaW5nOjA7XG59XG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbn1cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIG1hcmdpbjogMDtcbn1cbiIsIi8vIGNvbG9yc1xuJGNyaW1zb246IzhjMDAwNztcbiRyZWQ6I2JiMGIwZTtcbiR5ZWxsb3c6I2YzYWQwMDtcbiRtdXN0YXJkOiM4MzVkMDA7XG4kYmx1ZTojMTc0MTg5OyBcbiRkYXJrQmx1ZTojMTAzMDY2O1xuJG5hdnk6IzI0Mzc1NztcbiRjb3JuZmxvd2VyOiM0ODcyYjQ7XG4kY2hhcmNvYWw6IzQzNDM0MztcbiRncmF5OiM3Nzc3Nzc7XG4kbWVkR3JheTojOTk5OTk5O1xuJGRhcmtHcmF5OiMzMzM7XG4kd2FybUdyYXk6I2ViZWJlYjtcbiRkb3ZlOiNlNmU2ZTY7XG4kb3ZlcmxheTojZTNlM2UzO1xuXG5cbi8vIGNoYXNpbmcgdGhlIG1vb25cbiRjaGFzaW5nQmx1ZTogIzAwM2ZhNjtcbiRjaGFzaW5nSGVhdGhlcjogI2Q2ZDZkNjtcbiRjaGFzaW5nQ29ybmZsb3dlcjogIzI2N2RmZTtcbiRjaGFzaW5nU2xhdGU6ICMxYzFjMWM7XG4kY2hhc2luZ0dyYXk6IzViNWI1YjtcbiRub3RJblN0eWxndWlkZUJ1dEluU3R5bGd1aWRlOiMyNDI0MjQ7XG4kY2hhc2luZ1d0ZkJsYWNrOiMxMDEwMTA7XG5cblxuLy8gYnJlYWtwb2ludHNcbi8vIDY1MHB4XG4kc2NyZWVuLXNtLW1pbjo0MC42MjVlbTtcbi8vIDExMDBweFxuJHNjcmVlbi1tZC1taW46NjguNzVlbTtcbi8vIDEzMDBweFxuJHNjcmVlbi1sZy1taW46ODEuMjVlbTtcbi8vIDE1MzBweFxuJHNjcmVlbi1qYi1taW46OTUuNjI1ZW07XG5cbi8vIHZlcnRpY2FsIHJoeXRobSB2YXIuIHVzZWQgdG8gYnJlYWsgdXAgc2VjdGlvbnMgYmFzZWQgb24gYSBzY2FsZVxuJHYtcmh5dGhtOjEuNWVtO1xuXG4vLyBzdXN5IGJhc2UgY29uZmlnIGZvciBzbWFsbGVyIHNjcmVlbnNcbi8vIGdyaWQgY2hhbmdlcyBiYXNlZCBvbiB3cmFwcGVyIGNsYXNzIGRlZmluZWQgaW4gY3VzdG9tLnNjc3NcbiRzdXN5OiAoXG4gIGNvbHVtbnM6KDIpLFxuICBjb250YWluZXI6ODcuNWVtLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgLy8gZGVidWc6KGltYWdlOnNob3cpXG4pO1xuXG4kbWFwLXNtOiAoXG4gIGNvbHVtbnM6KDQpLFxuKTtcblxuJG1hcC1tZDogKFxuICBjb2x1bW5zOig4KSxcbik7XG5cbiRtYXAtbGc6IChcbiAgY29sdW1uczooMTIpLFxuKTtcblxuLy8gZ3JpZFxuQG1peGluIGdyaWQoKSB7XG4gIEBpbmNsdWRlIGNvbnRhaW5lcigpO1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICBwYWRkaW5nOjAgNSU7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNob3ctZ3JpZCg0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNob3ctZ3JpZCg4KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNob3ctZ3JpZCgxMik7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICBwYWRkaW5nOjA7XG4gIH1cbn0iLCIgLy8gY2xlYXIgZml4aW5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGRpc3BsYXk6dGFibGU7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBjb250ZW50OicnO1xuICB9XG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIGNsZWFyOmJvdGg7XG4gICAgY29udGVudDonJztcbiAgfVxufVxuLy8gcGFyZW50IHNob3VsZCBiZSBzZXQgdG8gcmVsYXRpdmVcbi8vIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvc2Fzcy9jZW50ZXJpbmctbWl4aW4vXG5AbWl4aW4gY2VudGVyKCRob3Jpem9udGFsOiB0cnVlLCAkdmVydGljYWw6IHRydWUpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaWYgKCRob3Jpem9udGFsIGFuZCAkdmVydGljYWwpIHtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgfSBAZWxzZSBpZiAoJGhvcml6b250YWwpIHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIH0gQGVsc2UgaWYgKCR2ZXJ0aWNhbCkge1xuICAgIHRvcDogNTAlO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MCUpO1xuICB9XG59XG5cbi8vIHRyYW5zaXRpb25zXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi1wcm9wZXJ0eSwgJHRyYW5zaXRpb24tdGltZSwgJG1ldGhvZCkge1xuICAtd2Via2l0LXRyYW5zaXRpb246JHRyYW5zaXRpb24tcHJvcGVydHkgJHRyYW5zaXRpb24tdGltZSAkbWV0aG9kO1xuICAgICAgLW1zLXRyYW5zaXRpb246JHRyYW5zaXRpb24tcHJvcGVydHkgJHRyYW5zaXRpb24tdGltZSAkbWV0aG9kO1xuICAgICAgICAgIHRyYW5zaXRpb246JHRyYW5zaXRpb24tcHJvcGVydHkgJHRyYW5zaXRpb24tdGltZSAkbWV0aG9kO1xufVxuXG4vLyBncmFkaWVudHNcbkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJGZyb21Db2xvciwgJHRvQ29sb3IpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjokdG9Db2xvcjsgLyogRmFsbGJhY2sgQ29sb3IgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCRmcm9tQ29sb3IpLCB0bygkdG9Db2xvcikpOyAvKiBTYWY0KywgQ2hyb21lICovXG4gIGJhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIENocm9tZSAxMCssIFNhZjUuMSssIGlPUyA1KyAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgIC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBGRjMuNiAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpOyAvKiBJRTEwICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAtby1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIE9wZXJhIDExLjEwKyAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgbGluZWFyLWdyYWRpZW50KHRvcCwgJGZyb21Db2xvciwgJHRvQ29sb3IpO1xuXG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KEdyYWRpZW50VHlwZT0wLFN0YXJ0Q29sb3JTdHI9JyN7JGZyb21Db2xvcn0nLCBFbmRDb2xvclN0cj0nI3skdG9Db2xvcn0nKTtcbn1cblxuLy8gcGxhaW4gbGlzdHNcbkBtaXhpbiBwbGFpbi1saXN0IHtcbiAgbWFyZ2luLXJpZ2h0OjA7XG4gIG1hcmdpbi10b3A6MDtcbiAgbWFyZ2luLWxlZnQ6MDtcbiAgbWFyZ2luLWJvdHRvbTowO1xuICBwYWRkaW5nOjA7XG4gIGxpIHtcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gIH1cbiAgZGQge1xuICAgIG1hcmdpbjowO1xuICB9XG59XG5cbkBtaXhpbiBwbGFpbi1idXR0b24ge1xuICBib3JkZXI6bm9uZTtcbiAgYmFja2dyb3VuZDpub25lO1xuICBib3gtc2hhZG93Om5vbmU7XG4gICY6aG92ZXIsICY6Zm9jdXMsICY6YWN0aXZlIHtcbiAgICBib3gtc2hhZG93Om5vbmU7XG4gICAgYm9yZGVyOm5vbmU7XG4gIH1cbn1cblxuQG1peGluIGJ1dHRvbigkYmFja2dyb3VuZDpudWxsLCAkY29sb3I6bnVsbCkge1xuICAqIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gIH1cbiAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG07XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgY29sb3I6I3skY29sb3J9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiN7JGJhY2tncm91bmR9O1xuICBib3JkZXI6MDtcbn1cblxuQG1peGluIGJvcmRlci1idXR0b24oJGJvcmRlckNvbG9yOm51bGwsICRib3JkZXJXaWR0aDpudWxsLCAkY29sb3I6bnVsbCkge1xuICAqIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gIH1cbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG07XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgY29sb3I6I3skY29sb3J9O1xuICBib3JkZXItY29sb3I6I3skYm9yZGVyQ29sb3J9O1xuICBib3JkZXItd2lkdGg6I3skYm9yZGVyV2lkdGh9O1xuICBib3JkZXItc3R5bGU6c29saWQ7XG59XG5cbkBtaXhpbiBhcnJvdy1idXR0b24oJGNvbG9yKSB7XG4gIHBhZGRpbmctcmlnaHQ6M2VtO1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgc3ZnIHtcbiAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgIGZpbGw6JGNvbG9yO1xuICAgIHJpZ2h0OjFlbTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxZW07XG4gICAgaGVpZ2h0OjFlbTtcbiAgfVxuICAvLyByZXF1aXJlcyB0aGlzIHN2ZyBhcyBhIGNoaWxkXG4gIC8vICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1NSAxMDFcIj5cbiAgLy8gICA8cGF0aCBkPVwiTTcuNDUgMTAwTDAgOTIuMSAzOS41NSA1MCAwIDguMTggNy40NSAwbDQ3LjEgNTBcIi8+XG4gIC8vIDwvc3ZnPlxufVxuXG4vLyBsaW5rIHJlc2V0XG5AbWl4aW4gbGluay1yZXNldCB7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOmFjdGl2ZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIH1cbiAgJjp2aXNpdGVkIHtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxufVxuXG4vLyBsb25nIHNoYWRvdyBnZW5lcmF0b3Jcbi8vIGh0dHA6Ly9jb2RlcGVuLmlvL21heGFrb2hsZXIvcGVuL21BeEh6XG5AbWl4aW4gbG9uZy1zaGFkb3coJHR5cGUsICRjb2xvciwgJGxlbmd0aCwgJGZhZGVvdXQ6IHRydWUsICRza2V3OiBmYWxzZSwgJGRpcmVjdGlvbjogcmlnaHQpe1xuICAkc2hhZG93OiAnJztcbiAgQGlmICRza2V3ID09IGZhbHNlIG9yICR0eXBlID09IHRleHR7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRjb2xvciArICcsJztcbiAgICAgIH1cbiAgICB9XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSAqIC0xICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkY29sb3IgKyAnLCc7XG4gICAgICAgfVxuICAgICAgfVxuICAgICB9XG4gICAgICAgIFxuICAgQGlmICRmYWRlb3V0ID09IHRydWV7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgQGlmICR0eXBlID09IHRleHQgb3IgJHNrZXcgPT0gZmFsc2V7XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0e1xuICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgICAgICAgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnR7XG4gICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICogLTEgKyAncHggJyArICRpICsgJ3B4IDAgJyArICAgICAgIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmICgkdHlwZSA9PSBib3gpIGFuZCAkc2tldyA9PSB0cnVle1xuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkaSAqIC4yICsgJ3B4ICcgKyByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICogLTEgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRpICogLjIgKyAncHggJyArIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG4gICRzaGFkb3c6ICRzaGFkb3cgKyAkbGVuZ3RoICsgJ3B4ICcgKyAkbGVuZ3RoICsgJ3B4IDAgJyArIHJnYmEoJGNvbG9yLCAwKTtcbiB9XG4gQGlmICRmYWRlb3V0ID09IGZhbHNle1xuICAgQGlmICRza2V3ID09IHRydWUgYW5kICggJHR5cGUgPT0gYm94ICl7XG4gICAgIEBmb3IgJGkgZnJvbSAwIHRvICRsZW5ndGggLSAxIHtcbiAgICAgICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGkgKiAuMSArICdweCAnICsgJGNvbG9yICsgJywnO1xuICAgICAgfVxuICAgfVxuICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkbGVuZ3RoICsgJ3B4ICcgKyAkbGVuZ3RoICsgJ3B4IDAgJyArIHJnYmEoMCwwLDAsMCk7XG4gfVxuICRzaGFkb3c6IHVucXVvdGUoJHNoYWRvdyk7XG4gIEBpZiAkdHlwZSA9PSAnYm94JyB7Ym94LXNoYWRvdzogJHNoYWRvdzt9XG4gIEBpZiAkdHlwZSA9PSAndGV4dCcge3RleHQtc2hhZG93OiAkc2hhZG93O31cbn1cblxuLy8gYXNzaXRpdmUgdGV4dC4gbm90IGEgbWl4aW4gYnV0IGFuIGltcG9ydGFudCB1dGlsaXR5IGNsYXNzXG4uYXNzaXN0aXZlLXRleHQge1xuICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBoZWlnaHQ6IDFweDtcbiAgd2lkdGg6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmFzc2lzdGl2ZS10ZXh0OmhvdmVyLCAuYXNzaXN0aXZlLXRleHQ6YWN0aXZlLCAuYXNzaXN0aXZlLXRleHQ6Zm9jdXMge1xuICBmb250LXNpemU6Ljg3NWVtO1xuICBmb250LXdlaWdodDpib2xkO1xuICBsaW5lLWhlaWdodDpub3JtYWw7XG4gIHotaW5kZXg6MTAwMDAwO1xuICB0b3A6NXB4O1xuICBsZWZ0OjVweDtcbiAgZGlzcGxheTpibG9jaztcbiAgY2xpcDphdXRvICFpbXBvcnRhbnQ7XG4gIHdpZHRoOmF1dG87XG4gIGhlaWdodDphdXRvO1xuICBwYWRkaW5nOjE1cHggMjNweCAxNHB4O1xuICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgY29sb3I6IzIxNzU5YjtcbiAgYm9yZGVyLXJhZGl1czozcHg7XG4gIGJhY2tncm91bmQtY29sb3I6I2YxZjFmMTtcbiAgYm94LXNoYWRvdzowIDAgMnB4IDJweCByZ2JhKDAsIDAsIDAsIC42KTtcbn1cblxuLmhpZGUge1xuICBkaXNwbGF5Om5vbmU7XG59XG5cblxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OmZsZXg7XG59XG5cbkBtaXhpbiBmbGV4LXdyYXAge1xuICAtbXMtZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBmbGV4LWFsaWduLWNlbnRlciB7XG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG4gICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBmbGV4LWFsaWduLWVuZCB7XG4gIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7XG4gICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBlbmQ7XG59XG5cbkBtaXhpbiBmbGV4LWp1c3RpZnktZW5kIHtcbiAgLXdlYmtpdC1ib3gtcGFjazogZW5kO1xuICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XG4gICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyBcbn1cblxuQG1peGluIGZsZXgtanVzdGlmeS1zdGFydCB7XG4gLXdlYmtpdC1ib3gtcGFjazogc3RhcnQ7XG4gICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgXG59XG5cbkBtaXhpbiBmbGV4LWp1c3RpZnktY2VudGVyIHtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgXG59XG4iLCJAbWl4aW4gYW5pbWF0ZWQoJGR1cikge1xuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cjtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkZHVyO1xuICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQG1peGluIGZhZGVJbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjtcbn1cblxuQG1peGluIGZhZGVJblN0YXJ0ZWQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5TdGFydGVkO1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluU3RhcnRlZDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbkBtaXhpbiBmYWRlT3V0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZU91dDtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluTGVmdCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluTGVmdCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5MZWZ0O1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7XG59XG5cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZUluUmlnaHQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluUmlnaHQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluUmlnaHQ7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXRSaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVPdXRSaWdodCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0RG93biB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlT3V0RG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXREb3duIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgfVxufVxuXG4uc2xpZGVPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dExlZnQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuXG4uc2xpZGVPdXRMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0TGVmdDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5Eb3duIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd247XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjtcbn1cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJblVwIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5VcCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5VcCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5VcDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5VcDtcbn1cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbiAgXG4gIDUwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBib3VuY2Uge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuICBcbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG5AbWl4aW4gYm91bmNlIHtcbiAgLXdlYmtpdC1hbmltYXRpb246IGJvdW5jZSAzcyBpbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb246IGJvdW5jZSAzcyBpbmZpbml0ZTtcbn1cblxuLy8gY2hhc2luZyBtb29uIGFuaW1hdGlvbnNcbi8vIGFuaW1hdGlvbnMgbGFzdCAzMHNlY29uZHNcbi8vIGxhc3QgMS41c2Vjb25kcyBvZiBhbmltYXRpb24gaXMgdHJhbnNmb3JtIGJhY2t0byBvcmlnaW5hbCBzdGF0ZVxuQC13ZWJraXQta2V5ZnJhbWVzIE1vb25JbWFnZUFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cblxuICA3NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgXG4gIDg1JSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxuXG59XG5cbkBrZXlmcmFtZXMgTW9vbkltYWdlQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICBcbiAgODUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG59XG5cbkBtaXhpbiBNb29uSW1hZ2VBbmltYXRpb24ge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBNb29uSW1hZ2VBbmltYXRpb247XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IE1vb25JbWFnZUFuaW1hdGlvbjtcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7ICBcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIE1vb25HcmFkaWVudFJpc2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgODUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBNb29uR3JhZGllbnRSaXNlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIDg1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cbkBtaXhpbiBNb29uR3JhZGllbnRSaXNlIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogTW9vbkdyYWRpZW50UmlzZTtcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogTW9vbkdyYWRpZW50UmlzZTtcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7ICBcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIE1vb25UeXBlUmV2ZWFsIHtcbiAgMCUge1xuICAgIGxldHRlci1zcGFjaW5nOmluaGVyaXQ7XG4gIH1cblxuICA4NSUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cbn1cblxuQGtleWZyYW1lcyBNb29uVHlwZVJldmVhbCB7XG4gIDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzppbmhlcml0O1xuICB9XG4gIFxuICA4NSUge1xuICAgIGxldHRlci1zcGFjaW5nOi4xNWVtO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cbn1cblxuXG5AbWl4aW4gTW9vblR5cGVSZXZlYWwge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBNb29uVHlwZVJldmVhbDtcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogTW9vblR5cGVSZXZlYWw7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTtcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAgXG59XG5cblxuXG5cblxuIiwiLy8gZm9udC1mYW1pbHk6ICdKb3NlZmluIFNhbnMnLCBzYW5zLXNlcmlmO1xuLy8gZm9udC1mYW1pbHk6ICdNdWxpJywgc2Fucy1zZXJpZjtcbi8vIGZvbnQtZmFtaWx5OiAnUm9ib3RvIFNsYWInLCBzZXJpZjtcblxuLy8gYm9keSBiYXNlXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6ICdNdWxpJywgJ1RyZWJ1Y2hldCBNUycsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbiAgZm9udC1zaXplOjFlbTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuLy8gYmFzZSBoZWFkaW5nIHN0eWxpbmdcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIC5hbHBoYSwgLmJldGEsIC5nYW1tYSwgLmRlbHRhLCAuZXBzaWxvbiwgLnpldGEge1xuICBtYXJnaW4tdG9wOjA7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbn1cbi8vIGgxIGlzIHVzZWQgZm9yIHRoZSBzaXRlIGxvZ28gb25seSBmb3IgcGFnZSBoZWFkaW5ncyBvciBjcmVhdGluZyB0b3AgbGV2ZWwgc2VjdGlvbnNcbi8vIHVzZSBoMiBvciAuYmV0YVxuLmFscGhhIHtcbiAgY29sb3I6JGNoYXJjb2FsO1xuICBmb250LXNpemU6Mi4yNWVtO1xuICBsaW5lLWhlaWdodDoxLjA1O1xuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBjb250ZW50OicnO1xuICAgIGhlaWdodDouMTY2NmVtO1xuICAgIHdpZHRoOjQuMTY3N2VtO1xuICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgICBtYXJnaW4tYm90dG9tOi4zNWVtO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxufVxuXG5oMiwgLmJldGEge1xuICBjb2xvcjokY2hhc2luZ0dyYXk7XG4gIGZvbnQtc2l6ZToyZW07XG4gIG1hcmdpbi1ib3R0b206LjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNjI1O1xuICAmOmFmdGVyIHtcbiAgICBtYXJnaW4tdG9wOi40ZW07XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBjb250ZW50OicnO1xuICAgIGhlaWdodDouMTg3NWVtO1xuICAgIHdpZHRoOjMuMTI1ZW07XG4gICAgYmFja2dyb3VuZDokeWVsbG93O1xuICB9XG59XG5cbi8vIGFsdGVybmF0ZSBsZXZlbCB0d28gaGVhZGluZ1xuLnByZW1pZXJlLWRhdGUge1xuICBjb2xvcjokZ3JheTtcbiAgZm9udC1zaXplOjJlbTtcbiAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICBsaW5lLWhlaWdodDoxLjA2MjU7XG59XG5cbi5vdmVybGluZSB7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICBoMSwgLmFscGhhe1xuICAgIGxpbmUtaGVpZ2h0OjEuMDU7XG4gICAgbWFyZ2luLWJvdHRvbTouMmVtO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIG1hcmdpbi10b3A6LjRlbTtcbiAgICBtYXJnaW4tYm90dG9tOi43NWVtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgY29udGVudDonJztcbiAgICBoZWlnaHQ6LjM3NWVtO1xuICAgIHdpZHRoOjkuMzc1ZW07XG4gICAgYmFja2dyb3VuZDokeWVsbG93O1xuICB9XG59XG5cbi8vIGhlYWRpbmcgYW5pbWF0aW9uXG4uanMge1xuICAuYWxwaGEsICBoMiwgLmJldGEsIC5vdmVybGluZSB7XG4gICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbih3aWR0aCwgLjc1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgd2lkdGg6MDtcbiAgICB9XG4gIH1cbiAgLm92ZXJsaW5lIHtcbiAgICAmLmFuaW1hdGUge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICB3aWR0aDo5LjM3NWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAuYWxwaGEsIGgyLmFscGhhIHtcbiAgICAmLmFuaW1hdGUge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICB3aWR0aDo0LjE2NzdlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaDIsIC5iZXRhIHtcbiAgICAmLmFuaW1hdGUge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIHdpZHRoOjMuMTI1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmgzLCAuZ2FtbWEge1xuICBsaW5lLWhlaWdodDoxLjI1O1xuICBjb2xvcjokY2hhcmNvYWw7XG4gIGZvbnQtc2l6ZToxLjc1ZW07XG59XG5cbmg0LCAuZGVsdGEge1xuICBjb2xvcjokbWVkR3JheTtcbiAgZm9udC1zaXplOjEuNjVlbTtcbiAgbGluZS1oZWlnaHQ6MS4wNztcbn1cblxuaDUsIC5lcGlzbG9uIHtcbiAgY29sb3I6YmxhY2s7XG4gIGZvbnQtc2l6ZToxLjM3NWVtO1xuICBsaW5lLWhlaWdodDoxLjA4O1xufSBcblxuaDYsIC56ZXRhIHtcbiAgY29sb3I6JGdyYXk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgZm9udC1zaXplOjFlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLy8gY29weSBhbmQgbGlzdHNcbnAge1xuICBtYXJnaW46MCAwIDEuNjY2NjY3ZW07XG4gIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbn1cblxuQG1peGluIHNlY3Rpb25IZWFkaW5nIHtcbiAgZm9udC1zaXplOjIuNWVtO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6MjAwO1xuICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAuMTVlbTtcbiAgbWFyZ2luOjFlbSAwO1xuICAmOmFmdGVyLCA6YmVmb3JlIHtcbiAgICBjb250ZW50Om5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgZm9udC1zaXplOjQuMDYyNWVtO1xuICB9XG59XG5cbkBtaXhpbiBsYXJnZUNvcHkge1xuICBtYXJnaW46MCAwIDEuNTsgLyogMCAwIDEuMTM2MzYzNjM2NGVtOyBBRS0xMjcwICovXG4gIGZvbnQtc2l6ZToxLjE4OGVtOyAvKiAxLjM3NWVtOyAgQUUtMTI3MCBjaGFuZ2VkIGZyb20gMS4yNWVtICovXG4gIGxpbmUtaGVpZ2h0OjEuNzI3MjcyNzI3Mztcbn1cblxuXG4ucHJvbW8tdGV4dCB7XG4gIGNvbG9yOndoaXRlO1xuICBmb250LXNpemU6MS41ZW07XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAuMTVlbTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgZm9udC1zaXplOjIuODEyNWVtO1xuICB9XG59XG5cbi8vIHRhcmdldGluZyBwbHVnaW4gY29udGFpbmVyIGNsYXNzIGluY2x1ZGVkIG9uIGZlYXR1cmUtZGV0YWlsLCB1dGlpbHR5IHBhZ2UgYW5kIDQwNCB0ZW1wbGF0ZVxuLy8gcHJldmVudHMgY29sbGlzaW9ucyB3aXRoIGxpc3RzIHNpdGUgd2lkZVxuLnBsdWdpbi1jb250YWluZXIge1xuICBvbCwgdWwsIHAge1xuICAgIGZvbnQtZmFtaWx5OiAnQXJidXR1cyBTbGFiJywgR2VvcmdpYSwgc2VyaWY7XG4gIH1cblxuICBwIHtcbiAgICBAaW5jbHVkZSBsYXJnZUNvcHk7XG4gIH1cbiAgXG4gIG9sLCB1bCB7XG4gICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgbWFyZ2luOjAgMCAxLjY2NjY2N2VtO1xuICAgIHBhZGRpbmctbGVmdDoxLjVlbTtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIHBhZGRpbmctbGVmdDoyLjVlbTtcbiAgICB9XG4gICAgbGkge1xuICAgICAgbWFyZ2luLWJvdHRvbToxZW07XG4gICAgfVxuICB9XG4gIG9sIHtcbiAgICBwYWRkaW5nLWxlZnQ6MmVtO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgcGFkZGluZy1sZWZ0OjNlbTtcbiAgICB9XG4gIH1cbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6bm9uZTtcbiAgICBsaSB7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctbGVmdDouNWVtO1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0Oi0uNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDoxLjU7XG4gICAgICAgIGNvbnRlbnQ6J1xcMjAyMic7XG4gICAgICAgIGNvbG9yOiR5ZWxsb3c7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxufVxuIiwiLnR3by11cCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyIG9mIDQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNiBvZiAxMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50aHJlZS11cCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiAxMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mb3VyLXVwIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcblxuICAgIGgzLmRlbHRhIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NWVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMyBvZiAxMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxufVxuXG4uZml2ZS11cCB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtZ2FwOiAkdi1yaHl0aG07XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24tY29udGVudDogc3RhcnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnIgMWZyIDFmciAxZnI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnIgMWZyO1xuICAgIH1cblxuICAgIGgzLmRlbHRhIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NWVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgICAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiA0IC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMyAvIHNwYW4gMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoMykge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiA1IC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIDE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm50aC1jaGlsZCg0KSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogNCAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gc3BhbiA2O1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiA0IC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAzIC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxIC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vIEdyaWQgRmFsbGJhY2tcbiAgICBAc3VwcG9ydHMgbm90IChkaXNwbGF5OiBncmlkKSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIuNjY2IG9mIDgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg0IG9mIDEyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNpeC11cCB7XG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgzIG9mIDkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDMgb2YgMTIpO1xuXG4gICAgICAgICAgICAmOm50aC1jaGlsZCg1KSxcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDYpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG5cbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42MjU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnNvY2lhbC1saXN0IHtcbiAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgZGlzcGxheTpmbGV4O1xuICB0ZXh0LWFsaWduOmNlbnRlcjsgIFxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoyZW07XG4gICAgaGVpZ2h0OjJlbTtcbiAgICBzdmcge1xuICAgICAgcGF0aCB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxpIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOjAgLjI1ZW07XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcbiAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xuICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgc3ZnIHtcbiAgICAuYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiRncmF5OyAgICBcbiAgICB9XG4gICAgLmNvbG9yIHtcbiAgICAgIGZpbGw6d2hpdGU7XG4gICAgfVxuICB9XG59IiwiLnRlYXNlci1saXN0IHtcbiAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbn1cblxuLnRlYXNlci1pdGVtIHtcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46MCAwICR2LXJoeXRobS8yO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICAgIGEge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICB9XG4gICAgaW1nICB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICB9XG4gIH1cbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xuICB9XG4gIGgzIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS80O1xuICAgIC5wYXNzcG9ydC1pY29uIHtcbiAgICAgIG1heC13aWR0aDoxZW07XG4gICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICB9XG4gIH1cbiAgLnpldGEge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzQ7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gIH1cbiAgLmljb24ge1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIGJvdHRvbTowO1xuICAgIGxlZnQ6MDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDozLjEyNWVtO1xuICAgIGhlaWdodDozLjEyNWVtO1xuICAgIGJhY2tncm91bmQ6cmdiYSgkYmx1ZSwgLjc1KTtcbiAgICBpbWcge1xuICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgbWF4LXdpZHRoOjEuNTYyNWVtO1xuICAgICAgbWF4LWhlaWdodDoxLjU2MjVlbTtcbiAgICAgIHdpZHRoOmF1dG87XG4gICAgICBoZWlnaHQ6YXV0bztcbiAgICB9XG4gIH1cbn1cblxuLmNvbGxlY3Rpb24taXRlbSB7XG4gIGZpZ3VyZSB7XG4gICAgcGFkZGluZy1ib3R0b206MjcuNSU7XG4gIH1cbn1cblxuLmpzIHtcbiAgLnRlYXNlci1pdGVtIHtcbiAgICAmLnNsaWRlLWluLWl0ZW0ge1xuICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgICAgIEBpbmNsdWRlIHNsaWRlSW5VcDtcbiAgICB9XG4gICAgJi5oaWRkZW4taXRlbSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG59IiwiLy8gR2VuZXJpYyBTdHlsaW5nIGZvciBwbGFjZWhvbGRlcnMuIExheW91dCBjYW4gYmUgZm91bmQgaW4gZ3JpZCBoZWxwZXJzXG4ucGx1Z2luLWJsb2NrLCAucGx1Z2luLWxpc3QtYmxvY2sge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbn1cblxuLnBsdWdpbi1ibG9jayB7XG4gICAgaDMge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwLjA2MjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtIC8gODtcbiAgICB9XG59XG5cbi5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICB9XG59XG5cbi5hbHBoYSB7XG4gICAgJiArIC5wbHVnaW4tYmxvY2ssICYgKyAucGx1Z2luLWxpc3QtYmxvY2sge1xuICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAyO1xuICAgIH1cbn1cblxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIGZpZ3VyZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGphbmt5IG92ZXJpZGUgb2YgZGphbmdvIGlubGluZSBzdHlsaW5nIGZvciBmbG9hdGluZyBzdHVmZlxuKltzdHlsZSo9XCJmbG9hdDogbGVmdFwiXSwgLmxlZnQge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG8gKCR2LXJoeXRobSAqIDEuNSkgYXV0bztcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICR2LXJoeXRobTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogKCR2LXJoeXRobSAvIDIpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4qW3N0eWxlKj1cImZsb2F0OiByaWdodFwiXSwgLnJpZ2h0IHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvICgkdi1yaHl0aG0gKiAxLjUpIGF1dG87XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgZGlzcGxheTogaW5oZXJpdDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkdi1yaHl0aG07XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICgkdi1yaHl0aG0gLyAyKSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmNlbnRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn0iLCIvKipcbiAqIHdhbGxvcC5jc3NcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IERlZmF1bHQgc3R5bGVzIGZvciB3YWxsb3Ag4oCTIHJlY29tbWVuZGVkXG4gKlxuICogQGF1dGhvciBQZWRybyBEdWFydGVcbiAqIEBhdXRob3IgaHR0cDovL3BlZHJvZHVhcnRlLm1lL3dhbGxvcFxuICovXG5cbi5jYXJvdXNlbC1jb250YWluZXIge1xuICAgICo6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAwLjEyNWVtIHNvbGlkICR5ZWxsb3c7XG4gICAgfVxuXG4gICAgLmZ1bGwtc2NyZWVuLFxuICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5XYWxsb3AtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcbiAgICAgICAgZ3JpZC1nYXA6IDNweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgLldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgd2lkdGg6IDE1MCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTI1JTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5qcyB7XG4gICAgLy8gYWRkZWQgdG8gZm9yIGV4aXQgYW5pbWF0aW9uc1xuICAgIC5jYXJvdXNlbC1jb250YWluZXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgICAgICB9XG4gICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLldhbGxvcC1saXN0IHtcbiAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLmNhcm91c2VsIHtcbiAgICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24sXG4gICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgICAgIC5XYWxsb3Age1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoMC40NXMpO1xuICAgICAgICAgICAgJi5lbnRlcmluZy1mdWxsc2NyZWVuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzbGlkZUluRG93bjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZXhpdGluZy1mdWxsc2NyZWVuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzbGlkZU91dERvd247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmVudGVyaW5nLWJhY2sge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZhZGVJbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYudmlld2luZy1mdWxsIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogYmxhY2s7XG4gICAgICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDc1dmggKyAxZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAyMCU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogY2FsYyg3NXZoICsgMS4xNWVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgJi5XYWxsb3AtaXRlbS0tY3VycmVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1lZGlhLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3NXZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogM2VtIGF1dG8gMCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDYwdnc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZWUtbW9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGNhbGMoMjAlIC0gMC40NWVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDc1dmggKyA3Ljc1ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJi5sb25nLWNhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgIFRoaXMgZWxlbWVudCBncm91cHMgYWxsIHRoZSBpdGVtcywgYnV0IG5vdCB0aGUgYnV0dG9uc1xuICAgIEl0J3MgYSByZWNvbW1lbmRhdGlvbiBidXQgaXQncyB2ZXJ5IGxpa2VseVxuICAgIHlvdSdsbCB3YW50IHRvIGhpZGUgYW55IG92ZXJmbG93IGZyb20gdGhlIGl0ZW1zXG4gICAgRXNwZWNpYWxseSB3aGVuIGRvaW5nIGFuaW1hdGlvbnMgc3VjaCBhcyBzY2FsZVxuICAgKi9cblxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLldhbGxvcC1saXN0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgVGhpcyBpcyB0aGUgaXRlbSBlbGVtZW50XG4gICAgQnkgZGVmYXVsdCwgdGhleSBhcmUgYWxsIGhpZGRlbiBhbmRcbiAgICBwb3NpdGlvbmVkIGFic29sdXRlXG4gICAgSSByZWNvbW1lbmQgYWx3YXlzIGhhdmluZyAuV2FsbG9wLWl0ZW0tLWN1cnJlbnRcbiAgICBpbiB5b3VyIG1hcmt1cCBieSBkZWZhdWx0IChwcm9iYWJseSBvbiB0aGUgZmlyc3QgZWxlbWVudClcbiAgICovXG5cbiAgICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgICAgIC5XYWxsb3AtaXRlbSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgLm1lZGlhLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNGVtO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMi44MTI1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJvdXNlbC1pdGVtLWNhcHRpb24ge1xuICAgICAgICBwYWRkaW5nOiAwLjVlbSAkdi1yaHl0aG07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgLypcbiAgICBUaGlzIGlzIHRoZSBjdXJyZW50IGl0ZW0gZWxlbWVudFxuICAgIEFsbCB3ZSBkbyBoZXJlLCBpcyBtYWtlIGl0IHZpc2libGUgYWdhaW4gcmVzZXRcbiAgICB0aGUgcG9zaXRpb24gdG8gc3RhdGljLiBDb3VsZCBhbHNvIGJlIHJlbGF0aXZlXG4gICAqL1xuXG4gICAgLnBsdWdpbi1jb250YWluZXIge1xuICAgICAgICAuV2FsbG9wLWl0ZW0tLWN1cnJlbnQge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICYubG9uZy1jYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgLmhpZGUtbW9yZSxcbiAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG1heC1oZWlnaHQsIDFzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogNC41ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogNC41ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZWUtbW9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRyZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGNhbGMoNSUgLSAwLjQ1ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogNDAuMjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAuNDVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmhpZGUtbW9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDUlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA4LjU1ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtICogMiA1JSAkdi1yaHl0aG0gNSU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhpZGUtbW9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWdjYXB0aW9uLFxuICAgICAgICAgICAgLmNhcHRpb24ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICR2LXJoeXRobSAwIDAgMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKGJsYWNrLCAwLjc1KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxLjVlbSBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41NWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtICogMjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmNyZWRpdCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDMwcHggIWltcG9ydGFudDtcblxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDNweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvaWNvbi1jYW1lcmEuc3ZnKSBuby1yZXBlYXQgbGVmdCB0b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuV2FsbG9wLWJ1dHRvblByZXZpb3VzLFxuICAgIC5XYWxsb3AtYnV0dG9uTmV4dCB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkeWVsbG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbihudWxsLCAkbWVkR3JheSk7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMC4zZW0gMC40NWVtIDAuNWVtIDAuNDVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDM3LjVlbTtcbiAgICAgICAgbGVmdDogNSU7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgICAuZnVsbC1zY3JlZW4taWNvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgd2lkdGg6IDEuMjVlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS4yNWVtO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0wLjA1ZW07XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJHllbGxvdztcbiAgICAgICAgICAgIC5mdWxsLXNjcmVlbi1pY29uIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkeWVsbG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMjcuNzVlbTtcbiAgICAgICAgcmlnaHQ6IDUlO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIHRvcDogMzcuNzVlbTtcbiAgICAgICAgfVxuICAgICAgICAuY291bnQge1xuICAgICAgICAgICAgY29sb3I6ICRtZWRHcmF5O1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW46IC0wLjA1ZW0gMWVtIDAgMDtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNzVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgICAgIC52aWRlby1nYWxsZXJ5IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDRlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uLFxuICAgICAgICAgICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgICAgICAgICB0b3A6IDAuNWVtO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDIzLjc1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI1Ljc1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogY2FsYyg1JSAtIDAuNDVlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNhcHRpb24ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAyLjU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAxLjU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi52aWV3aW5nLWZ1bGwge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogY2FsYyg1MCUgLSAyM2VtKTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAyOGVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDIzZW0pO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI4ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5XYWxsb3AtaXRlbS0tY3VycmVudC5XYWxsb3AtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5jb3ZlLXdyYXBwZXIge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDBlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAkdi1yaHl0aG0gYXV0byAwIGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5jb3ZlLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIHdhbGxvcC0tc2xpZGUuY3NzXG4gKlxuICogQGZpbGVvdmVydmlldyBTbGlkZSBhbmltYXRpb24gZm9yIHdhbGxvcFxuICpcbiAqIEBhdXRob3IgUGVkcm8gRHVhcnRlXG4gKiBAYXV0aG9yIGh0dHA6Ly9wZWRyb2R1YXJ0ZS5tZS93YWxsb3BcbiAqL1xuXG4vKiB0aGUgMTBtcyBhbmltYXRpb24tZGVsYXkgZml4ZWQgc29tZSB3ZWlyZCByZW5kZXJpbmcgaXNzdWVzIHdpdGggaVBob25lICovXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLXNob3dQcmV2aW91cyB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbW96LWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tcy1hbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICBhbmltYXRpb246IHNsaWRlRnJvbUxlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1zaG93TmV4dCB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlRnJvbVJpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1vei1hbmltYXRpb246IHNsaWRlRnJvbVJpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICBhbmltYXRpb246IHNsaWRlRnJvbVJpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZVByZXZpb3VzLFxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1oaWRlTmV4dCB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1oaWRlUHJldmlvdXMge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tb3otYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tcy1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgYW5pbWF0aW9uOiBzbGlkZVRvTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVOZXh0IHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1vei1hbmltYXRpb246IHNsaWRlVG9SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tcy1hbmltYXRpb246IHNsaWRlVG9SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIGFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVGcm9tTGVmdCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVGcm9tTGVmdCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkAtbXMta2V5ZnJhbWVzIHNsaWRlRnJvbVJpZ2h0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVG9MZWZ0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9SaWdodCB7XG4gICAgOTklIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tb3ota2V5ZnJhbWVzIHNsaWRlVG9SaWdodCB7XG4gICAgOTklIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVG9SaWdodCB7XG4gICAgOTklIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cbiIsIi5hY2NvcmRpb24tdG9nZ2xlIHtcbiAgZGlzcGxheTpub25lO1xufVxuXG4uanMge1xuICAuYWNjb3JkaW9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyOm5vbmU7XG4gICAgYmFja2dyb3VuZDpub25lO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBjb2xvcjokcmVkO1xuICAgIGZvbnQtc2l6ZToxLjI1ZW07XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIHBhZGRpbmctYm90dG9tOiR2LXJoeXRobS8zO1xuICAgIGJvcmRlci1ib3R0b206LjEyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICoge1xuICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlci1ib3R0b206LjEyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOi0uMTVlbTtcbiAgICAgIGhlaWdodDouNzVlbTtcbiAgICAgIHdpZHRoOi43NWVtO1xuICAgICAgZmlsbDokcmVkO1xuICAgIH1cbiAgICAudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbih0cmFuc2Zvcm0sIC4yNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtcbiAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgLnZlcnRpY2FsIHtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGVZKDApOyBcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDApO1xuICAgICB9XG4gICAgfVxuICB9XG4gIC5hY2NvcmRpb24tY29udGVudCB7XG4gICAgZGlzcGxheTpub25lO1xuICAgICYub3BlbiB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgIH1cbiAgfVxufSIsIi5maWx0ZXJzIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIGJhY2tncm91bmQ6I2QwZGJlZDtcbiAgcGFkZGluZzokdi1yaHl0aG07XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgZmllbGRzZXQge1xuICAgIHBhZGRpbmc6MDtcbiAgICBtYXJnaW46MDtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICBib3JkZXI6bm9uZTtcbiAgICBpbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IC05OTk5cHg7XG4gICAgICAmOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICRjb3JuZmxvd2VyO1xuICAgICAgfVxuICAgICAgJjpmb2N1cyArIGxhYmVsIHtcbiAgICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkeWVsbG93O1xuICAgICAgfVxuICAgIH1cbiAgICBsYWJlbCB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIHBhZGRpbmc6LjJlbSAxLjVlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBib3JkZXI6LjEyNWVtIHNvbGlkIHdoaXRlO1xuICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czoxLjI1ZW0gMCAwIDEuMjVlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDoxLjE1ZW07XG4gICAgICB9XG4gICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6MCAxLjI1ZW0gMS4yNWVtIDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDoxLjE1ZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgd2lkdGg6MTIuODEyNWVtO1xuICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMy43NWVtKSB7XG4gICAgICBmb250LXNpemU6My44NXZ3O1xuICAgIH1cbiAgfVxuXG4gIC5sYWJlbCB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgY29sb3I6IzQzNDM0MztcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vNDsgICAgICBcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtLzI7ICBcbiAgICB9XG4gIH1cblxuICAuc3R5bGVkLXNlbGVjdCB7XG4gICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgICBib3JkZXI6LjEyNWVtIHNvbGlkIHdoaXRlO1xuICAgICYuZm9jdXNlZCB7XG4gICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICR5ZWxsb3c7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiR5ZWxsb3cgJHllbGxvdyAkeWVsbG93ICRjb3JuZmxvd2VyO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDotLjEyNWVtO1xuICAgICAgcmlnaHQ6LS4xMjVlbTtcbiAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejQ4YzNabklIWmxjbk5wYjI0OUlqRXVNU0lnYVdROUlreGhlV1Z5WHpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQndlQ0lnZVQwaU1IQjRJaUIyYVdWM1FtOTRQU0l3SURBZ05EQWdOREFpSUhOMGVXeGxQU0psYm1GaWJHVXRZbUZqYTJkeWIzVnVaRHB1WlhjZ01DQXdJRFF3SURRd095SWdlRzFzT25Od1lXTmxQU0p3Y21WelpYSjJaU0krUEhOMGVXeGxJSFI1Y0dVOUluUmxlSFF2WTNOeklqNHVjM1F3ZTJacGJHdzZJelE0TnpKQ05EdDlMbk4wTVh0bWFXeHNPaU5HUmtaR1JrWTdmVHd2YzNSNWJHVStQSEpsWTNRZ1kyeGhjM005SW5OME1DSWdkMmxrZEdnOUlqUXdJaUJvWldsbmFIUTlJalF3SWk4K1BIQmhkR2dnWTJ4aGMzTTlJbk4wTVNJZ1pEMGlUVEV5TGpNc01UZHNOeTQzTERjdU4ydzNMamN0Tnk0M2JDMHhMamN0TVM0NGJDMDFMamtzTm13dE5TNDVMVFpNTVRJdU15d3hOM29pTHo0OEwzTjJaejQ9KTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICBoZWlnaHQ6Y2FsYygxMDAlICsgLjI1ZW0pO1xuICAgICAgd2lkdGg6Mi40OWVtO1xuICAgICAgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJGNvcm5mbG93ZXI7XG4gICAgICBib3JkZXItbGVmdDpub25lO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgcmlnaHQ6MDtcbiAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG4gICAgICBoZWlnaHQ6MTAwJTsgIFxuICAgICAgd2lkdGg6NS4yNWVtIFxcOTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICB3aWR0aDppbmhlcml0O1xuICAgICAgbWFyZ2luOjA7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtLzI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobTtcbiAgICB9ICAgIFxuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nOi4yZW0gLjc1ZW0gLjE5ZW0gLjc1ZW07XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czowO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICBwYWRkaW5nLXJpZ2h0OjRlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuICBcbiAgLyogQ0FVVElPTjogSUUgaGFja2VyeSBhaGVhZCAqL1xuICBzZWxlY3Q6Oi1tcy1leHBhbmQgeyBcbiAgICBkaXNwbGF5OiBub25lOyAvKiByZW1vdmUgZGVmYXVsdCBhcnJvdyBvbiBpZTEwIGFuZCBpZTExICovXG4gIH1cblxuICAuc29ydGluZyB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICAuc3R5bGVkLXNlbGVjdCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6MDtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICB3aWR0aDppbmhlcml0O1xuICAgICAgZmxvYXQ6cmlnaHQ7XG4gICAgfVxuICB9XG4gIFxuICAuc3VibWl0IHtcbiAgICBjbGVhcjpib3RoO1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgIGlucHV0W3R5cGU9J3N1Ym1pdCddIHtcbiAgICAgIHBhZGRpbmc6LjI1ZW0gLjVlbTtcbiAgICB9XG4gIH1cbiAgXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGZvcm0ge1xuICAgICAgKiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgZm9udC1zaXplOjEuMDYyNWVtO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICB9XG59XG5cblxuLy8gbG9hZGluZ1xuLmZpbHRlci10YXJnZXQge1xuICAmLmxvYWRpbmcge1xuICAgIEBpbmNsdWRlIGFuaW1hdGVkKC4zNXMpO1xuICAgIEBpbmNsdWRlIGZhZGVJbjsgXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG9wYWNpdHk6MDtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OidMb2FkaW5nLi4uJztcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG4gICAgICBjb2xvcjojNDM0MzQzO1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBmb250LXNpemU6MS4yNWVtO1xuICAgICAgcGFkZGluZzokdi1yaHl0aG07XG4gICAgICB6LWluZGV4Ojk7XG4gICAgICBvcGFjaXR5OjE7XG4gICAgfVxuICB9XG4gICYubG9hZGVkIHtcbiAgICB1bCB7XG4gICAgICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICAgICAgQGluY2x1ZGUgc2xpZGVJblVwO1xuICAgIH1cbiAgfVxufVxuXG4vLyByZW1vdmUgc3VibWl0IHdoZW4gamF2YXNjcmlwdCBpcyBlbmFibGVkXG4uanMge1xuICAuZmlsdGVycyB7XG4gICAgc2VsZWN0IHtcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOm5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIC5zdWJtaXQge1xuICAgICAgZGlzcGxheTpub25lIFxuICAgIH1cbiAgfVxufSIsIi5yZWxhdGVkLWZpbG1zIHtcbiAgbWFyZ2luOiR2LXJoeXRobSoyIDA7XG4gIGltZyB7XG4gICAgd2lkdGg6MTAwJTtcbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDEgb2YgMik7XG4gICAgICBtYXJnaW4tYm90dG9tOmd1dHRlcigpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgxLjMzKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBsaSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206Z3V0dGVyKCk7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbGkge1xuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIuNCBvZiAxMik7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgaW5wdXQsIGJ1dHRvbiB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gU2xhYicsIHNlcmlmO1xuICAgIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtO1xuICB9XG4gIC5lbWFpbC1maWVsZCB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JheTtcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxuICAuemlwLWNvZGUtZmllbGQge1xuICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgICB3aWR0aDoxMDAlO1xuICAgICBib3JkZXI6MXB4IHNvbGlkICRncmF5O1xuICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG4gIC5ub3RlIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgZm9udC1zaXplOi44NWVtO1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtLzI7XG4gIH1cbiAgYnV0dG9uW3R5cGU9J3N1Ym1pdCddIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgQGluY2x1ZGUgYnV0dG9uKCRuYXZ5LCB3aGl0ZSk7XG4gICAgQGluY2x1ZGUgYXJyb3ctYnV0dG9uKHdoaXRlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICB3aWR0aDo5ZW07XG4gICAgei1pbmRleDoyO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDpkYXJrZW4oJG5hdnksIDUlKTtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDonJztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgdG9wOjA7XG4gICAgICBsZWZ0OjA7XG4gICAgICB6LWluZGV4Oi0xO1xuICAgICAgQGluY2x1ZGUgbG9uZy1zaGFkb3coYm94LCAkbmF2eSwgMjAwLCBmYWxzZSwgZmFsc2UsIHJpZ2h0KTtcbiAgICAgIG9wYWNpdHk6LjM1O1xuICAgIH1cbiAgfVxufSIsIi8vIGRlZmF1bHQgcGFnaW5hdGlvblxuLnBhZ2luYXRpb24ge1xuICBtYXJnaW46JHYtcmh5dGhtKjIgMDtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIC5sb2FkLW1vcmUge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxuICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgIG1hcmdpbjokdi1yaHl0aG0qMyAwO1xuICAgIC50aXRsZSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBhamF4IHBhZ2luYXRpb25cbi5qcyB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICAubG9hZC1tb3JlIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgQGluY2x1ZGUgYnV0dG9uKCRyZWQsIHdoaXRlKTtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6JGNyaW1zb247XG4gICAgICB9XG4gICAgfVxuICAgIC5wYWdlLW51bWJlcnMge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgIH1cbiAgfVxufVxuXG4ubm8tcmVzdWx0cyB7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OjEuMjVlbTtcbiAgcGFkZGluZzokdi1yaHl0aG07XG4gIGNvbG9yOiM0MzQzNDM7XG4gICYuZXJyb3Ige1xuICAgIGNvbG9yOiRyZWQ7XG4gICAgYiB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgIH1cbiAgfVxufVxuXG4uYXBwZW5kZWQtaXRlbSB7XG4gIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gIEBpbmNsdWRlIHNsaWRlSW5VcDtcbn1cbiIsIi5jbG9jay1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDokY2hhc2luZ1NsYXRlO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgcGFkZGluZzo0ZW0gNSUgNmVtIDUlO1xuICAucHJvbW8tdGV4dCB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLXRvcDoxZW07ICBcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBwYWRkaW5nOjZlbSA1JSA4ZW0gNSU7XG4gIH1cbn1cblxuXG4uaW1hZ2Utc2VwYXJhdG9yICsgLmNsb2NrLXNlY3Rpb24ge1xuICBwYWRkaW5nOjdlbSA1JSA2ZW0gNSU7XG4gIG1hcmdpbi10b3A6LTNlbTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgcGFkZGluZzo5ZW0gNSUgOGVtIDUlO1xuICB9XG59XG5cbi5jb3VudGRvd24ge1xuICBAaW5jbHVkZSBmbGV4O1xuICBAaW5jbHVkZSBmbGV4LWp1c3RpZnktY2VudGVyO1xuICBAaW5jbHVkZSBmbGV4LXdyYXA7XG4gIGNvbG9yOiRjaGFzaW5nSGVhdGhlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDoxO1xuICBmb250LXNpemU6MjB2dztcbiAgID4gc3BhbiB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgZm9udC1mYW1pbHk6ICdkcy1kaWdpdGFsaXRhbGljJywgc2Fucy1zZXJpZjtcbiAgICBiYWNrZ3JvdW5kOiRjaGFzaW5nV3RmQmxhY2s7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzouMTVlbSAwIC41NWVtIDA7XG4gICAgd2lkdGg6MmVtO1xuICAgIG1hcmdpbi1ib3R0b206LjJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzouMDg1ZW07XG4gICAgbWFyZ2luLXJpZ2h0Oi4yZW07XG4gIH1cbiAgYiB7XG4gICAgQGluY2x1ZGUgY2VudGVyKHRydWUsIGZhbHNlKTtcbiAgICBib3R0b206MS4xNWVtO1xuICAgIGZvbnQtZmFtaWx5OiAnTXVsaScsICdUcmVidWNoZXQgTVMnLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OjIwMDtcbiAgICBmb250LXNpemU6LjI3NWVtO1xuICAgIGNvbG9yOiRncmF5O1xuICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIGxldHRlci1zcGFjaW5nOjA7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgZm9udC1zaXplOjRlbTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBmb250LXNpemU6NWVtO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGZvbnQtc2l6ZTo3ZW07XG4gIH1cbn1cbiIsIi5mZWF0dXJlIHtcbiAgICAub3ZlcmxpbmUge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgLnpldGEge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgKyBoNCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMC42NWVtO1xuICAgICAgICB9XG4gICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDVlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB9XG4gICAgICAgIC5pbnRybyB7XG4gICAgICAgICAgICBtYXJnaW46ICR2LXJoeXRobS8xLjUgMCAwIDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgfVxuICAgICAgICAuYnlsaW5lIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgJiArIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtLzI7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDEuMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkdi1yaHl0aG0gKiAxLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgICAgIC8vIGhpZGUgZm9yIG5vbmUgamF2YXNjcmlwdCBjcGFibGUgYnJvd3NlcnNcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBjb2xvcjogJGdyYXk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjAxNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjk1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMS45NWVtO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMS45NWVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4xZW07XG4gICAgICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvcHktdXJsLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlYWE3MDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjFlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIC5jb2xvciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuZmFjZWJvb2sge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogIzQwNzNiNztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAudHdpdHRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjMjhhOWUwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5tYWlsdG8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogIzhkYjcyOTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAuY29weSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjZWFhNzAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAuaW50cm8tY29udGVudCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNSBmaXJzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWQtYmxvY2sge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWQtYmxvY2sge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1wNC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuXG4gICAgICAgIC5oZXJvIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDU2JTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgdmlkZW8ge1xuICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJ1dHRvbi5wbGF5LXBhdXNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2ltYWdlcy9idXR0b25fdmlkZW9fcGxheS5wbmcpIG5vLXJlcGVhdCAwIDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzNHB4IDY4cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM1O1xuXG4gICAgICAgICAgICAgICAgJi5wYXVzZWQge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0zNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXB0aW9uLXdyYXBwZXIge1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHRleHQgYmxvY2sgc3R5bGluZ1xuICAgIC5mZWF0dXJlLWNvbnRlbnQge1xuICAgICAgICBtYXgtd2lkdGg6IDQ0LjUzMTI1ZW07XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgICAvLyBtZWRpYSBlbGVtZW50IHN0dWZmcyBmb3IgZmVhdHVyZXMgb25seVxuICAgIC5jZW50ZXIge1xuICAgICAgICAmLmxhcmdlLW1lZGlhIHtcbiAgICAgICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTcuODEyNWVtKSB7XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNTcuODEyNWVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTYuNjQwNjI1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5yaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgJi5tZWRpdW0tbWVkaWEge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC01ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxlZnQge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICYubWVkaXVtLW1lZGlhIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC01ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5qcyB7XG4gICAgLmZlYXR1cmUge1xuICAgICAgICAub3ZlcmxpbmUge1xuICAgICAgICAgICAgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5jb3B5LXVybC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICB0b3A6IC02ZW07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1ZW07XG4gICAgICAgICAgICAgICAgbGVmdDogLTEwZW07XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgICAgICAmLm9wZW4ge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxZW07XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMC42NWVtO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMS41ZW07XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMS41ZW07XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMS4yNGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjI0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA3ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHBhZGRpbmcgYW5kIG1hcmdpbiBhZGp1c3RtZW50c1xuICAgICAgICAuYWQtYmxvY2sge1xuICAgICAgICAgICAgJi5kZXNrdG9wIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCAwICR2LXJoeXRobSAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtJHYtcmh5dGhtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ2RzLWRpZ2l0YWxpdGFsaWMnO1xuICBzcmM6IHVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjI7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R01nQUJBQUFBQUFuSUFCRUFBQUFBR0VBQUFBbGxBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwWkdWRTBjR2g0R1ZnQ0NXZ2dXQ1lSbEVRZ0ttbVNZUndFMkFpUURQQXNnQUFRZ0JZWjFCMWNNZ1JZL2QyVmlaZ1liMFJVakVTYURjdzZ5dnp6Z3lkd2IxUUNSMW5UQWdBR214QUx1b2lDVXFCM3BqSG5kZkh3NVhSUFI3SjdxdnE3dDhmeC9kWDNlSnozSkxPUEludm5rQmJUTzkyNEl2U0hnZHNzd0ZYM3FIRStBS2dlTENyQWk2b0Yrckh2TDFQeHRpa3hub1FyT0ZPVGl4Q3hPUEZJdm1TVjRGQUlnQVI3ZStoK2dYcnU1alV4eGRCbWJscDFOWERLK2RBVXR0NUhpaFlMT1NxbUc5SU1UZjJQQStGZm4vODJWOXM4czUwb2dWSlFyQzFlaEs4ek96eXhNSnJzSG1OMGpTaG16T1VaVlZuMlZkWnpkbGhXaVBhTktLSHlkUEdGOWo3R2xoMStCbFFnREc3RStjdHRMQVNBQStIajdxbmNBNElqWDMvc0I0TE5yckI2aHVzVUFMQkFFeUJBR1NVNEFYT1Z6OUFJVVdOVUc3eXlOMEx1dzhteDBMWDJEOEJNZHVHZWdIeDFBc3VPUGJ2clhCUDBNUFNKREV3QnBKVllKY29ta2xac0JqZ0pDQ0IvQ3lKV2dSZmlPUC8vL1QwVDlqbkd2ZkR5N2lqUTBqSFRacFNSa3oyVHkrakx3L3dDc3RPY0hZUlFuMEhaY1lCR2V3ak9HZk5KNzJjZHhpc29CYmtSNU5weVRSK0dzSVJXdzdVUWQ2STVHcStTenpWTEpiYURTUitjTjVNaERpRHR2RUM2emdDWXJxcXpkWGJwV0hZRWhqOG93cU43QUxwK0xyTWhqOUFtK29tS1JlOUsvK0l1S0ZSbFVSK0cwSVRVempGbFY3c3BaWGxQbURkcnhyZlJFd3p1MlQxeFRnUUZsTkhpT2IwOEhodXkrczdNbDRiN2VFRGd5cXdaeEdqMFFBYmtqWFNIQU96TUFGMXpCYm1VM0VuL1hNQ3pMS21ZSjcwVllteEZLVm1lRGJlVEtHaUpIYm5ZbEhzTWorSUxYVlZCQ1VwV1UyalpDU1VOZGZoVFJrMGJac3BXdzluVEcycVN3OXFsdGRlbEt5WVV3ckpscW1FckIwQmhqNHRJMGNtRDBYWjBzWTNLWDlRSExzZVZNQXJoVUxpbnpiRW1kUXU3VzdLb1FtbG1JWmFBcktldE1sblNGYld2Wm1XemJqZHg4alc3S0c3SXhJSVdldHg3OTNnclFtUnRYbGoxcWxNQmxZZWs2VVBUVTQzM21tdEdnTUc5c0w2QlIrRGoxbnBYVE1OQ1FrQ0NkdlQ5RFBSemtMTHFVZ3N0RlZLa2pnRzBuNFNWUVhJVTdEQVZVb0VYaXpRbUNXZ24yaHZabW1OL3Exb3c1YzBBeEZZQnRlU01KZEkwV0Jjd2RzbjdrWVVENEU5RkhhQnNEZ2JrdWhUNElaUWkyTEEwSno2a25ab1VRcDFtekhnYWhZN29LTkFjSisrYitGRWZaNDlhamRaYW1GcVhWaGNXMHFOU3llS2phdTBhMWRaSEZhSGxwZkVXVlBhMGlyelNJQ1RETExMS28ydXVOdEo3bWFWc2h2Ym9rT1RVenYvR1lORytnbDZuQ0R2VTdNWG9abDZiZGZPMnZRZE1QbE1iSFI1T1Eyc1NhMlVlSnE2NnM4dWwxMmVYQjNGSlBtN05oeGFMVE14ZUpCNzVlczVublFGVUpudmVYc2RPNi9yZWUvVldsZDN6bHRKZWVBeXVZbjFmaGY3KzFnWVN2SklPc0dyVi9SeFg3dFQ2ZGZzcmJ1S1JzdXlqOEdwUWVYRnB3N0FYc3A3YWFLRCsyVTQ3a1FzNVJMNjAranZhZXlkeXZoYVgyYzZ1YTdSTS9INmYvNy9WYXRzSGVWWld0QnlmM2JLYnYvQnVwT3IvSEtaeUc4TzJXaFA0NDRYSHdld0RYNnVzd0pFVUtjWmxGVmF2d2RQalBYdExlVFNpZ1cycjVzNEQvL2tkN0tJUzlaa05qT3A3VHp4S3M5aEI5eWd2cStCcDFjTVFDZGk2a1pSaHRYa0E4Q2pjdkVBOTc4TVFQZmoyQ1dXZW14akFEVEFhaURIamlVbXl4anNJdU1HTngzODBFTm9QNUJNaGVKWVRsZE9CTWt4d2hodnlCSjRaaVlWbm93QzZaV1JkL1RSZjFnaERlZlZ5MmFaUGJoVU53dENnSkE0aFpNUVNvMlI3aHh4WkhvN2lJSkFkeDZlaXNjM0gxd1djaERSYWcva3MrTUxoS1dPWTZ0OU5FVXVFSnp1Risva2d3ME5FWTlvQlBYL01ZQlhjODZpZUZNU3BZZVVDcm5neUFZVWR2T25qaSs3L3V6VExNaDhHdnZWNVNFZFFYZ21sWGtTcnE3ZVFmamZhUS9BaUpkRUovTGRITmx4cGI2akRSMlV6UFEvRXpGRDFQVncxTnorZDZUTWE3ak5nMEkwMmM2VStRVTVibmlTY3JNNmdtYnRXZk1KdlFYcEpjT2pnNjlkNG9ieUlWR2JKZ2FCcTRxTU0zQklWTGtvRVdFQkFGaVRlc0F2UHBWdXRCcFREck5JVnUyb0F6Q1dhN21VeExUWFZSTE13TFIwYjRTMnFGWU5yN0RVckdoVURzc0RSdmIwOHB3ZHNlVW9Fdkk2azFoajNYRWg5TXZUVE9laENmanZrd2JrRWhNVitROXdrZ0FBaERYaUZHZWlQMW1nSkVrRU1LQlVRTDR5aUhkS0ZKQzBiNE0xb0t3YlFyQmhuajRpcCtDTm9IR1p2TTFzN2VaNFNjQ0E1QkhaNUxjRktGcjd2WGMrVUdxdGVzU2szSGk1RUNEV1hHYUNsS2o2cFZ0NlY2S09oNnhtdElxY3QxbHJWMmFSVkFEYnZhQ1duc1ZaT1FMd1gyMlRUSG56bk02cnJWUTZHYzBleXNQY2hJUld2UEdtbFc5YnF5MnF5eldaWE5JeXkrQ2l1LzB0NkhsSFliclIvRWMyeFBSU0NZbHB0RkloYmhhK0p2SEdYUG9SNFk0RzZwYW9yUG83TGZabUFJd1ljSVdGRU12dUw1aEtNRWpZVmdPaURHRllIVUh1VjkrMFFPbVFuZTJxRDBqeHZYeVRRRnRzNmliWnBuZmVVM21HaWRObTg4ZkZpdFhGbjFKUHhydEczM1M0Y1ZRNEExdGtjSXRCczR4KzRlbnNTWmFwOXdvaVZrMU5FYk03QTJlOVkxejd4d01VVXByU3FmeGxBdnRMVXJJL3dOWFJHQ2FSOGFhQmdYUXYzSzBXamY5Y3llc1g3Y3UwVFlyblFRM2QzdVN2eUE5MTdKVDE2UTRFVmNpeXZxa0pBaC9WclBkZG9uTDlkZWIzM2NWOS9UUk12ODMrSlFBS28ydkJTSmZ3b01DTmZyWi82YlNhdEQ2UC8vemlrTkNJQTNwZUkzbE1SbmZHY2RKSDlGZmNLaTJ4NER3aEs3QUpQSjN6U3NUSk5vVTRxdE1BWlRnS3hDQzdlU3prQzR4dURsdnlDcXJzUnJrVW9JYWJzcW9PbDRWYUtubDFSR1RuK29Dazdja2xzakY2OURnamdBQm8rRFNxaklxQUl4OWFyRWRYU0t5dGhLSDZzS1Y0ancrVFMyaW1OZVBNM1FPU3kvaVM0aWV3Y21jcWZvbUtwYTkrTkVzMUd6a0hDd0N0eGlLSmgrbUlpSkdWbVRzSVA4aEdvUUs3TTFhQ29NYVJXYVZZTTBSbFBrbHBZUTFEZlI4alkwWStHMHUyUDlrNWRrSnZJenVsWjFhUnUxUlhFVzNCLyttRHJtTThYa0UwZmswdkxkVmdGanFxMWhhTDNkM0l1bWNiMHNRZFZ1b2ZTcUVNN01NRldPc1lOUXJ3TXF0MnNJZTZJa0ZKQkhRYXdFQndaWGdvKzlCU1V5bERWUS8xK2E2SENaamc1bERRMzFIdkx6QXB2d2pHbXR3cDhlTHBWMXNCaGNPWlJNZEVBdkxkbEpXNW5JTUpBVW5WUWR6ZXlJTnhieGU1NUpXWGV3aUNMN2RYVHBrR3p1YkVWUkVxYWtIMmo1Q2tWLy9LeHdBZnovdTM5VzRpSGdkNWtDSkVoQ29vUURIT0VFWitqZ0FsZGd1QkhyMnp0R2UxcjhqUTkydGZwcGVwTDN3QUhCS1luNzZmKzVRTS9pN05HL2dIS2k1NjdrcC8ydlZBalpYMmFGMVVXKzljQ1Y3cUQvajNrNE5GS2JETEpMQXRFbUh3UXhJTHFrVi9wY2xUUXlGOVVMV2RnNkxrOGJXbE0xVGROQmduckwrZjcvV1ZTb09pUmRIVkpsQUFBPSkgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgIHVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxkMDlHUmdBQkFBQUFBQTBFQUJFQUFBQUFHRUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBTTRBQUFBQndBQUFBYzRqWnFOMGRFUlVZQUFBekVBQUFBSEFBQUFCNEFKd0FWVDFNdk1nQUFBZlFBQUFBOUFBQUFWbzJzZXJsamJXRndBQUFDWUFBQUFGOEFBQUZhWENuNWMyTjJkQ0FBQUFUb0FBQUFGZ0FBQUJZSFVnSndabkJuYlFBQUFzQUFBQUd4QUFBQ1pWTzBMNmRuWVhOd0FBQU12QUFBQUFnQUFBQUlBQUFBRUdkc2VXWUFBQVVnQUFBRmtnQUFEV1IvL0p1VWFHVmhaQUFBQVlBQUFBQXpBQUFBTm5KZEc4NW9hR1ZoQUFBQnRBQUFBQ0FBQUFBa0M2OEVCV2h0ZEhnQUFBSTBBQUFBS3dBQUFEd3hKQVlvYkc5allRQUFCUUFBQUFBZ0FBQUFJQk9DRjNKdFlYaHdBQUFCMUFBQUFDQUFBQUFnQVM0QmJtNWhiV1VBQUFxMEFBQUJ1UUFBQTNXVVFFMEdjRzl6ZEFBQURIQUFBQUJMQUFBQVY4VkMrZVZ3Y21Wd0FBQUVkQUFBQUhRQUFBQ1dNV2dLOTNkbFltWUFBQXo4QUFBQUJnQUFBQVplQlZzMmVOcGpZR1JnWUFEaXNHdU12K0w1YmI0eXlITXdnSURaMWtNL1FQVDFHTDRXRU0wcXpockt3TVRBQWNSQUFBQWErUWpjQUhqYVkyQmtZR0RyK1ZmRHdNQXF6c0R3L3orUVRHSGdaRUFHL0FCMHRBVEFBQUVBQUFBUEFDSUFCd0FBQUFBQUFnQUJBQUlBRmdBQUFRQUJTQUFBQUFCNDJtTmdaTzVqbk1EQXlzRENLczZ5aTRHQmtRdENNM3N6eERJK1lzQURISE5LaWhrY0dYaFYvN0NsL1V0allHRHJZV3dCQ2pPQzVBQ2lBUXBsQUFBQWVOcGplc1Bnd2dBRWpFOGdtUGsxUXhHVEdNTVZFQTNFWFVDOEhrcUQrTDloNHF6aURBd0E3T2NSY3dCNDJtTmdZR0JtZ0dBWkJrWUdFQWdCOGhqQmZCWUdDeUROeGNEQndBU0V2QXdLREphcWYvNy9CNHFCMkFZZzl2K3YveC8vdjNKTENLb1hDaGpaR09BQ2pFeEFnb2tCRlRCQ3JFUUdMS3hzN0J5Y1hOdzh2QXpEQWdBQW5JVU81d0I0MmwxUnUwNWJRUkRkRFE4RGdjVFlJRG5hRkxPWmtNWjdvUVVKeE5XTlltUTdoZVVJYVRkeWtZdHhBUjlBZ1VRTjJxOFpvS0drU0pzR0lSZElmRUkrSVJJemE0aWlORHM3czNQT21UTkx5cEdxZCtscnoxUG5KSkRDM1FiTk52MU9TTFd6QVBlazYrdU5qTFNEQjFwc1p2VEtkZnYrQ3dhYjBaUTdhZ0RsUFc4cER4bE5PNEZhdEtmKzBmd0todnY4SC9NN0dMUTAwL1RVT2ducElRVG1tM0ZMZys4WnpickxEL3FDMWVGaU1EQ2ttS2JpTGorbVV2NjNOT2RxeTdDMWtkRzhnek1SK2NrMFFGTnJiUVNhL3RRaDFmTnhGRXVReTZheE5waVlzdjRrRThHRnlYUlZVN1hNK05yQlhiS3o2R0NES3MyQkI5akRWbmtNSGc0UEpoVFN0eVRLTEEwUjltS3J4QWdSa3h3S09lWGN5ZjZrUVBsSUVzYThTVW83NDRhMUJzYVIxOENnTmsrei96eWJUVzF2SGNMNFdSekJkNzhaU3pyNHlJYmFHQkZpTzJJcGdBbEVRa1pWK1lZYXo3MHNCdVJTKzg5QWxJRGw4WTkvblFpMDd0aEVQSmUxZFE0eFZnaDZmdHZjOHN1S3UxYTV6b3RDZDIrcWFxalNLYzM3WHM2K3h3T2VIZ3ZEUVdQQm04Lzcva3FCK2p3c3JqUm9EZ1JEZWpkNi82SzE2b2lydkJjK3NpZlR2N0ZhQUFBQWVOcmJ3ZmkvZFFOakw0UDNCbzZBaUkyTWpIMlJHOTNZdENNVU53aEVlbThRQ1FJeUdpSmxON0JweDBRd2JHQlVjTjNBck8yeWdVbkJkUmNESXdzREE1TTJtTThNNGV0QStZd2JXS0FLMlVBU0xFeGlRSW1Oekc1bFFCRldrQWdiWXlsQ2hCMnNwdjQvWENSeWc0ZzJBS01iS0lBQUdnQ0xBSW9BakFDTUFJa0FpZ0NNQUljQVJBVVJBQUFBQUFBc0FDd0FMQUFzQVFvQmVnSHlBb1lES2dPeUJHNEU2QVhVQnBBR3NuamFyWmRMYXh0WEZNZlBuYmRtcE5FOHBCbHBKRHRTa25aUmdXVFh4YzRVUXhKSW9BOWF1Z25OenBzdXVrMW9sNkZkRkdwc2I5dTBYeUNMbHBJN00wa0Q2YUpUbWsyZ2hVS0NLYVh0cGxCcVNEOUFuRmowM0hsb3BMRmlUSW5CMXRGZlp3VDNkLzczbkdQZzRBSUE5NTU0Q1hpUVlSZ1FHSzJIc2xENTkrVkFFbjlmRDNrT1F3aDRKb3RNRG1WSmZib2VFcWF2bUgzemhiN1p2OEQxeHFmSkYrUDN4VXY3WDE4UWZnWUFDYTRDOEk5RUZ3UlFvQVltT05BaDV5RVVBUWFCeE8rRm1EU2d6Z3BWUjVHajZ2b2dNTWtlb2QwUjFYWURpd3lDQlRLZ3F4NTkwU09CcWczdlE2Q3B3L3VvM0QxN2IvOFRhQTVVa2FvR2hWaW5ta0dGT0VsMExKWm9PYk9KT3JVTTJvcXBZOUIyVE1HSUNLajJnQXBHeEFzYUJxaFVjcVdhS0pZUjJWWUxBOGVJbWs0N1ZkeGM4WmdTNHBmMHRucGJweVRkdEh4YThVUDhNaFpWL1JDZlpaSHJoL2d3aXp3ZnptbUVGeXBWdSttMjJ0NncrQ0hucWpEL2t5RTk1eEVJVE1tMElxN1c2SngyL2FYbE5Ydk41ZVcxdmt0c2ZMWDdjcCtnb3VFZlhyNjZkT2FkM3NmWHliMXJCMjh0ZmRUYjZISy9malplSjUvMk5vWkxyL2V1TDY5NjNNblZ5K09kR3pzNzNHL2NxZTN4OXJ2Y2xlMm5Idm5nOHVyQm45eGY1TVB0Z3o5ZVFUdkFRL0RJRDhJQjFxNEMzMEFvWUtrSUZvckM3aTFaQUVzWUJGcFJIUUVZZEJESzBNR2dVaXdnVkNySGQ4Lyt1SDhOWlMzRkwrWDQ1UlMvbUNzS1V4Q3ROSVZXWkdobEZpayszQ2E4S01sS3h1NFdlNmNVc0ZJK0tZMkh2WTJscFRkN1h5NmZ1VkU2b0RqalRSMHNjR0d6N0V4OUZLamNIclZHUVozNXNqVUsyc21SSndla01OUXBpUU9CUEtaOHpPVE5STFlOMm9nRFIzeE1tekY4aTZXMUcwMG5ML1lkbUJXeUdxdDQwSUJ6L1prQzQ2L2M1OU1LenhUMzh6ZkkzK2ZmSG51dnB2WDlybFRhbllzWEwzSy9iSSt2NVBVVVlTczdMNC8xckNYbi9SNlNZd1lFejJ1eDgxWkdnWWpucmVHeDAvTlNmVGM3Y2xKbFMyZFYxcTF5bFhWMlhIYkJtakhHVVYxdnBMZkZ0Sm9Zb0dMbmlzT1VFQk9tYW12N0lTYXl5TUhhMXMwQ0RabDVsMklTSzRqSlNEQ3RsQWxsVmQrYVI2aTRBUVdldzdaSE45d0VqMytVK0Y2Rk9qVGdId2pyREk0NkNpU0VRMGFFTmtlVTIyWDJENXdDRHVFWUhJNU00R3ltY0FoclVKUXowQ0JKWGoxdFpQVXlST3hnWmt6ckJyVmlqS09xWmlLeXVoSHBkUXNEVkl4Y3Naa1NZc0lVUk1NUE1USEZDWGVBcitxR2FkbkR3bk1sSllVcHFhWVZDcldHejNCMkNKck9UWGdXTEcreUp0TE9VSktmSmhEejV1RWh5ZkhHSVl5WjN4NGtmc3Z2MTFkVGZuT243cGVJM1Yrc1kvZTNNdGRKdTRHTmNLZWNKMG9NbWlTVzRZcEoyNWRZZTBueVhKdmwyVzRaYm5JaHFXdFFKNFpJa0J1SnBjZ2ttcnFCU25OaUxYdkNJL2NYdjFWMDF2WWNmeFZOMVp0MVdEWUxIMHhtb1kwOHVuQlE3ampkRldwanQwRW95VWhzSUJTWFFWbElSbUlMb1N6K2o1SFliYkhFVnJkTXBaVU13NjVCTzhjYWlVZU11NlRKVmFydHpreVRteEl5eEhVYkRWZmpQTjgvTk1kS3BNdURiQjd1dzdPc2pCM2Q5NFRkNTh5SE5iemRvY0pBODZNQUdGaDlSSVZkYk84VHFJckFXQWxLbVJXT01EV21pa0cxbUFFUkJVWkdNU0paMFZKRWxWeXBNZ1VYcFJJclRNeFkzUmJsaXFwVjh4NDMvUzZseEN0b1JLbkdHTTFPOXlmbFhpYTZjNXFZWE5xN1VxLzF5V3ZIZGR2SmlkdE9QViszTFNadU8zRzhCYXhsUk8zV0lnWmRJK3AwVDZUS1FxNzBtSExVQW9iUHNtakJEL0ZoRnZVbUMxaTdzN0I0b2pkdkFUdjB5WlJ2SS9SdGY4NEM1czRaUWNkeDd6UFdNZStaczBtYW11RjVUKzJpdjQvVFZSY21YWFh4dVhiVmR0SlZ2UmpqcUdHekxkbkZLZTk2R0tEU3lwVU9VMEpNbUtwV3l3OHhrVVVkSEZtc0ZlUHUyeWxHVmxrcG1uU29OTHYrRVcxNmVnMDRHdjl4c0FOSkJwcWJjSDhwcFozZUg3WUxDTWxHekFzZ0M0UHNKUkRKQU5mUVpmelBpRDIxdndmd0gyRVdjRFVBQUhqYWpWTExUdHRBRkQxalFxU2lDZ21wSDNDRnVreU1EWnZZVWhjSUN3bVdDVUt3cVRRa2syREpzaVBiQWVVeitnOWRzNmphUCtGaldQYk1lSGkwZ0ZxUFp1NlpPL2VlK3pLQWJkeEJvZnN1OGROamhTMzEyZU1BZmZYRjR3M3NxZThlOTdDakhqemV4Q0NZZWR6SFR2Q0xscXIzZ2JjZnpzdGloVTlxMitNQUg5V2V4eHY0cWpLUGU5aFY5eDV2NGlMWThyaVAzZUFiamxHaFJBdkJHZFpZd21BT2pTbGxTbDJHQ1lZOGN5eTRXNzRVQ0trL1FrMExUWTNCalBjcitscnJGUnBuSi9SYmtVM3pybkhyTEFXREo4Ym5xREVTcnBGalBTUjdRVGwyOGE3NTNyaWJvVFNNZU9PaTRiZ3FXemxiTDgxY1QwMHEyV1NZNVl1ODFVVW9SN1hSclpuSjFWcXlWWk8zTWxrdGRhTnZkU3NEYStoYzR5UVpoWEpZRkRMT0Y5ZHRJMlBUbVByR2tQcXRldkVjQURqeHlwd3R3Z2xWK1JUL3FQdTlQc29mWk5icTNGVnBtV3gzYkc5Q2J2eFZ5Y3VLcFVzaGxYTlROM2xWU2h6RytJOW9lRVhSZVFuZktqZGI0WC9RemFqTHpPWVNjWFVWMnV4T3lXWmxoQU4zam1ocHA1bGluK2ZqWkJNYlM2WlZiV1RPNWpQVE9Jd2lWbFBLcVM0bE9wQm9sTVpKdXAvWXVTUnZKejk4TC9taFQvNDM2ZWVnbndBQUFIamFZMkJpWVBqL200SGh6M1NHSmdac2dKK0JnWkdKa1ptQm1VR1lRWVJCbEVHTVFaeEJna0dTUVlwQm1rR0drWVV0UGFleUlNT1F2VFF2MDhEQXdBVkVHNW02T1FNQXY1TUw0QUFBQVFBQi8vOEFEM2phWTJCa1lHRGdBV0l4SUdaaVlBUkNQaUJtQWZNWUFBUTRBRDBBQUFBQkFBQUFBTlFrbUxvQUFBQUFOclhDK0FBQUFBRFhYQTZFQUFGYk5sNEVBQUE9KSBmb3JtYXQoJ3dvZmYnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4vLyBoZXJvIGFyZWEgb3ZlcnJpZGVzIGZvciBmdWxsIHNjcmVlbiBpbWFnZVxuLmdyaWQuZnVsbCB7XG4gIC5maWxtLXN1Yi1uYXYgLCAuZmlsbS1vdmVybGluZSwgLnRhYi1wYW5lbCB7XG4gICAgcGFkZGluZzowIDUlO1xuICAgIG1heC13aWR0aDo4NWVtO1xuICB9XG5cbiAgLmZpbG0tc3ViLW5hdiB7XG4gICAgbWFyZ2luLXRvcDowO1xuICB9XG5cbiAgLmZpbG0tZGV0YWlsLWhlcm8taXRlbSB7XG4gICAgbWFyZ2luLXRvcDowO1xuICB9XG5cbiAgLmZpbG0tZGV0YWlsLWhlcm8taXRlbSAudGl0bGUge1xuICAgIHBhZGRpbmc6MC43NWVtIDUlIDFlbSA1JTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIC50aXRsZS5sZWZ0IHtcbiAgICAgIGxlZnQ6Ni4yNSU7XG4gICAgICBtYXgtd2lkdGg6NDAlO1xuICAgIH1cblxuICAgIC5maWxtLXN1Yi1uYXYge1xuICAgICAgcGFkZGluZzowO1xuICAgICAgbWFyZ2luOjAgNiUgM2VtIDYlO1xuICAgIH1cblxuICAgIC5maWxtLW92ZXJsaW5lLCAudGFiLXBhbmVsIHtcbiAgICAgIHBhZGRpbmc6MCA2JTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIC5maWxtLWRldGFpbC1oZXJvLWl0ZW0gLnRpdGxlIHtcbiAgICAgIHBhZGRpbmc6MC43NWVtIDEuNWVtIDFlbSAxLjVlbTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIC50aXRsZS5sZWZ0IHtcbiAgICAgIG1heC13aWR0aDoyNSU7XG4gICAgfVxuXG4gICAgLmZpbG0tc3ViLW5hdiwgLmZpbG0tb3ZlcmxpbmUsIC50YWItcGFuZWwge1xuICAgICAgcGFkZGluZzowO1xuICAgIH1cblxuICAgIC50YWItcGFuZWwsIC5maWxtLW92ZXJsaW5lLCAuZmlsbS1zdWItbmF2IHtcbiAgICAgIG1hcmdpbi1yaWdodDphdXRvO1xuICAgICAgbWFyZ2luLWxlZnQ6YXV0bztcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgfVxuICB9XG5cbn1cblxuLy8gZmlsbSBEZXRhaWwgSGVybyBDb21wb25lbnRcbi5maWxtLXZpZGVvLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDo4NWVtO1xuICBtYXJnaW46MCA1JTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luOjAgNiU7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgbWFyZ2luOjAgYXV0bztcbiAgfVxufVxuXG5cbi5maWxtLWRldGFpbC1oZXJvLWl0ZW0ge1xuICBtYXJnaW4tdG9wOiR2LXJoeXRobSozO1xuICBpbWcge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgfVxuICAudGl0bGUge1xuICAgIHBhZGRpbmc6JHYtcmh5dGhtLzIgJHYtcmh5dGhtIDFlbSAkdi1yaHl0aG07XG4gICAgYmFja2dyb3VuZDokY2hhc2luZ0JsdWU7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50O1xuICAgICYucmlnaHQge1xuICAgICAgbWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAmLmxlZnQge1xuICAgICAgbWFyZ2luLXJpZ2h0OjAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYWxwaGEge1xuICAgICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICAgZm9udC13ZWlnaHQ6NDAwO1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgICBmb250LXNpemU6MmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbGluZS1oZWlnaHQ6MS4yO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nLXRvcDouMjVlbTtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuemV0YSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICAgIH1cbiAgICAudW5kZXJsaW5lIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOjR2dztcbiAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOm5vcm1hbDtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAuemV0YSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206LjkzNzVlbTtcbiAgICAgIH1cbiAgICAgIC51bmRlcmxpbmUge1xuICAgICAgICBtYXJnaW4tdG9wOi45Mzc1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm92ZXJsYXkge1xuICAgIGZvbnQtc2l6ZTozdnc7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBmb250LXNpemU6aW5oZXJpdDtcbiAgICB9XG4gIH1cbiAgLndhdGNoLWxpbmsge1xuICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBmb250LXNpemU6M3Z3O1xuICAgIC5hbHBoYSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgfVxuICAgICAgLnRpdGxlLWNvcHkge1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICB3aWR0aDpjYWxjKDEwMCUgLSAyZW0pO1xuICAgICAgICAvLyBtYXJnaW4tdG9wOiAtLjA2NWVtO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgY29udGVudDonJztcbiAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICBsZWZ0OjA7XG4gICAgICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgICAgICBoZWlnaHQ6MXB4O1xuICAgICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5wbGF5LWljb24ge1xuICAgICAgICBtYXgtaGVpZ2h0OjEuMjVlbTtcbiAgICAgICAgbWF4LXdpZHRoOjEuMjVlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDouNWVtO1xuICAgICAgICBwYXRoIHtcbiAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgLnRpdGxlLWNvcHkge1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgZm9udC1zaXplOmluaGVyaXQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIC50aXRsZSB7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIGJvdHRvbToxNSU7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAkdi1yaHl0aG0qMS4yNTtcbiAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE1ZW07XG4gICAgICAmLmxlZnQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQuNSk7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgICAgIH1cbiAgICAgICYucmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQuNSBsYXN0KTtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgICAgIH1cbiAgICAgIC5hbHBoYSB7XG4gICAgICAgIGZvbnQtc2l6ZToyLjgxMjVlbTtcbiAgICAgIH1cbiAgICAgICoge1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDozO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOnJnYmEoYmxhY2ssIC42KTtcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDowO1xuICAgICAgICBAc3VwcG9ydHMobWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5KSB7XG4gICAgICAgICAgYmFja2dyb3VuZDooJGJsdWUpO1xuICAgICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTtcbiAgICAgICAgICAtd2Via2l0LWZpbHRlcjpicmlnaHRuZXNzKDEuNSk7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI6YnJpZ2h0bmVzcygxLjUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIC50aXRsZSB7XG4gICAgICAmLmxlZnQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuNzUpO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1Ljc1IGxhc3QpO1xuICAgICAgICByaWdodDowO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAudGl0bGUge1xuICAgICAgJi5sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICAgIH1cbiAgICAgICYucmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgbGFzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIHNwYWNpbmcgYWRqdXN0bWVudHMgZGVwZW5kaW5nIG9uIHByZXNlbmNlIG9mIGNvbnRlbnRcbiAgLndhdGNoLWxpbmsgICsgLnpldGEge1xuICAgIG1hcmdpbi10b3A6MS41ZW07XG4gIH1cbiAgLnRpdGxlLWNvcHkgICsgLnpldGEge1xuICAgIG1hcmdpbi10b3A6MS41ZW07XG4gIH1cbiAgLnpldGEgKyAud2F0Y2gtbGluayB7XG4gICAgLmFscGhhIHtcbiAgICAgIHBhZGRpbmctdG9wOjA7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBiYXNlIHN0eWxpbmcgZm9yIGZpbG0gZGV0YWlsIG5hdiBmb3IgdGFicyBhbmQgY292ZSBsaW5rc1xuLmZpbG0tc3ViLW5hdiB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBiYWNrZ3JvdW5kOiRibHVlO1xuICBjb2xvcjp3aGl0ZTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIGEge1xuICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgICB9XG4gIH1cbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxufVxuLy8gaGlkZSBqYXZhc2NyaXB0IGRlcGVuZGVudCBwYXJ0c1xuLmZpbG0tcGFydHMsIC50YWItbW9iaWxlLXRvZ2dsZSAge1xuICBkaXNwbGF5Om5vbmU7XG59XG5cbi8vIGRlc2t0b3AgbGF5b3V0IGZvciBmaWxtIHN1YiBuYXZpZ2F0aW9uc1xuLmZpbG0tcGFydHMge1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdClcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDMuNSBsYXN0KVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KVxuICB9XG59XG5cbi5pbmZvLXRhYnMge1xuICAudGFiLWxpbmsge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjVzLCBlYXNlLWluLW91dCk7XG4gICAgcGFkZGluZzouNTYyNWVtIDFlbTtcbiAgICB3aWR0aDoxMDAlO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDokZGFya0JsdWU7XG4gICAgfVxuICAgICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6JGRhcmtCbHVlO1xuICAgICAgY3Vyc29yOmRlZmF1bHQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIC50YWItbGlzdCB7XG4gICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGEge1xuICAgICAgICAgIHBhZGRpbmc6MS4zNWVtIDEuNWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOC41IGZpcnN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDkgZmlyc3QpO1xuICB9XG59XG5cbi8vIHRhYiBjb250ZW50IGRlZmF1bHRcbi50YWItcGFuZWwge1xuICAudGFiLXBhbmVsLXRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgIGNvbG9yOiRjaGFzaW5nSGVhdGhlcjtcbiAgfVxuICAucGFydC1jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOjNlbTtcbiAgfVxuXG4gIC5iaW8ge1xuICAgIGZpZ3VyZSB7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIHNwYW4ge1xuICAgICAgICBoZWlnaHQ6NzV2dztcbiAgICAgICAgd2lkdGg6NzV2dztcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6NTAlO1xuICAgICAgICAvLyBib3JkZXI6MXB4IHNvbGlkIHdoaXRlO1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICBvYmplY3QtZml0OmNvdmVyO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgZmlndXJlIHtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6MTBlbTtcbiAgICAgICAgICBoZWlnaHQ6MTBlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGZpZ3VyZSwgLmJpby1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgICBmaWd1cmUge1xuICAgICAgICB3aWR0aDozMCU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOnRvcDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6MTIuNWVtO1xuICAgICAgICAgIGhlaWdodDoxMi41ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5iaW8tY29udGVudCB7XG4gICAgICAgIHdpZHRoOjY1JTtcbiAgICAgIH1cbiAgICAgIEBzdXBwb3J0cyhkaXNwbGF5OmdyaWQpIHtcbiAgICAgICAgZmlndXJlLCAuYmlvLWNvbnRlbnQge1xuICAgICAgICAgIHdpZHRoOmF1dG87XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246aW5oZXJpdDtcbiAgICAgICAgfVxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgIGFsaWduLWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkaXNwbGF5OmdyaWQ7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6Mi41ZnIgNGZyO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIGZpZ3VyZSB7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIHdpZHRoOjE1ZW07XG4gICAgICAgICAgaGVpZ2h0OjE1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgICBmaWd1cmUge1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICB3aWR0aDoyMGVtO1xuICAgICAgICAgIGhlaWdodDoyMGVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnBkZi1saW5rcyB7XG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLXJpZ2h0Oi41ZW07XG4gICAgfVxuICAgIC5wYXJ0LWRvd25sb2FkIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50Oid8JztcbiAgICAgICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLjQzNzVlbTtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC4zMTI1ZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5zaW5nbGUtZG93bmxvYWQge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgIEBpbmNsdWRlIHNwYW4oMyk7XG4gICAgZmxvYXQ6bm9uZTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDYpO1xuICAgIGZsb2F0Om5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgbWF4LXdpZHRoOjY1LjI1ZW07XG4gIH1cbn1cblxuLmZpbHRlcnMge1xuICBiYWNrZ3JvdW5kOmJsYWNrO1xuICBwYWRkaW5nLXRvcDowO1xuICAubGFiZWwge1xuICAgIGNvbG9yOndoaXRlO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbWFyZ2luLWxlZnQ6LTQuMTg3NWVtO1xuICAgIH1cbiAgfVxuICBmb3JtIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZmllbGRzZXQgaW5wdXRbdHlwZT0ncmFkaW8nXSAge1xuICAgICAgJjpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiRjaGFzaW5nQ29ybmZsb3dlcjtcbiAgICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkY2hhc2luZ0Nvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGZpZWxkc2V0IGxhYmVsIHtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6JG5vdEluU3R5bGd1aWRlQnV0SW5TdHlsZ3VpZGU7XG4gICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICRub3RJblN0eWxndWlkZUJ1dEluU3R5bGd1aWRlO1xuICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czowO1xuICAgICAgfVxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgICB9XG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1LjMxMjVlbSkge1xuICAgICAgICB3aWR0aDo3LjVlbTtcbiAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOjEuMjVlbSAwIDAgMS4yNWVtO1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MS4xNWVtO1xuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOjAgMS4yNWVtIDEuMjVlbSAwO1xuICAgICAgICAgIHBhZGRpbmctbGVmdDoxLjE1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICB3aWR0aDoxMGVtO1xuICAgICAgfVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMy43NWVtKSB7XG4gICAgICAgIGZvbnQtc2l6ZTo0Ljg1dnc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5maWx0ZXItdGFyZ2V0IHtcbiAgJi5sb2FkaW5nIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrO1xuICAgICAgY29sb3I6d2hpdGU7XG4gICAgfVxuICB9XG59XG5cbi5wYWdpbmF0aW9uIHtcbiAgY29sb3I6d2hpdGU7XG59XG5cbi8vIGVuaGFuY2VkIHZlcnNpb25zIG9mIGZpbG0gc3VibmF2cyBhbmQgdGFiIGNvbnRlbnRcbi5qcyB7XG4gIC8vIGFsbCBjb3ZlIHN0dWZmIGlzIGphdmFzY3JpcHQgZGVwZW5kZW50IHNvIG9ubHkgc2hvdyBpdCBpZlxuICAvLyBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAuZmlsbS1wYXJ0cyAge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gIH1cbiAgLnBhcnQtc2VsZWN0aW9uIHtcbiAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBtYXJnaW46LjI1ZW0gLjNlbTtcbiAgICAuaW5zdHJ1Y3Rpb24ge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgIH1cbiAgICBidXR0b24ge1xuICAgICAgaGVpZ2h0OjMuODE3NWVtO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICAgei1pbmRleDoyO1xuICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgIGJvcmRlcjouMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgcGFkZGluZzouMjVlbSAxZW07XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgY29sb3I6JGNoYXJjb2FsO1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAucGFydCB7XG4gICAgICAgIHdpZHRoOmNhbGMoMTAwJSAtIDFlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICBmb250LXNpemU6Ljc3N2VtO1xuICAgICAgICAgIGNvbG9yOiRjb3JuZmxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdmcge1xuICAgICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgbWF4LXdpZHRoOjFlbTtcbiAgICAgICAgcmlnaHQ6MWVtO1xuICAgICAgICBmaWxsOiRtZWRHcmF5O1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjUwJSAyMi41JTtcbiAgICAgIH1cbiAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5maWxtLXBhcnRzLWxhcmdlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgIHBhZGRpbmc6LjI1ZW0gLjM1ZW07XG4gICAgd2lkdGg6MTAwJTtcbiAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICByaWdodDowO1xuICAgIHRvcDo0LjA1ZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6MTtcbiAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgbWF4LWhlaWdodDowO1xuICAgICYub3BlbiB7XG4gICAgICBtYXgtaGVpZ2h0OjIwZW07XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgfVxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICBwYWRkaW5nOi4yNWVtIDFlbTtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBjb2xvcjokY2hhcmNvYWw7XG4gICAgICBib3JkZXI6LjA2MjVlbSBzb2xpZCAkbWVkR3JheTtcbiAgICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBmb250LXNpemU6Ljc3N2VtO1xuICAgICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiRkb3ZlO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiRkb3ZlO1xuICAgICAgICBjdXJzb3I6ZGVmYXVsdDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGkge1xuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICBhIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOm5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICB0b3A6NC4zNWVtO1xuICAgICAgcGFkZGluZzouMjVlbSAuMzVlbTtcbiAgICB9XG4gIH1cbiAgLnRhYi1tb2JpbGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYnV0dG9uKHdoaXRlLCAuMDYyNWVtLCB3aGl0ZSk7XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGhlaWdodDozLjgxNzVlbTtcbiAgICB3aWR0aDpjYWxjKDEwMCUgLSAuNjVlbSk7XG4gICAgbWFyZ2luOi4zZW07XG4gICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJi5tdXRpcGxlLWVwaXNvZGVzIHtcbiAgICAgIG1hcmdpbjowIC4zZW0gLjNlbSAuM2VtO1xuXG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6MS41ZW07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogLjE1ZW07XG4gICAgfVxuICAgICY6aG92ZXIsICY6Zm9jdXMsICY6YWN0aXZlIHtcbiAgICAgIGJvcmRlcjouMDYyNWVtIHNvbGlkIC4wNjI1ZW07XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgbWF4LWhlaWdodDoxZW07XG4gICAgICBtYXgtd2lkdGg6MWVtO1xuICAgICAgcmlnaHQ6MWVtO1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46NTAlIDIyLjUlO1xuICAgIH1cbiAgICAmLmNsb3NlLXN0YXRlIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuICB9XG5cbiAgLmluZm8tdGFicyB7XG4gICAgLnRhYi1saXN0Lm1lbnUge1xuICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXgtaGVpZ2h0OjA7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICYub3BlbiB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDoyMGVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDppbmhlcml0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyB0YWIgY29udGVudFxuICAudGFiLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgICAmLmRlZmF1bHQge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBAaW5jbHVkZSBmYWRlSW47XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgbWF4LXdpZHRoOjY1LjI1ZW07XG4gICAgfVxuICB9XG59XG5cblxuLmZpbG0tc2hvcC1saW5rcyAge1xuICBwYWRkaW5nIDokdi1yaHl0aG0gMCA2ZW0gMDtcbiAgY2xlYXI6Ym90aDtcbiAgYmFja2dyb3VuZDpibGFjaztcbiAgLnpldGEge1xuICAgIGNvbG9yOiRjaGFzaW5nSGVhdGhlcjtcbiAgfVxuICBpbWcge1xuICAgIG1heC13aWR0aDo2LjI1ZW07XG4gIH1cbiAgKiB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuICBhIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OjFlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmZ1bmRlcnMge1xuICBiYWNrZ3JvdW5kOmJsYWNrO1xuICBwYWRkaW5nOjAgMCAxLjVlbSAwO1xuICBtYXJnaW4tYm90dG9tOjEuNWVtO1xufVxuXG4uZmlsbS1mdW5kZXJzIHtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMi41O1xuICBtYXJnaW4tdG9wOjNlbTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIC56ZXRhIHtcbiAgICBtYXJnaW4tYm90dG9tOjJlbTtcbiAgfVxuICAqIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG4gIGEge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICB9XG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOjEwZW07XG4gIH1cbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgbGkge1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tYm90dG9tOjFlbTtcbiAgICAgICY6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OjFlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmZpbG0tdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOjA7XG4gIGNvbG9yOiRjaGFzaW5nSGVhdGhlcjtcbiAgLnBhc3Nwb3J0LWljb24ge1xuICAgIG1heC13aWR0aDoxLjE1ZW07XG4gICAgbWF4LWhlaWdodDoxLjE1ZW07XG4gICAgcGFkZGluZy1yaWdodDouMjVlbTtcbiAgfVxufVxuXG4ucHJlbWllcmUtZGF0ZSB7XG4gIGNvbG9yOiRjb3JuZmxvd2VyO1xufVxuXG4udGFnbGluZSB7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgZGlzcGxheTpibG9jaztcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbG9yOiRncmF5O1xuICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG59XG5cblxuLy8gYmFja2dyb3VuZHNcbi5maWxtLW1haW4ge1xuICBiYWNrZ3JvdW5kOmJsYWNrO1xuICBwYWRkaW5nLWJvdHRvbTo2ZW07XG4gIG1hcmdpbi10b3A6LS4xMjVlbTtcbiAgcCB7XG4gICAgY29sb3I6JGNoYXNpbmdIZWF0aGVyO1xuICAgIGZvbnQtZmFtaWx5OiAnQXJidXR1cyBTbGFiJywgR2VvcmdpYSwgc2VyaWY7XG4gICAgQGluY2x1ZGUgbGFyZ2VDb3B5O1xuICB9XG59XG5cbi5zZWN0aW9uLXRpdGxlIHtcbiAgQGluY2x1ZGUgc2VjdGlvbkhlYWRpbmc7XG59XG5cbi5yZW5kZXJlZC1maWxtLWNvbnRlbnQge1xuICBoMiB7XG4gICAgIEBpbmNsdWRlIHNlY3Rpb25IZWFkaW5nO1xuICB9XG59XG5cbi5maWxtLXRvcCB7XG4gIGJhY2tncm91bmQ6YmxhY2s7XG4gIGgyIHtcbiAgICBtYXJnaW46MDtcbiAgICBwYWRkaW5nOjEuNWVtIDAgLjVlbTtcbiAgfVxufVxuXG4uZmVhdHVyZXMtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDpibGFjaztcbiAgcGFkZGluZy1ib3R0b206M2VtO1xuICBoMiwgLmJldGEge1xuICAgIEBpbmNsdWRlIHNlY3Rpb25IZWFkaW5nO1xuICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgfVxuICAudGVhc2VyLWl0ZW0ge1xuICAgIHAge1xuICAgICAgY29sb3I6JGNoYXNpbmdIZWF0aGVyO1xuICAgIH1cbiAgfVxufVxuXG4ub3RoZXItcmVsYXRlZCB7XG4gIGJhY2tncm91bmQ6JGNoYXNpbmdTbGF0ZTtcbiAgaDIsIC5iZXRhIHtcbiAgICBAaW5jbHVkZSBzZWN0aW9uSGVhZGluZztcbiAgfVxuICAucmVsYXRlZC1maWxtcyB7XG4gICAgbWFyZ2luOjRlbSAwIDhlbSAwO1xuICB9XG59XG4iLCIvLyBlbnN1cmUgbW9kYWwgaXMgbm90IHNob3duIHdoZW4ganMgaXMgbm90IHByZXNlbnRcbi5uZXdzbGV0dGVyLWRpYWxvZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gc2hvdyBpdCB3aGVuIGl0IGlzXG4uanMgLm5ld3NsZXR0ZXItZGlhbG9nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm5ld3NsZXR0ZXItZGlhbG9nLmdlbmVyYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoYmxhY2ssIDAuODUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwMjtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvYmctdHJpYW5nbGUtZm9vdGVyLnBuZ1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMS43NWVtIDExLjEyNWVtO1xuICAgICAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogNTA7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRzY3JlZW4tbWQtbWluKSBhbmQgKG1pbi1oZWlnaHQ6IDM3LjVlbSkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTIuNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5kaXNtaXNzZWQge1xuICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjM1cyk7XG4gICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICB9XG5cbiAgICAmW2FyaWEtaGlkZGVuPVwidHJ1ZVwiXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkaWFsb2dcIl0ge1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiAzNy41ZW0pIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpdltyb2xlPVwiZG9jdW1lbnRcIl0ge1xuICAgICAgICBtYXgtd2lkdGg6IDUwZW07XG4gICAgICAgIG1hcmdpbjogMWVtIGF1dG8gMCBhdXRvO1xuICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRzY3JlZW4tbWQtbWluKSBhbmQgKG1pbi1oZWlnaHQ6IDM3LjVlbSkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIHRvcDogMTIuNXZoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdhbW1hIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4yNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRpbXNpc3Mge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogLTIuNWVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC41cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHllbGxvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGgxIHtcbiAgICAgICAgbWFyZ2luOiAxLjVlbSAwIDAuNWVtIDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICAgICAgfVxuICAgICAgICAubG9nby10eXBlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTNlbTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDAuOTVlbTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS41ZW07XG5cbiAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMS41ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93O1xuICAgICAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCR5ZWxsb3csIDUlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCxcbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW1haWwtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1NSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0NCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDElO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubmV3c2xldHRlci1kaWFsb2cudm90ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYShibGFjaywgMC44NSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDEwMDAyO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICYuZGlzbWlzc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoMC4zNXMpO1xuICAgICAgICBAaW5jbHVkZSBzbGlkZU91dERvd247XG4gICAgfVxuXG4gICAgJlthcmlhLWhpZGRlbj1cInRydWVcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGRpdltyb2xlPVwiZGlhbG9nXCJdIHtcbiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgICAgICBtYXgtaGVpZ2h0OiA5MHZoO1xuICAgICAgICBtYXJnaW4tdG9wOiA0LjV2aDtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLWhlaWdodDogNzUwdmgpIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpdltyb2xlPVwiZG9jdW1lbnRcIl0ge1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBtYXJnaW46IDZ2aCBhdXRvIDA7XG4gICAgICAgIHdpZHRoOiA5NSU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyOiAxMHB4IHNvbGlkICNmY2MzMjA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzYzIyNWU7XG5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNjcmVlbi1tZC1taW4pIGFuZCAobWluLWhlaWdodDogNzUwcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdhbW1hIHtcbiAgICAgICAgY29sb3I6ICNlYmUzZDc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kaW1zaXNzIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICAgICAgcmlnaHQ6IC0wLjVlbTtcbiAgICAgICAgdG9wOiAtM2VtO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgICAgIGZpbGw6ICNmY2MzMjA7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2NzVweCkge1xuICAgICAgICAgICAgcmlnaHQ6IC0yLjVlbTtcbiAgICAgICAgICAgIHRvcDogLTIuNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI25ld3NsZXR0ZXItZGlhbG9nLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMC41ZW0gMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgY29sb3I6ICNlYmUzZDc7XG5cbiAgICAgICAgLmxvZ28tdHlwZSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDhlbTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDAuOTJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwYW4udW5kZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiA1cHggYXV0bztcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICBmb250LWZhbWlseTogXCJNdWxpXCIsIHNhbnMtc2VyaWY7XG4gICAgICAgIGNvbG9yOiAjZmNjMzIwO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIC52b3RlLWltYWdlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3ZvdGVfaW1hZ2VfaGVhZGVyLmpwZykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDtcbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50aXRsZS13cmFwcGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNjMjI1ZTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgbWFyZ2luOiAtODdweCBhdXRvIDA7XG4gICAgICAgIGhlaWdodDogODdweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDY1MHB4KSB7XG4gICAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZvdGUtaGVhZGxpbmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy90aXRsZV90aGUtdm90ZS5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiA1N3B4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxNXB4O1xuICAgICAgICAgICAgdGV4dC1pbmRlbnQ6IC05OTk5OXB4O1xuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDgwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggNDBweDtcblxuICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkeWVsbG93LCA1JSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm5vdGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogI2ViZTNkNztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDY1MHB4KSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAuZW1haWwtZmllbGQsXG4gICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTUlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDQlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIHhmaXhlZCBwb3NpdGlvbiBzdGF0ZXMgZm9yIGhlYWRlclxuI3N0aWNreS1oZWFkZXIge1xuICB3aWR0aDoxMDAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwcHgsMHB4LDBweCk7XG4gICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDBweCwwcHgsMHB4KTtcbn1cblxuLnN0aWNreSAjc3RpY2t5LWhlYWRlciB7XG4gIHRvcDowO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gIEBpbmNsdWRlIHNsaWRlSW5Eb3duO1xufVxuXG4uc2l0ZS1oZWFkZXJ7XG4gIC8vIHJlc2V0cyBicm93c2VyIHN0eWxpbmcgZm9yIGFsbCBsaXN0cyBpbnNpZGUgdGhlIGhlYWRlclxuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgfVxuICAuc2Vjb25kYXJ5IHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBiYWNrZ3JvdW5kOiRkYXJrR3JheTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICAqe1xuICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgIH1cbiAgICAudGl0bGUge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgfVxuICAgIC5oZWFkZXItc29jaWFsIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgIHdpZHRoOjcwJTtcbiAgICAgICAgbWFyZ2luOjAgYXV0bztcbiAgICAgICAgYSB7XG4gICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICBmaWxsOmJsYWNrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgNCBmaXJzdCk7XG4gICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6Ljc1ZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1IG9mIDEyIGZpcnN0KTtcbiAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICAgIGZvbnQtc2l6ZTouODEyNWVtO1xuICAgICAgICB9XG4gICAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgICAgd2lkdGg6YXV0bztcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuaGVhZGVyLXNwb25zb3JzIHtcbiAgICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7XG4gICAgICAgICAgLW1zLWZsZXgtcGFjazpjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7XG4gICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7XG4gICAgICAgIC1tcy1mbGV4LXdyYXA6d3JhcDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDp3cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDoxOyAgICAgICAgICAgICAgICBcbiAgICAgIH1cbiAgICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtLzI7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOi4yNWVtIC41ZW07XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAtd2Via2l0LWJveC1wYWNrOmNlbnRlcjtcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOmNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OmNlbnRlcjtcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsgICAgICAgIFxuICAgICAgfVxuICAgICAgLnRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTouMjVlbTtcbiAgICAgIH1cbiAgICAgIGltZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6My4xMjVlbTtcbiAgICAgICAgbWF4LXdpZHRoOjcuMzc1ZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIG9mIDQgbGFzdCk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBzcGFuKDcgb2YgMTIgbGFzdCk7XG4gICAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAgLXdlYmtpdC1ib3gtcGFjazplbmQ7XG4gICAgICAgICAgICAtbXMtZmxleC1wYWNrOmVuZDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7XG4gICAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyO1xuICAgICAgICAudGl0bGUge1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgIGZvbnQtc2l6ZTouODEyNWVtO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICB9XG4gICAgICAgIC5zcG9uc29yIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgbWF4LWhlaWdodDozLjEyNWVtO1xuICAgICAgICAgIG1heC13aWR0aDo4LjM3NWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgLmdyaWQge1xuICAgICAgICBtYXJnaW4tdG9wOi41ZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206LjVlbTtcbiAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsgICAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiRibHVlO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIHotaW5kZXg6MTA7XG4gICAgLmdyaWQge1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgfVxuICAgIC5oZWFkZXItbG9nbyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46MDtcbiAgICAgIGxpbmUtaGVpZ2h0OjA7XG4gICAgICBhIHtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgcGFkZGluZzouNDVlbTtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0Oi41ZW07XG4gICAgICAgICAgLnR5cGUge1xuICAgICAgICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0Oi43NWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmxvZ28tdHlwZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWF4LXdpZHRoOjEwMCU7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzcGFuKDEuNSBmaXJzdCk7XG5cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDMgZmlyc3QpO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgICAgIHBhZGRpbmctdG9wOi4yZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgcGFkZGluZy10b3A6MDtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICAgICAgYSB7XG4gICAgICAgICAgcGFkZGluZzouNTVlbSAuNDVlbSAuNDVlbSAuNDVlbTtcbiAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgbWF4LWhlaWdodDoxZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGJhc2Ugc3R5bGluZyBmb3IgbWFpbiBuYXZpZ2F0aW9uXG4gICAgLm1haW4tbmF2LXRvZ2dsZSB7XG4gICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIHRvcDowO1xuICAgICAgcmlnaHQ6NSU7XG4gICAgICB3aWR0aDoyLjc1ZW07XG4gICAgICBoZWlnaHQ6Mi43NWVtO1xuICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgICAgcGFkZGluZzouNWVtO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBzdmcge1xuICAgICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDoxLjVlbTtcbiAgICAgIH1cbiAgICAgIC5vbmUsIC50d28sIC50aHJlZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjM1cyBsaW5lYXI7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjphbGwgLjM1cyBsaW5lYXI7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjowIDUwJTtcbiAgICAgICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgfVxuICAgICAgJi5jbG9zZS1zdGF0ZSB7XG4gICAgICAgIC5vbmUge1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooLTQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZVooLTQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjoxMS41ZW0gNWVtO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjoxMS41ZW0gNWVtO1xuICAgICAgICB9XG4gICAgICAgIC50d28ge1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1ZW0pO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1ZW0pO1xuICAgICAgICB9XG4gICAgICAgIC50aHJlZSB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWig0NWRlZykgc2NhbGUoLjk1KTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGVaKDQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjoxMS41ZW0gNWVtO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjoxMS41ZW0gNWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgd2lkdGg6My4zZW07XG4gICAgICAgIGhlaWdodDozLjNlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDYgbGFzdCk7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4IGxhc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICAuaGVhZGVyLW1haW4tbmF2aWdhdGlvbiB7XG4gICAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICAgIGZvbnQtZmFtaWx5OiAnSm9zZWZpbiBTYW5zJywgc2Fucy1zZXJpZjtcbiAgICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMy43NSBvZiA2KTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNSBvZiA4KTtcbiAgICAgIH1cbiAgICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICAgIGRpc3BsYXk6ZmxleDsgXG4gICAgICAgIH1cbiAgICAgICAgbGkge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICRncmF5O1xuICAgICAgICAgIGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgbGluay1yZXNldDtcbiAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nOjEuMWVtIDFlbSAuOWVtIDFlbTtcbiAgICAgICAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgICAgICAgIGhlaWdodDouMzMzM2VtO1xuICAgICAgICAgICAgICBjb250ZW50OicnO1xuICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgICAgICAgYm90dG9tOjA7XG4gICAgICAgICAgICAgIGxlZnQ6MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIsICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDokeWVsbG93O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206bm9uZTtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzoxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAuc2VhcmNoIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICAuc2VhcmNoLWlucHV0ICB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgaGVpZ2h0OjIuMjVlbTtcbiAgICAgICAgcGFkZGluZzowIDAgMCAxZW07XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIGJvcmRlcjoxcHggc29saWQgJGdyYXk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6Mi41ZW07XG4gICAgICB9XG4gICAgICAuc2VhcmNoLWJ1dHRvbiB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIHRvcDouMTVlbTtcbiAgICAgICAgcmlnaHQ6LjQ1ZW07XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6MmVtO1xuICAgICAgICB3aWR0aDoyZW07XG4gICAgICAgIHBhZGRpbmc6LjE1ZW07XG4gICAgICAgIGJhY2tncm91bmQ6d2hpdGU7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigxLjUgb2YgNik7XG4gICAgICAgIG1hcmdpbi10b3A6LjdlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBvZiA4KTtcbiAgICAgIH0gXG4gICAgfVxuICB9XG4gIC5zaG9wIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHBhZGRpbmc6LjVlbSAuNWVtIC41ZW0gMWVtO1xuICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICRncmF5O1xuICAgIHN2ZyB7XG4gICAgICBoZWlnaHQ6Mi41ZW07XG4gICAgICB3aWR0aDoyLjVlbTtcbiAgICAgIGZpbGw6d2hpdGU7XG4gICAgICBwYXRoIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuMjVzLCBlYXNlLWluLW91dClcbiAgICAgIH1cbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBzdmcge1xuICAgICAgICBwYXRoIHtcbiAgICAgICAgICBmaWxsOiR5ZWxsb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKC43NSBvZiA2IGxhc3QpO1xuICAgICAgYm9yZGVyOm5vbmU7XG4gICAgICBwYWRkaW5nOjA7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgbWFyZ2luLXRvcDouNzVlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEgb2YgOCBsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vIGVuaGFuY2VkIHN0eWxlcyBmb3IgaGVhZGVyIChKYXZhU2NyaXB0IFN1Y2Nlc3MpXG4uanMge1xuICAvLyBzaG93IG1haW4gbmF2IHRvZ2dsZSB3aXRoIEpTXG4gIC5zaXRlLWhlYWRlciB7XG4gICAgLnByaW1hcnkge1xuICAgICAgLm1haW4tbmF2LXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgZGlzcGxheTpub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGhpZGluZyBhbmQgc2hvdyBvZiBkcm9wIGRvd24gbWVudSB3aXRoIEpTXG4gIC5qcy1kcm9wZG93bi1tZW51IHtcbiAgICAgIHZpc2liaWxpdHk6aGlkZGVuO1xuICAgICAgb3ZlcmZsb3c6aGlkZGVuO1xuICAgICAgbWF4LWhlaWdodDowO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICAgIG1heC1oZWlnaHQ6aW5oZXJpdDtcbiAgICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgbWF4LWhlaWdodDozNWVtO1xuICAgIH1cbiAgfVxuICAuaGVhZGVyLW1haW4tbmF2aWdhdGlvbi5vcGVuICsgLmhlYWRlci1zZWFyY2gub3BlbiB7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gIH1cbn1cblxuLy8gZG8gbm90IGhhdmUgZml4ZWQgZnVuY3Rpb25hbGl0eSBvZiBsb2dnZWQgaW5cbi5jbXMtcmVhZHkge1xuICAucHJpbWFyeSB7XG4gICAgJi5maXhlZCB7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5zaXRlLWZvb3RlciB7XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgfVxuICAgIC5jcmVkaXQtaGVhZGluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICB9XG59XG5cbi5mb290ZXItbGlua3Mge1xuICAgIHBhZGRpbmc6IDAgMCAkdi1yaHl0aG0vMiAwO1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9iZy10cmlhbmdsZS1mb290ZXIucG5nXCIpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTEuNzVlbSAxMS4xMjVlbTtcbiAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2JnLWFtZXJpY2FuLWZsYWcuanBnXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA2LjUlO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAzO1xuICAgIH1cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVsIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtLzI7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRzY3JlZW4tamItbWluKSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkge1xuICAgIC5mb290ZXItbGlua3Mge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTUlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZm9vdGVyLW5hdmlnYXRpb24ge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgZmlyc3QpO1xuICAgICAgICBtaW4taGVpZ2h0OiAxNWVtO1xuICAgICAgICB1bCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgIC1tb3otY29sdW1uLWNvdW50OiAyO1xuICAgICAgICAgICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDI7XG4gICAgICAgICAgICBjb2x1bW4tY291bnQ6IDI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDcgZmlyc3QpO1xuICAgICAgICB1bCB7XG4gICAgICAgICAgICAtbW96LWNvbHVtbi1jb3VudDogMztcbiAgICAgICAgICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzO1xuICAgICAgICAgICAgY29sdW1uLWNvdW50OiAzO1xuICAgICAgICB9XG4gICAgfVxufVxuLmZvb3Rlci1wcm9kdWN0aW9uLWJ5IHtcbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgLndnYmgge1xuICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6IDZlbTtcbiAgICAgICAgbWF4LWhlaWdodDogM2VtO1xuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMi41KTtcbiAgICB9XG59XG4uZm9vdGVyLWZ1bmRpbmcge1xuICAgIHVsIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAvLyAuY3BiIHtcbiAgICAvLyAgICoge1xuICAgIC8vICAgICBmaWxsOndoaXRlO1xuICAgIC8vICAgfVxuICAgIC8vICAgd2lkdGg6N2VtO1xuICAgIC8vICAgbWF4LWhlaWdodDo0ZW07XG4gICAgLy8gfVxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxMmVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMmVtO1xuICAgICAgICAqIHtcbiAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGEge1xuICAgICAgICAvLyB3aWR0aDoxMDAlO1xuICAgICAgICAvLyBoZWlnaHQ6MTAwJTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMi41IGxhc3QpO1xuICAgIH1cbn1cbi5mb290ZXItY29weXJpZ2h0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBwYWRkaW5nLXRvcDogMi43NXZ3O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyLjkyNXZ3O1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgIH1cbn1cbi5mb290ZXItbG9nby10eXBlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDR2dztcbiAgICBsaW5lLWhlaWdodDogMS4yNzU7XG4gICAgc3ZnIHtcbiAgICAgICAgZmlsbDogJG5hdnk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMuODc1ZW07XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oOCBsYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAzLjV2dztcbiAgICB9XG59XG4iLCIuY29ubmVjdC1zb2NpYWwge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9iZy10cmlhbmdsZS1uZXdzbGV0dGVyLnBuZ1wiKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDExLjc1ZW0gMTEuMTI1ZW07XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDM7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGgzIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAuZW1haWwtc2lnbnVwIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAkdi1yaHl0aG0gMDtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NjllbTtcbiAgICAgICAgfVxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICAgICAgLy8gZmxleCBib3ggb3ZlcmlkZSBmb3Igc291cmNlIG9yZGVyIGluIGNvbm5lY3Qgc2VjdGlvblxuICAgICAgICAgICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XG4gICAgICAgICAgICAgICAgLW1zLWZsZXgtb3JkZXI6IDE7XG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnZvdGUgLmhlYWRsaW5lIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTAlIDAgMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAudm90ZS1oZWFkbGluZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy90aXRsZV90aGUtdm90ZS5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTdweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICB0ZXh0LWluZGVudDogLTk5OTk5cHg7XG5cbiAgICAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGxpbmUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDcgZmlyc3QpO1xuXG4gICAgICAgICAgICAmLnZvdGUgaDMge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTAlO1xuICAgICAgICAgICAgICAgIC5lbWFpbC1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMSU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNCU7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLm5vdGUge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNzUlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICAgICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTklO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZm9vdGVyLXNvY2lhbC1saW5rcyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtICogMiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICAgICAgd2lkdGg6IDExMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNSU7XG4gICAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDNlbTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDNlbTtcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAkbXVzdGFyZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJHllbGxvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmhhc2h0YWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDUuNjI1JTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBpbmhlcml0O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNS4yNjMxNiUgKiAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTEuMjUlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgICAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUuMjYzMTYlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1IGxhc3QpO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluKSB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAvLyBtYWdpY1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKCgxMDB2dyAtIDE0MDBweCkgLyAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuZ3JpZCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBubyBqcyBhZCBibG9jayBzaG93IG5vdGhpbmdcbi5hZC1ibG9jayB7XG4gIG1heC1oZWlnaHQ6MDtcbiAgcGFkZGluZzowO1xuICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgbGluZS1oZWlnaHQ6MDtcbn1cbiBcbi5qcyB7XG4gIC5hZC1ibG9jayB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAmLm9wZW4uYWQtc2lkZS1pbnRlcmlvciB7XG4gICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgIHBhZGRpbmc6JHYtcmh5dGhtIDAgJHYtcmh5dGhtKjI7XG4gICAgICBtYXgtaGVpZ2h0OjI1ZW07XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICB6LWluZGV4OmluaGVyaXQ7XG4gICAgICBsaW5lLWhlaWdodDppbmhlcml0O1xuICAgICAgLmFkIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6dXJsKCcuLi9pbWFnZXMvYmctZGVjby1jaXJjbGUucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZToxOGVtIDE4ZW07XG4gICAgICAgIHotaW5kZXg6LTI7XG4gICAgICB9XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgei1pbmRleDotMTtcbiAgICAgICAgYmFja2dyb3VuZDpyZ2JhKCRvdmVybGF5LCAuNSk7XG5cbiAgICAgIH1cbiAgICAgICYuZm9vdGVyLWFkIHtcbiAgICAgICAgcGFkZGluZy10b3A6JHYtcmh5dGhtKjEuNTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtKjEuNzU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206NC41ZW07XG4gICAgICB9XG4gICAgfVxuICAgIC5hZCB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIGRpdiB7XG4gICAgICAgIGNsZWFyOmJvdGg7ICBcbiAgICAgIH1cbiAgICAgIHNwYW4sIGEge1xuICAgICAgICBmb250LXNpemU6Ljc1ZW07XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgZmxvYXQ6cmlnaHQ7XG4gICAgICAgIGNvbG9yOiRibHVlO1xuICAgICAgfSBcbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgYmFja2dyb3VuZDokZ3JheTtcbiAgICAgICAgd2lkdGg6MS41ZW07XG4gICAgICAgIGhlaWdodDoxLjVlbTtcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIHRvcDoxLjI1ZW07XG4gICAgICAgIHJpZ2h0OjA7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgIHdpZHRoOjc1JTtcbiAgICAgICAgICBoZWlnaHQ6NzUlO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgICBoZWlnaHQ6MmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zaG9wLWFkIHtcbiAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiR2LXJoeXRobSozO1xuICBwYWRkaW5nLWJvdHRvbTokdi1yaHl0aG0qMztcbiAgYSAge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgICYubW9iaWxlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYW1leF9zaG9wX21vYmlsZS5qcGcnKTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICAgIHdpZHRoOjIwZW07XG4gICAgICBoZWlnaHQ6Ni4yNWVtO1xuICAgIH1cbiAgICAmLmRlc2t0b3Age1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy4uL2ltYWdlcy9hbWV4X3Nob3BfZGVza3RvcC5qcGcnKTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICAgIHdpZHRoOjc1ZW07XG4gICAgICBoZWlnaHQ6OS4zNzVlbTtcbiAgICB9ICAgIFxuICB9XG59XG5cbi8vIGFkanVzdCBtYXJnaW4gZm9yIHNob3AgYWQgaWYgYm90dG9tIGJhbm5lciBkb2VzIG5vdCBleGlzdFxuLmNvbm5lY3Qtc29jaWFsIHtcbiAgJiArIC5zaG9wLWFkICB7XG4gICAgcGFkZGluZy10b3A6MDtcbiAgfVxufVxuXG4vLyBsYXlvdXQgZm9yIFwic2lkZWJhciBhZFwiXG4uYWQtaW50ZXJpb3ItY29udGVudCB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIEBpbmNsdWRlIHNwYW4oNSBmaXJzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig4IGZpcnN0KTtcbiAgfVxufVxuXG4uYWQtc2lkZS1pbnRlcmlvciB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gIH1cbn0iLCIvLyBtb3ZlIHRoZXNlcyEhIVxuLy8gZGVsZXRlIHRoZXNlICEhXG5cbi8vIGNvbGxlY3Rpb25zIGN1cnJlbnRseSBoZWF2aWx5IGJvcnJvd3MgZnJvbSBvdGhlciB0aGluZ3Ncbi5jb2xsZWN0aW9uLWRldGFpbC1oZXJvLWl0ZW17XG4gIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSoyO1xuICBpbWcge1xuICAgIHdpZHRoOjEwMCU7XG4gIH1cbn1cblxuXG5cblxuIiwiOi13ZWJraXQtZnVsbC1zY3JlZW4tYW5jZXN0b3I6bm90KGlmcmFtZSl7XG4gIC5wYnMtY2xlYW5zbGF0ZSwgLnNpdGUtaGVhZGVyLCAuYWQtYmxvY2ssIC5jbXMsIC50ZWFzZXItaXRlbSwgLnNpdGUtZm9vdGVyLCBcbiAgLmZpbG0tc3ViLW5hdiwgLldhbGxvcC1idXR0b25QcmV2aW91cywgLldhbGxvcC1idXR0b25OZXh0LCAuYWNjb3JkaW9uLXRvZ2dsZSwgLnRhYi1wYW5lbCwgLmZ1bGwtc2NyZWVuIHtcbiAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuYm9keSB7XG4gIG92ZXJmbG93LXg6aGlkZGVuO1xuICAvLyBzdGF0ZSBydWxlcyBmb3IgYm9keSB3aGVuIG1vZGFsIGlzIG9wZW5cbiAgJi5maXhlZCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6MDtcbiAgICB0b3A6MDtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG59XG5cbmlmcmFtZSB7XG4gIGJhY2tncm91bmQ6JG1lZEdyYXk7XG59XG5cbmltZyB7XG4gIG1heC13aWR0aDoxMDAlO1xufVxuXG5hIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgLjNzLCBlYXNlLWluLW91dCk7XG4gIGNvbG9yOiRyZWQ7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICBmb250LXdlaWdodDo3MDA7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiRjcmltc29uO1xuICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XG4gIH1cbn1cblxuLmNhbGwtdG8tYWN0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC41cywgZWFzZS1pbi1vdXQpO1xuICBiYWNrZ3JvdW5kOiRyZWQ7XG4gIGNvbG9yOndoaXRlO1xuICBib3JkZXItcmFkaXVzOi40Mzc1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgZm9udC1zaXplOjEuMTI1ZW07XG4gIHBhZGRpbmc6MWVtIDMuNWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgYmFja2dyb3VuZDpkYXJrZW4oJHJlZCwgNSUpO1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6YWN0aXZlIHtcbiAgICB0b3A6LjI3Nzc3Nzc3NzhlbTtcbiAgfVxufVxuXG5maWd1cmUge1xuICBtYXJnaW46MDtcbn1cblxuZmlnY2FwdGlvbiwgLmNhcHRpb24ge1xuICBmb250LXNpemU6Ljg1ZW07XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXN0eWxlOml0YWxpYztcbiAgcCB7XG4gICAgbWFyZ2luOjA7XG4gIH1cbn1cblxuLmNhcHRpb24ge1xuICBoNCwgLmRlbHRhIHtcbiAgICBtYXJnaW46LjI1ZW0gMDtcbiAgICBmb250LXN0eWxlOm5vcm1hbDtcbiAgfVxufVxuXG5xIHtcbiAgZGlzcGxheTpibG9jaztcbiAgY29sb3I6JG1lZEdyYXk7XG4gIGZvbnQtc2l6ZToxLjE1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OjExMCU7XG4gICAgd2lkdGg6LjVlbTtcbiAgICBiYWNrZ3JvdW5kOiRtZWRHcmF5O1xuICAgIGxlZnQ6LTEuNWVtO1xuICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWxlZnQ6MTAlO1xuICAgIG1hcmdpbi1yaWdodDoxMCU7XG4gIH1cbn1cblxuY2l0ZSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZToxLjI1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tbGVmdDoxMCU7XG4gICAgbWFyZ2luLXJpZ2h0OjEwJTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDotMy41ZW07XG4gICAgICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL3F1b3RlLnN2ZycpIG5vLXJlcGVhdDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZToyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgaGVpZ2h0OjIuNWVtO1xuICAgIH1cbiAgfVxufVxuXG4uanVtcC1saW5rIHtcbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiA2ZW07XG4gICAgbWFyZ2luOi02ZW0gMCAwO1xuICB9XG4gICYuc2l0ZS1mb290ZXIge1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGhlaWdodDogOWVtO1xuICAgICAgbWFyZ2luOi05ZW0gMCAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBjb3ZlIHN0dWZmXG4uY292ZS13cmFwcGVyIHtcbiAgbWFyZ2luLWJvdHRvbToxLjVlbTtcbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgJjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICB6LWluZGV4OiAzO1xuICAgIGNvbG9yOndoaXRlO1xuICAgIGNvbnRlbnQ6J1ZpZGVvIFJlcXVpcmVzIEphdmFzY3JpcHQnXG4gIH1cbn1cblxuLmpzIHtcbiAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50Om5vbmVcbiAgICB9XG4gIH1cbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBhbmltYXRlZCgxcyk7XG4gIEBpbmNsdWRlIGZhZGVJbjtcbiAgaWZyYW1lIHtcbiAgICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDoyO1xuICB9XG59XG5cbi5ncmlkIHtcbiAgQGluY2x1ZGUgZ3JpZDtcbn1cblxuLmdyaWQuZnVsbCB7XG4gIG1heC13aWR0aDoxMDAlO1xuICBwYWRkaW5nOjA7XG59XG5cbi5wbHVnaW4taXRlbS1ibG9jayB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4vLyBnZW5lcmljIHNwYWNpbmcgZm9yIHN0YW5kYXJkIHBhZ2UgIFxuLnBhZ2Uge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMjtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbn1cblxuLnJpZ2h0LWFycm93IHtcbiAgZmlsbDp3aGl0ZTtcbiAgbWF4LXdpZHRoOjJlbTtcbiAgbWF4LWhlaWdodDoyZW07XG59XG5cbi5wYXNzcG9ydC1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICBtYXJnaW4tdG9wOi0uMTVlbTtcbiAgbWF4LXdpZHRoOjEuMjVlbTtcbiAgbWF4LWhlaWdodDoxLjI1ZW07XG59XG5cbi5yZWxhdGVkLWZlYXR1cmUtbGlzdCB7XG4gIGNsZWFyOmJvdGg7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QStEQUEsNEVBQTRFO0FBRTVFOzs7R0FHRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsV0FBVyxFQUFFLFVBQVU7RUFBRSxPQUFPO0VBQ2hDLG9CQUFvQixFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ25DLHdCQUF3QixFQUFFLElBQUk7RUFBRSxPQUFPO0NBQ3hDOztBQUdELHlGQUF5RjtBQUN6RixBQUFBLElBQUksQ0FBQztFQUNILFVBQVUsRUFBRSxVQUFVO0NBQ3ZCOztBQUNELEFBQUEsQ0FBQyxFQUFFLENBQUMsQUFBQSxPQUFPLEVBQUUsQ0FBQyxBQUFBLE1BQU0sQ0FBQztFQUNuQixVQUFVLEVBQUUsT0FBTztDQUNwQjs7QUFHRDs7R0FFRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUM7Q0FDVjs7QUFFRDtnRkFDZ0Y7QUFFaEY7Ozs7R0FJRztBQUVILEFBQUEsT0FBTztBQUNQLEtBQUs7QUFDTCxPQUFPO0FBQ1AsVUFBVTtBQUNWLE1BQU07QUFDTixNQUFNO0FBQ04sTUFBTTtBQUNOLElBQUk7QUFDSixJQUFJO0FBQ0osR0FBRztBQUNILE9BQU87QUFDUCxPQUFPLENBQUM7RUFBRSxPQUFPO0VBQ2YsT0FBTyxFQUFFLEtBQUs7Q0FDZjs7QUFFRDs7R0FFRztBQUVILEFBQUEsS0FBSztBQUNMLE1BQU07QUFDTixRQUFRO0FBQ1IsS0FBSyxDQUFDO0VBQ0osT0FBTyxFQUFFLFlBQVk7Q0FDdEI7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLEtBQUssQUFBQSxJQUFLLEVBQUEsQUFBQSxRQUFDLEFBQUEsR0FBVztFQUNwQixPQUFPLEVBQUUsSUFBSTtFQUNiLE1BQU0sRUFBRSxDQUFDO0NBQ1Y7O0FBRUQ7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 */
