.dk-select, .dk-select *, .dk-select *:before, .dk-select *:after, .dk-select-multi, .dk-select-multi *, .dk-select-multi *:before, .dk-select-multi *:after {
  box-sizing: border-box;
  user-select: none; }

.dk-select, .dk-select-multi {
  position: relative;
  display: inline-flex;
  align-items: center;
  line-height: 1.5em;
  width: 200px;
  cursor: pointer; }

.dk-selected {
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  position: relative;
  padding: 0 1.5em 0 0;
  -o-text-overflow: ellipsis;
  text-overflow: ellipsis; }

.dk-selected:before, .dk-selected:after {
  content: '';
  display: block;
  position: absolute;
  right: 0; }

.dk-selected:before {
  top: 50%;
  border: solid transparent;
  border-width: 0.25em 0.25em 0;
  border-top-color: #CCCCCC;
  margin: -0.125em 0.5em 0 0; }

.dk-selected-disabled
.dk-selected:not([aria-activedescendant]) {
  color: rgba(255, 255, 255, 0.3); }

.dk-selected[aria-activedescendant] {
  color: white; }

.dk-select .dk-select-options {
  position: absolute;
  display: none;
  left: -1px;
  right: -1px; }

.dk-select-open-up .dk-select-options {
  margin-bottom: -1px;
  bottom: 100%; }

.dk-select-open-down .dk-select-options {
  margin-top: -1px;
  top: 100%; }

.dk-select-multi .dk-select-options {
  max-height: 10em; }

.dk-select-options {
  background-color: rgba(36, 40, 42, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.3);
  list-style: none;
  margin: 0;
  max-height: 10.5em;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 0.25em 0;
  width: auto;
  z-index: 100; }

.dk-option-selected {
  background-color: rgba(255, 255, 255, 0.1);
  color: #fff; }

.dk-select-options-highlight .dk-option-selected {
  background-color: transparent;
  color: inherit; }

.dk-option {
  padding: 0 0.5em; }

.dk-select-options .dk-option-highlight {
  color: #fff; }

.dk-select-options .dk-option-disabled {
  color: #666666;
  background-color: transparent; }

.dk-select-options .dk-option-hidden {
  display: none; }

.dk-optgroup {
  border: solid #CCCCCC;
  border-width: 1px 0;
  padding: 0.25em 0;
  margin-top: 0.25em; }

.dk-optgroup + .dk-option {
  margin-top: 0.25em; }

.dk-optgroup + .dk-optgroup {
  border-top-width: 0;
  margin-top: 0; }

.dk-optgroup:nth-child(2) {
  padding-top: 0;
  border-top: none;
  margin-top: 0; }

.dk-optgroup:last-child {
  border-bottom-width: 0;
  margin-bottom: 0;
  padding-bottom: 0; }

.dk-optgroup-disabled {
  opacity: 0.6;
  color: #BBBBBB;
  cursor: not-allowed; }

.dk-optgroup-label {
  padding: 0 0.5em 0.25em;
  font-weight: bold;
  width: 100%; }

.dk-optgroup-options {
  list-style: none;
  padding-left: 0; }

.dk-optgroup-options li {
  padding-left: 1.2em; }

.dk-select-open-up .dk-selected {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-color: rgba(255, 255, 255, 0.3); }

.dk-select-open-down .dk-selected {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-color: rgba(255, 255, 255, 0.3); }

.dk-select-open-up .dk-selected:before, .dk-select-open-down .dk-selected:before {
  border-width: 0 0.25em 0.25em;
  border-bottom-color: rgba(255, 255, 255, 0.3); }

.dk-select-open-up .dk-select-options, .dk-select-open-down .dk-select-options, .dk-select-multi:focus .dk-select-options {
  display: block;
  border-color: rgba(255, 255, 255, 0.3); }

.dk-select-multi:hover, .dk-select-multi:focus {
  outline: none; }

.dk-selected:hover, .dk-selected:focus {
  outline: none;
  border-color: rgba(255, 255, 255, 0.3); }

.dk-selected:hover:before, .dk-selected:focus:before {
  border-top-color: rgba(255, 255, 255, 0.3); }

.dk-selected:hover:after, .dk-selected:focus:after {
  border-left-color: rgba(255, 255, 255, 0.3); }

.dk-select-disabled {
  opacity: 0.6;
  color: #666666;
  cursor: not-allowed; }

.dk-select-disabled .dk-selected:hover, .dk-select-disabled .dk-selected:focus {
  border-color: inherit; }

.dk-select-disabled .dk-selected:hover:before, .dk-select-disabled .dk-selected:focus:before {
  border-top-color: inherit; }

.dk-select-disabled .dk-selected:hover:after, .dk-select-disabled .dk-selected:focus:after {
  border-left-color: inherit; }

select[data-dkcacheid] {
  display: none; }

@font-face {
  font-family: "Gotham";
  src: url("../fonts/Gotham-Book.woff") format("woff"), url("../fonts/Gotham-Book.woff2") format("woff2"), url("../fonts/Gotham-Book.eot") format("embedded-opentype"), url("../fonts/Gotham-Book.otf") format("opentype"), url("../fonts/Gotham-Book.svg") format("svg");
  font-weight: 300; }

@font-face {
  font-family: "Gotham";
  src: url("../fonts/Gotham-Bold.woff") format("woff"), url("../fonts/Gotham-Bold.woff2") format("woff2"), url("../fonts/Gotham-Bold.eot") format("embedded-opentype"), url("../fonts/Gotham-Bold.otf") format("opentype"), url("../fonts/Gotham-Bold.svg") format("svg");
  font-weight: 700; }

@font-face {
  font-family: "Gotham";
  src: url("../fonts/Gotham-Light.woff") format("woff"), url("../fonts/Gotham-Light.woff2") format("woff2"), url("../fonts/Gotham-Light.eot") format("embedded-opentype"), url("../fonts/Gotham-Light.otf") format("opentype"), url("../fonts/Gotham-Light.svg") format("svg");
  font-weight: 200; }

@font-face {
  font-family: "Gotham";
  src: url("../fonts/Gotham-Medium.woff") format("woff"), url("../fonts/Gotham-Medium.woff2") format("woff2"), url("../fonts/Gotham-Medium.eot") format("embedded-opentype"), url("../fonts/Gotham-Medium.otf") format("opentype"), url("../fonts/Gotham-Medium.svg") format("svg");
  font-weight: 500; }

@font-face {
  font-family: "Museo";
  src: url("../fonts/Museo-Light.woff") format("woff"), url("../fonts/Museo-Light.woff2") format("woff2"), url("../fonts/Museo-Light.eot") format("embedded-opentype"), url("../fonts/Museo-Light.otf") format("opentype"), url("../fonts/Museo-Light.svg") format("svg");
  font-weight: 200; }

@font-face {
  font-family: "Museo";
  src: url("../fonts/Museo-Regular.woff") format("woff"), url("../fonts/Museo-Regular.woff2") format("woff2"), url("../fonts/Museo-Regular.eot") format("embedded-opentype"), url("../fonts/Museo-Regular.otf") format("opentype"), url("../fonts/Museo-Regular.svg") format("svg");
  font-weight: 400; }

@font-face {
  font-family: "Museo";
  src: url("../fonts/Museo-Medium.woff") format("woff"), url("../fonts/Museo-Medium.woff2") format("woff2"), url("../fonts/Museo-Medium.eot") format("embedded-opentype"), url("../fonts/Museo-Medium.otf") format("opentype"), url("../fonts/Museo-Medium.svg") format("svg");
  font-weight: 500; }

@font-face {
  font-family: "Museo";
  src: url("../fonts/Museo-Bold.woff") format("woff"), url("../fonts/Museo-Bold.woff2") format("woff2"), url("../fonts/Museo-Bold.eot") format("embedded-opentype"), url("../fonts/Museo-Bold.otf") format("opentype"), url("../fonts/Museo-Bold.svg") format("svg");
  font-weight: 700; }

@font-face {
  font-family: "Museo";
  src: url("../fonts/Museo-Heavy.woff") format("woff"), url("../fonts/Museo-Heavy.woff2") format("woff2"), url("../fonts/Museo-Heavy.eot") format("embedded-opentype"), url("../fonts/Museo-Heavy.otf") format("opentype"), url("../fonts/Museo-Heavy.svg") format("svg");
  font-weight: 800; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Light.woff") format("woff"), url("../fonts/SourceSansPro-Light.woff2") format("woff2"), url("../fonts/SourceSansPro-Light.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Light.otf") format("opentype"), url("../fonts/SourceSansPro-Light.svg") format("svg");
  font-weight: 200; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Regular.woff") format("woff"), url("../fonts/SourceSansPro-Regular.woff2") format("woff2"), url("../fonts/SourceSansPro-Regular.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Regular.otf") format("opentype"), url("../fonts/SourceSansPro-Regular.svg") format("svg");
  font-weight: 400; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Medium.woff") format("woff"), url("../fonts/SourceSansPro-Medium.woff2") format("woff2"), url("../fonts/SourceSansPro-Medium.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Medium.otf") format("opentype"), url("../fonts/SourceSansPro-Medium.svg") format("svg");
  font-weight: 500; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Bold.woff") format("woff"), url("../fonts/SourceSansPro-Bold.woff2") format("woff2"), url("../fonts/SourceSansPro-Bold.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Bold.otf") format("opentype"), url("../fonts/SourceSansPro-Bold.svg") format("svg");
  font-weight: 700; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Heavy.woff") format("woff"), url("../fonts/SourceSansPro-Heavy.woff2") format("woff2"), url("../fonts/SourceSansPro-Heavy.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Heavy.otf") format("opentype"), url("../fonts/SourceSansPro-Heavy.svg") format("svg");
  font-weight: 800; }

@font-face {
  font-family: "SourceSansPro";
  src: url("../fonts/SourceSansPro-Book.woff") format("woff"), url("../fonts/SourceSansPro-Book.woff2") format("woff2"), url("../fonts/SourceSansPro-Book.eot") format("embedded-opentype"), url("../fonts/SourceSansPro-Book.otf") format("opentype"), url("../fonts/SourceSansPro-Book.svg") format("svg");
  font-weight: 300; }

@font-face {
  font-family: "iconset";
  src: url("../fonts/iconset.woff") format("woff"), url("../fonts/iconset.eot") format("embedded-opentype"), url("../fonts/iconset.ttf") format("truetype"), url("../fonts/iconset.svg") format("svg"); }


[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'iconset' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-basket::before {
  content: "\e900"; }

.icon-baskets::before {
  content: "\e901"; }

.icon-phone::before {
  content: "\e902"; }

.icon-arrow-right::before {
  content: "\e903"; }

.icon-arrow-left::before {
  content: "\e904"; }

.icon-arrow-up::before {
  content: "\e905"; }

.icon-arrow-down::before {
  content: "\e906"; }

html, body {
  font-size: 16px;
  font-family: "SourceSansPro", sans-serif;
  font-weight: 200;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: calc(100% - 6px); }

.error {
  font-size: 1rem;
  position: relative;
  text-align: center; }
  .error::before {
    font-size: 25rem;
    display: block;
    position: absolute;
    font-family: "SourceSansPro", sans-serif;
    font-weight: 900;
    letter-spacing: -.04em;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -55%);
    opacity: .1;
    z-index: -1; }
    @media (max-width: 1600px) {
      .error::before {
        font-size: calc(5.8rem + 19.2vw) ; } }

.error--404::before {
  content: '404'; }

.error__logo {
  width: 100%;
  max-width: 105px; }

.error__heading {
  font-size: 2.64812rem;
  font-family: "Museo", sans-serif;
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.03em;
  margin-top: 2.3rem;
  margin-bottom: 1.2rem; }
  @media (max-width: 1600px) {
    .error__heading {
      font-size: calc(1.32963rem + 1.3185vw) ; } }
  .error__heading > span {
    font-weight: 700; }

.error__text {
  font-size: 0.75rem;
  color: #727272;
  line-height: 1.875;
  letter-spacing: -.02em;
  margin-top: 1.9rem;
  margin-bottom: 4.5rem; }

.error__btn {
  font-size: 0.625rem;
  letter-spacing: -.03em;
  background: #b61e34;
  color: #ffffff;
  font-weight: 500;
  font-family: "SourceSansPro", sans-serif;
  min-width: 140px;
  min-height: 41px;
  height: 2.41176vw;
  max-height: 51px;
  padding-left: 19px;
  padding-right: 19px;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  text-transform: uppercase;
  text-decoration: none; }

@media (min-width: 450px) {
  .error::before {
    font-size: 34.375rem; } }
  @media (min-width: 450px) and (max-width: 1600px) {
    .error::before {
      font-size: calc(7.675rem + 26.7vw) ; } }

@media (min-width: 450px) {
  .error__logo {
    width: 100%;
    max-width: 145px; }
  .error__text {
    font-size: 1rem; }
  .error__btn {
    font-size: 0.8125rem;
    min-width: 140px;
    min-height: 49px;
    height: 2.88235vw;
    max-height: 59px;
    padding-left: 22px;
    padding-right: 22px; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY3NzIiwic291cmNlcyI6WyJlcnJvci5zY3NzIiwiX2Jhc2Uuc2NzcyIsIl92YXJpYWJsZXMuc2NzcyIsIl92ZW5kb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZnMvc2Nzcy9fcmZzLnNjc3MiLCJ2ZW5kb3IvX2Ryb3BraWNrLnNjc3MiLCJ1dGlsL19taXhpbnMuc2NzcyIsInV0aWwvX2Z1bmN0aW9ucy5zY3NzIiwidGhlbWUvX2ZvbnRzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnYmFzZSc7XHJcblxyXG5AaW1wb3J0ICd0aGVtZS9mb250cyc7XHJcblxyXG5odG1sLCBib2R5IHtcclxuXHRmb250LXNpemU6IDE2cHg7XHJcblx0Zm9udC1mYW1pbHk6ICRmb250LWYtY29udGVudDtcclxuXHRmb250LXdlaWdodDogJGZvbnQtdy1saWdodDtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSA2cHgpO1xyXG59XHJcbi5lcnJvciB7XHJcblx0QGluY2x1ZGUgcmZzKDE2KTtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuXHQmOjpiZWZvcmUge1xyXG5cdFx0QGluY2x1ZGUgcmZzKDQwMCk7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mLWNvbnRlbnQ7XHJcblx0XHRmb250LXdlaWdodDogJGZvbnQtdy1oZWF2eTtcclxuXHRcdGxldHRlci1zcGFjaW5nOiAtLjA0ZW07XHJcblx0XHR0b3A6IDUwJTtcclxuXHRcdGxlZnQ6IDUwJTtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01NSUpO1xyXG5cdFx0b3BhY2l0eTogLjE7XHJcblx0XHR6LWluZGV4OiAtMTtcclxuXHR9XHJcbn1cclxuLmVycm9yLS00MDQge1xyXG5cdCY6OmJlZm9yZSB7XHJcblx0XHRjb250ZW50OiAnNDA0JztcclxuXHR9XHJcbn1cclxuXHJcbi5lcnJvcl9fbG9nbyB7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0bWF4LXdpZHRoOiAxMDVweDtcclxufVxyXG5cclxuLmVycm9yX19oZWFkaW5nIHtcclxuXHRAaW5jbHVkZSByZnMoNDIuMzcpO1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mLWhlYWRlcjtcclxuXHRmb250LXdlaWdodDogJGZvbnQtdy1yZWd1bGFyO1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjA4O1xyXG5cdGxldHRlci1zcGFjaW5nOiAtLjAzZW07XHJcblx0bWFyZ2luLXRvcDogMi4zcmVtO1xyXG5cdG1hcmdpbi1ib3R0b206IDEuMnJlbTtcclxuXHJcblx0JiA+IHNwYW4ge1xyXG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXctYm9sZDtcclxuXHR9XHJcbn1cclxuXHJcbi5lcnJvcl9fdGV4dCB7XHJcblx0QGluY2x1ZGUgcmZzKDEyKTtcclxuXHRjb2xvcjogJGNvbG9yLWNvbnRlbnQ7XHJcblx0bGluZS1oZWlnaHQ6IDEuODc1O1xyXG5cdGxldHRlci1zcGFjaW5nOiAtLjAyZW07XHJcblx0bWFyZ2luLXRvcDogMS45cmVtO1xyXG5cdG1hcmdpbi1ib3R0b206IDQuNXJlbTtcclxufVxyXG5cclxuLmVycm9yX19idG4ge1xyXG5cdEBpbmNsdWRlIHJmcygxMCk7XHJcblx0bGV0dGVyLXNwYWNpbmc6IC0uMDNlbTtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3ItcmVkO1xyXG5cdGNvbG9yOiAkY29sb3Itd2hpdGU7XHJcblx0Zm9udC13ZWlnaHQ6ICRmb250LXctbWVkaXVtO1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mLWNvbnRlbnQ7XHJcblx0bWluLXdpZHRoOiAxNDBweDtcclxuXHRtaW4taGVpZ2h0OiA0MXB4O1xyXG5cdGhlaWdodDogdncoNDFweCk7XHJcblx0bWF4LWhlaWdodDogNTFweDtcclxuXHRwYWRkaW5nLWxlZnQ6IDE5cHg7XHJcblx0cGFkZGluZy1yaWdodDogMTlweDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcblxyXG5cclxuQGluY2x1ZGUgbXEoNDUwcHgpIHtcclxuXHQuZXJyb3Ige1xyXG5cdFx0Jjo6YmVmb3JlIHtcclxuXHRcdFx0QGluY2x1ZGUgcmZzKDU1MCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQuZXJyb3JfX2xvZ28ge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRtYXgtd2lkdGg6IDE0NXB4O1xyXG5cdH1cclxuXHJcblx0LmVycm9yX190ZXh0IHtcclxuXHRcdEBpbmNsdWRlIHJmcygxNik7XHJcblx0fVxyXG5cclxuXHQuZXJyb3JfX2J0biB7XHJcblx0XHRAaW5jbHVkZSByZnMoMTMpO1xyXG5cdFx0bWluLXdpZHRoOiAxNDBweDtcclxuXHRcdG1pbi1oZWlnaHQ6IDQ5cHg7XHJcblx0XHRoZWlnaHQ6IHZ3KDQ5cHgpO1xyXG5cdFx0bWF4LWhlaWdodDogNTlweDtcclxuXHRcdHBhZGRpbmctbGVmdDogMjJweDtcclxuXHRcdHBhZGRpbmctcmlnaHQ6IDIycHg7XHJcblx0fVxyXG59IiwiQGltcG9ydCAndmFyaWFibGVzJztcclxuQGltcG9ydCAndmVuZG9yJztcclxuQGltcG9ydCAndXRpbC9taXhpbnMnO1xyXG5AaW1wb3J0ICd1dGlsL2Z1bmN0aW9ucyc7IiwiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICMgRk9OVFNcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4kZm9udC1mLWNvbnRlbnQ6ICdTb3VyY2VTYW5zUHJvJywgc2Fucy1zZXJpZjtcclxuJGZvbnQtZi1oZWFkZXI6ICdNdXNlbycsIHNhbnMtc2VyaWY7XHJcbiRmb250LWYtaWNvbjogJ2ljb25zZXQnO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICMgRk9OVCB3ZWlnaHRzXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJGZvbnQtdy1oZWF2eTogOTAwO1xyXG4kZm9udC13LWV4dHJhYm9sZDogODAwO1xyXG4kZm9udC13LWJvbGQ6IDcwMDtcclxuJGZvbnQtdy1zZW1pYm9sZDogNjAwO1xyXG4kZm9udC13LW1lZGl1bTogNTAwO1xyXG4kZm9udC13LXJlZ3VsYXI6IDQwMDtcclxuJGZvbnQtdy1ib29rOiAzMDA7XHJcbiRmb250LXctbGlnaHQ6IDIwMDtcclxuJGZvbnQtdy10aGluOiAxMDA7XHJcbiRmb250LXctZGVmYXVsdDogJGZvbnQtdy1yZWd1bGFyO1xyXG5cclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAjIENPTE9SU1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiRjb2xvci13aGl0ZTogI2ZmZmZmZjtcclxuJGNvbG9yLWJsdWU6ICMyZmFhZTE7XHJcbiRjb2xvci1yZWQ6ICNiNjFlMzQ7XHJcblxyXG4kY29sb3ItY29udGVudDogIzcyNzI3MjtcclxuJGNvbG9yLWhlYWRlcjogIzQyNDY0ZTtcclxuXHJcbiRjb2xvci1jb250ZW50LXdoaXRlOiAjY2JjYmNmO1xyXG4kY29sb3ItaGVhZGVyLXdoaXRlOiAkY29sb3Itd2hpdGU7XHJcbiRjb2xvci1iYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGU7XHJcblxyXG4kY29sb3ItZm9vdGVyLWJnOiAjMjQyODJhO1xyXG5cclxuJGNvbG9yLWJvcmRlcjogI0UyRTJFMjtcclxuJGNvbG9yLXBvcHVwLWJhY2tncm91bmQ6IHJnYmEoIzAwMCwuNCk7XHJcbiRjb2xvci1zZWNvbmRhcnk6ICNiNjFlMzQ7XHJcbiRjb2xvci1wcmltYXJ5OiAjYjYxZTM0O1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gIyBMSU5FIEhFSUdIVFNcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4kbGgtZGVmYXVsdDogMS41NTtcclxuJGxoLWNvbnRlbnQ6ICRsaC1kZWZhdWx0O1xyXG4kbGgtaGVhZGVyOiAxLjM4O1xyXG5cclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAjIFRSQU5TSVRJT04gVElNSU5HU1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiR0cmFuc2l0aW9uOiAwLjVzO1xyXG4kdHJhbnNpdGlvbi1mYXN0OiAwLjNzO1xyXG4kdHJhbnNpdGlvbi1zdXBlcmZhc3Q6IDAuMTVzO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjhzO1xyXG5cclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAjIEZPTlQgc2l6ZXNcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4kZm9udC1zLWh0bWw6IDE2cHg7XHJcbiRmb250LXMtZGVmYXVsdDogMTRweDtcclxuJGZvbnQtcy1jb250ZW50OiAxNHB4O1xyXG4kZm9udC1zLXNtYWxsOiAxM3B4O1xyXG4kZm9udC1zLWV4dHJhLXNtYWxsOiAxMnB4O1xyXG5cclxuJGZvbnQtcy1oZWFkZXItZmFjdG9yOiA0NTtcclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gIyBUSU1JTkcgRlVOQ1RJT05cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4kZWFzZS1kZWZhdWx0OiBlYXNlLWluLW91dDtcclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gIyBMQVlPVVRcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4kY29udGFpbmVyLXdpZHRoOiAxNjAwcHg7XHRcdFx0XHRcdC8vIGxheW91dCBjb250ZW50IHdpZHRoXHJcbiRjb250YWluZXItbWluLXBhZGRpbmc6IDE1cHg7XHRcdFx0Ly8gZml4ZWQgdmFsdWUgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50XHJcbiRjb250YWluZXItbWF4LXBhZGRpbmc6IDUwcHg7XHRcdFx0Ly8gbWF4IHZhbHVlIGZvciBldmVyeXRoaW5nIHVwIHRoZSBiaWdnZXN0IGJyZWFrcG9pbnQgYW5kIGR5bmFtaWMgYmV0d2VlblxyXG5cclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAjIE1FRElBIFFVRVJZIEJSRUFLUE9JTlRTXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJGJhYnliZWFyLW1heDogIDc2N3B4O1xyXG5cclxuJG1hbWFiZWFyLW1pbjogIDc2OHB4O1xyXG4kbWFtYWJlYXI6IFx0XHQgIDc2OHB4IDExOTlweDtcclxuJG1hbWFiZWFyLW1heDogMTE5OXB4O1xyXG5cclxuJHBhcGFiZWFyLW1pbjogMTIwMHB4O1xyXG4kcGFwYWJlYXI6IFx0XHQgMTIwMHB4IDE2OTlweDtcclxuJHBhcGFiZWFyLW1heDogMTY5OXB4O1xyXG4kcGFwYWJlYXItdXA6ICAkY29udGFpbmVyLXdpZHRoICsgJGNvbnRhaW5lci1tYXgtcGFkZGluZyAqIDI7XHJcblxyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vICMgUkZTXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuJHJmcy1icmVha3BvaW50OiAxNjAwcHg7XHJcbiRyZnMtYnJlYWtwb2ludC11bml0OiBweDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyAjIHogaW5kZXhcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiR6LWluZGV4LWZvcmNlZDogOTk7IiwiQGltcG9ydCAnbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50JztcclxuQGltcG9ydCAnbm9kZV9tb2R1bGVzL3Jmcy9zY3NzL3Jmcyc7XHJcbkBpbXBvcnQgJy4vdmVuZG9yL2Ryb3BraWNrJzsiLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLXByb3BlcnR5LXZhbHVlLWJsYWNrbGlzdFxuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCBmb250LXJlc2l6aW5nXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0LXJmcy9yZnNcblxuLy8gQ29uZmlndXJhdGlvblxuXG4vLyBNaW5pbXVtIGZvbnQgc2l6ZVxuJHJmcy1taW5pbXVtLWZvbnQtc2l6ZTogMXJlbSAhZGVmYXVsdDtcbiRyZnMtZm9udC1zaXplLXVuaXQ6IHJlbSAhZGVmYXVsdDtcblxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSBmb250LXNpemUgc3RhcnRzIGRlY3JlYXNpbmcgaWYgc2NyZWVuIHdpZHRoIGlzIHNtYWxsZXJcbiRyZnMtYnJlYWtwb2ludDogMTIwMHB4ICFkZWZhdWx0O1xuJHJmcy1icmVha3BvaW50LXVuaXQ6IHB4ICFkZWZhdWx0O1xuXG4vLyBSZXNpemUgZm9udC1zaXplIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXG4kcmZzLXR3by1kaW1lbnNpb25hbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxuJHJmcy1mYWN0b3I6IDUgIWRlZmF1bHQ7XG5cbkBpZiB0eXBlLW9mKCRyZnMtZmFjdG9yKSAhPSBcIm51bWJlclwiIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gR2VuZXJhdGUgZW5hYmxlIG9yIGRpc2FibGUgY2xhc3Nlcy4gUG9zc2liaWxpdGllczogZmFsc2UsIFwiZW5hYmxlXCIgb3IgXCJkaXNhYmxlXCJcbiRyZnMtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAxIHJlbSA9ICRyZnMtcmVtLXZhbHVlIHB4XG4kcmZzLXJlbS12YWx1ZTogMTYgIWRlZmF1bHQ7XG5cbi8vIFNhZmFyaSBpZnJhbWUgcmVzaXplIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3QtcmZzL3Jmcy9pc3N1ZXMvMTRcbiRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZXMgdG8gZmFsc2VcbiRlbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBDYWNoZSAkcmZzLW1pbmltdW0tZm9udC1zaXplIHVuaXRcbiRyZnMtbWluaW11bS1mb250LXNpemUtdW5pdDogdW5pdCgkcmZzLW1pbmltdW0tZm9udC1zaXplKTtcblxuLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkcmZzLW1pbmltdW0tZm9udC1zaXplIGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLW1pbmltdW0tZm9udC1zaXplLXVuaXQgPT0gXCJweFwiIHtcbiAgJHJmcy1taW5pbXVtLWZvbnQtc2l6ZTogJHJmcy1taW5pbXVtLWZvbnQtc2l6ZSAvICgkcmZzLW1pbmltdW0tZm9udC1zaXplICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1taW5pbXVtLWZvbnQtc2l6ZS11bml0ID09IFwicmVtXCIge1xuICAkcmZzLW1pbmltdW0tZm9udC1zaXplOiAkcmZzLW1pbmltdW0tZm9udC1zaXplIC8gKCRyZnMtbWluaW11bS1mb250LXNpemUgKiAwICsgMSAvICRyZnMtcmVtLXZhbHVlKTtcbn1cblxuLy8gQ2FjaGUgJHJmcy1icmVha3BvaW50IHVuaXRcbiRyZnMtYnJlYWtwb2ludC11bml0OiB1bml0KCRyZnMtYnJlYWtwb2ludCk7XG5cbi8vIFJlbW92ZSB1bml0IGZyb20gJHJmcy1icmVha3BvaW50IGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBcInB4XCIge1xuICAkcmZzLWJyZWFrcG9pbnQ6ICRyZnMtYnJlYWtwb2ludCAvICgkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBcInJlbVwiIG9yICRyZnMtYnJlYWtwb2ludC11bml0ID09IFwiZW1cIiB7XG4gICRyZnMtYnJlYWtwb2ludDogJHJmcy1icmVha3BvaW50IC8gKCRyZnMtYnJlYWtwb2ludCAqIDAgKyAxIC8gJHJmcy1yZW0tdmFsdWUpO1xufVxuXG4vLyBSZXNwb25zaXZlIGZvbnQtc2l6ZSBtaXhpblxuQG1peGluIHJmcygkZnMsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gIC8vIENhY2hlICRmcyB1bml0XG4gICRmcy11bml0OiBpZih0eXBlLW9mKCRmcykgPT0gXCJudW1iZXJcIiwgdW5pdCgkZnMpLCBmYWxzZSk7XG5cbiAgLy8gQWRkICFpbXBvcnRhbnQgc3VmZml4IGlmIG5lZWRlZFxuICAkcmZzLXN1ZmZpeDogaWYoJGltcG9ydGFudCwgXCIgIWltcG9ydGFudFwiLCBcIlwiKTtcblxuICAvLyBJZiAkZnMgaXNuJ3QgYSBudW1iZXIgKGxpa2UgaW5oZXJpdCkgb3IgJGZzIGhhcyBhIHVuaXQgKG5vdCBweCBvciByZW0sIGxpa2UgMS41ZW0pIG9yICQgaXMgMCwganVzdCBwcmludCB0aGUgdmFsdWVcbiAgQGlmIG5vdCAkZnMtdW5pdCBvciAkZnMtdW5pdCAhPSBcIlwiIGFuZCAkZnMtdW5pdCAhPSBcInB4XCIgYW5kICRmcy11bml0ICE9IFwicmVtXCIgb3IgJGZzID09IDAge1xuICAgIGZvbnQtc2l6ZTogI3skZnN9I3skcmZzLXN1ZmZpeH07XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFZhcmlhYmxlcyBmb3Igc3RvcmluZyBzdGF0aWMgYW5kIGZsdWlkIHJlc2NhbGluZ1xuICAgICRyZnMtc3RhdGljOiBudWxsO1xuICAgICRyZnMtZmx1aWQ6IG51bGw7XG5cbiAgICAvLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRmcyBmb3IgY2FsY3VsYXRpb25zXG4gICAgQGlmICRmcy11bml0ID09IFwicHhcIiB7XG4gICAgICAkZnM6ICRmcyAvICgkZnMgKiAwICsgMSk7XG4gICAgfVxuICAgIEBlbHNlIGlmICRmcy11bml0ID09IFwicmVtXCIge1xuICAgICAgJGZzOiAkZnMgLyAoJGZzICogMCArIDEgLyAkcmZzLXJlbS12YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGRlZmF1bHQgZm9udC1zaXplXG4gICAgQGlmICRyZnMtZm9udC1zaXplLXVuaXQgPT0gcmVtIHtcbiAgICAgICRyZnMtc3RhdGljOiAjeyRmcyAvICRyZnMtcmVtLXZhbHVlfXJlbSN7JHJmcy1zdWZmaXh9O1xuICAgIH1cbiAgICBAZWxzZSBpZiAkcmZzLWZvbnQtc2l6ZS11bml0ID09IHB4IHtcbiAgICAgICRyZnMtc3RhdGljOiAjeyRmc31weCN7JHJmcy1zdWZmaXh9O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgXCJgI3skcmZzLWZvbnQtc2l6ZS11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy1mb250LXNpemUtdW5pdC4gVXNlIGBweGAgb3IgYHJlbWAuXCI7XG4gICAgfVxuXG4gICAgLy8gT25seSBhZGQgbWVkaWEgcXVlcnkgaWYgZm9udC1zaXplIGlzIGJpZ2dlciBhcyB0aGUgbWluaW11bSBmb250LXNpemVcbiAgICAvLyBJZiAkcmZzLWZhY3RvciA9PSAxLCBubyByZXNjYWxpbmcgd2lsbCB0YWtlIHBsYWNlXG4gICAgQGlmICRmcyA+ICRyZnMtbWluaW11bS1mb250LXNpemUgYW5kICRlbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemVzIHtcbiAgICAgICRtaW4td2lkdGg6IG51bGw7XG4gICAgICAkdmFyaWFibGUtdW5pdDogbnVsbDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIG1pbmltdW0gZm9udC1zaXplIGZvciBnaXZlbiBmb250LXNpemVcbiAgICAgICRmcy1taW46ICRyZnMtbWluaW11bS1mb250LXNpemUgKyAoJGZzIC0gJHJmcy1taW5pbXVtLWZvbnQtc2l6ZSkgLyAkcmZzLWZhY3RvcjtcblxuICAgICAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgYmV0d2VlbiBnaXZlbiBmb250LXNpemUgYW5kIG1pbmltdW0gZm9udC1zaXplIGZvciBnaXZlbiBmb250LXNpemVcbiAgICAgICRmcy1kaWZmOiAkZnMgLSAkZnMtbWluO1xuXG4gICAgICAvLyBNaW5pbXVtIGZvbnQtc2l6ZSBmb3JtYXR0aW5nXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGlmIHRoZSB1bml0IGlzIHZhbGlkLCBiZWNhdXNlIHdlIGRpZCB0aGF0IGJlZm9yZVxuICAgICAgJG1pbi13aWR0aDogaWYoJHJmcy1mb250LXNpemUtdW5pdCA9PSByZW0sICN7JGZzLW1pbiAvICRyZnMtcmVtLXZhbHVlfXJlbSwgI3skZnMtbWlufXB4KTtcblxuICAgICAgLy8gSWYgdHdvLWRpbWVuc2lvbmFsLCB1c2Ugc21hbGxlc3Qgb2Ygc2NyZWVuIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgICR2YXJpYWJsZS11bml0OiBpZigkcmZzLXR3by1kaW1lbnNpb25hbCwgdm1pbiwgdncpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIHZhcmlhYmxlIHdpZHRoIGJldHdlZW4gMCBhbmQgJHJmcy1icmVha3BvaW50XG4gICAgICAkdmFyaWFibGUtd2lkdGg6ICN7JGZzLWRpZmYgKiAxMDAgLyAkcmZzLWJyZWFrcG9pbnR9I3skdmFyaWFibGUtdW5pdH07XG5cbiAgICAgIC8vIFNldCB0aGUgY2FsY3VsYXRlZCBmb250LXNpemUuXG4gICAgICAkcmZzLWZsdWlkOiBjYWxjKCN7JG1pbi13aWR0aH0gKyAjeyR2YXJpYWJsZS13aWR0aH0pICN7JHJmcy1zdWZmaXh9O1xuICAgIH1cblxuICAgIC8vIFJlbmRlcmluZ1xuICAgIEBpZiAkcmZzLWZsdWlkID09IG51bGwge1xuICAgICAgLy8gT25seSByZW5kZXIgc3RhdGljIGZvbnQtc2l6ZSBpZiBubyBmbHVpZCBmb250LXNpemUgaXMgYXZhaWxhYmxlXG4gICAgICBmb250LXNpemU6ICRyZnMtc3RhdGljO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbXEtdmFsdWU6IG51bGw7XG5cbiAgICAgIC8vIFJGUyBicmVha3BvaW50IGZvcm1hdHRpbmdcbiAgICAgIEBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBlbSBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSByZW0ge1xuICAgICAgICAkbXEtdmFsdWU6ICN7JHJmcy1icmVha3BvaW50IC8gJHJmcy1yZW0tdmFsdWV9I3skcmZzLWJyZWFrcG9pbnQtdW5pdH07XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBweCB7XG4gICAgICAgICRtcS12YWx1ZTogI3skcmZzLWJyZWFrcG9pbnR9cHg7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBlcnJvciBcImAjeyRyZnMtYnJlYWtwb2ludC11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy1icmVha3BvaW50LXVuaXQuIFVzZSBgcHhgLCBgZW1gIG9yIGByZW1gLlwiO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHJmcy1jbGFzcyA9PSBcImRpc2FibGVcIiB7XG4gICAgICAgIC8vIEFkZGluZyBhbiBleHRyYSBjbGFzcyBpbmNyZWFzZXMgc3BlY2lmaWNpdHksXG4gICAgICAgIC8vIHdoaWNoIHByZXZlbnRzIHRoZSBtZWRpYSBxdWVyeSB0byBvdmVycmlkZSB0aGUgZm9udCBzaXplXG4gICAgICAgICYsXG4gICAgICAgIC5kaXNhYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplICYsXG4gICAgICAgICYuZGlzYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSB7XG4gICAgICAgICAgZm9udC1zaXplOiAkcmZzLXN0YXRpYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBmb250LXNpemU6ICRyZnMtc3RhdGljO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHJmcy10d28tZGltZW5zaW9uYWwge1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogI3skbXEtdmFsdWV9KSwgKG1heC1oZWlnaHQ6ICN7JG1xLXZhbHVlfSkge1xuICAgICAgICAgIEBpZiAkcmZzLWNsYXNzID09IFwiZW5hYmxlXCIge1xuICAgICAgICAgICAgLmVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSAmLFxuICAgICAgICAgICAgJi5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUge1xuICAgICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1mbHVpZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4IHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBsZW5ndGgtemVyby1uby11bml0XG4gICAgICAgICAgICBtaW4td2lkdGg6IDB2dztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICN7JG1xLXZhbHVlfSkge1xuICAgICAgICAgIEBpZiAkcmZzLWNsYXNzID09IFwiZW5hYmxlXCIge1xuICAgICAgICAgICAgLmVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSAmLFxuICAgICAgICAgICAgJi5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUge1xuICAgICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1mbHVpZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4IHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBsZW5ndGgtemVyby1uby11bml0XG4gICAgICAgICAgICBtaW4td2lkdGg6IDB2dztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHJlc3BvbnNpdmUtZm9udC1zaXplIG1peGluIHVzZXMgUkZTIHRvIHJlc2NhbGUgZm9udCBzaXplc1xuQG1peGluIHJlc3BvbnNpdmUtZm9udC1zaXplKCRmcywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmZzKCRmcywgJGltcG9ydGFudCk7XG59XG4iLCIuZGstc2VsZWN0LCAuZGstc2VsZWN0ICosIC5kay1zZWxlY3QgKjpiZWZvcmUsIC5kay1zZWxlY3QgKjphZnRlciwgLmRrLXNlbGVjdC1tdWx0aSwgLmRrLXNlbGVjdC1tdWx0aSAqLCAuZGstc2VsZWN0LW11bHRpICo6YmVmb3JlLCAuZGstc2VsZWN0LW11bHRpICo6YWZ0ZXIge1xyXG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0dXNlci1zZWxlY3Q6IG5vbmU7XHJcbn1cclxuLmRrLXNlbGVjdCwgLmRrLXNlbGVjdC1tdWx0aSB7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0bGluZS1oZWlnaHQ6IDEuNWVtO1xyXG5cdHdpZHRoOiAyMDBweDtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuLmRrLXNlbGVjdGVkIHtcclxuXHR3aWR0aDogMTAwJTtcclxuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdG92ZXJmbG93OiBoaWRkZW47XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdHBhZGRpbmc6IDAgMS41ZW0gMCAwO1xyXG5cdC1vLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcbi5kay1zZWxlY3RlZDpiZWZvcmUsIC5kay1zZWxlY3RlZDphZnRlciB7XHJcblx0Y29udGVudDogJyc7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHJpZ2h0OiAwO1xyXG59XHJcbi5kay1zZWxlY3RlZDpiZWZvcmUge1xyXG5cdHRvcDogNTAlO1xyXG5cdGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XHJcblx0Ym9yZGVyLXdpZHRoOiAwLjI1ZW0gMC4yNWVtIDA7XHJcblx0Ym9yZGVyLXRvcC1jb2xvcjogI0NDQ0NDQztcclxuXHRtYXJnaW46IC0wLjEyNWVtIDAuNWVtIDAgMDtcclxufVxyXG4uZGstc2VsZWN0ZWQtZGlzYWJsZWRcclxuLmRrLXNlbGVjdGVkOm5vdChbYXJpYS1hY3RpdmVkZXNjZW5kYW50XSkge1xyXG5cdGNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG59XHJcbi5kay1zZWxlY3RlZFthcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIHtcclxuXHRjb2xvcjogcmdiYSgkY29sb3Itd2hpdGUsIDEpO1xyXG59XHJcbi5kay1zZWxlY3QgLmRrLXNlbGVjdC1vcHRpb25zIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0ZGlzcGxheTogbm9uZTtcclxuXHRsZWZ0OiAtMXB4O1xyXG5cdHJpZ2h0OiAtMXB4O1xyXG59XHJcbi5kay1zZWxlY3Qtb3Blbi11cCAuZGstc2VsZWN0LW9wdGlvbnMge1xyXG5cdG1hcmdpbi1ib3R0b206IC0xcHg7XHJcblx0Ym90dG9tOiAxMDAlO1xyXG59XHJcbi5kay1zZWxlY3Qtb3Blbi1kb3duIC5kay1zZWxlY3Qtb3B0aW9ucyB7XHJcblx0bWFyZ2luLXRvcDogLTFweDtcclxuXHR0b3A6IDEwMCU7XHJcbn1cclxuLmRrLXNlbGVjdC1tdWx0aSAuZGstc2VsZWN0LW9wdGlvbnMge1xyXG5cdG1heC1oZWlnaHQ6IDEwZW07XHJcbn1cclxuLmRrLXNlbGVjdC1vcHRpb25zIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1mb290ZXItYmcsIC45KTtcclxuXHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG5cdGxpc3Qtc3R5bGU6IG5vbmU7XHJcblx0bWFyZ2luOiAwO1xyXG5cdG1heC1oZWlnaHQ6IDEwLjVlbTtcclxuXHRvdmVyZmxvdy14OiBoaWRkZW47XHJcblx0b3ZlcmZsb3cteTogYXV0bztcclxuXHRwYWRkaW5nOiAwLjI1ZW0gMDtcclxuXHR3aWR0aDogYXV0bztcclxuXHR6LWluZGV4OiAxMDA7XHJcbn1cclxuLmRrLW9wdGlvbi1zZWxlY3RlZCB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3Itd2hpdGUsIC4xKTtcclxuXHRjb2xvcjogI2ZmZjtcclxufVxyXG4uZGstc2VsZWN0LW9wdGlvbnMtaGlnaGxpZ2h0IC5kay1vcHRpb24tc2VsZWN0ZWQge1xyXG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdGNvbG9yOiBpbmhlcml0O1xyXG59XHJcbi5kay1vcHRpb24ge1xyXG5cdHBhZGRpbmc6IDAgMC41ZW07XHJcbn1cclxuLmRrLXNlbGVjdC1vcHRpb25zIC5kay1vcHRpb24taGlnaGxpZ2h0IHtcclxuXHRjb2xvcjogI2ZmZjtcclxufVxyXG4uZGstc2VsZWN0LW9wdGlvbnMgLmRrLW9wdGlvbi1kaXNhYmxlZCB7XHJcblx0Y29sb3I6ICM2NjY2NjY7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuLmRrLXNlbGVjdC1vcHRpb25zIC5kay1vcHRpb24taGlkZGVuIHtcclxuXHRkaXNwbGF5OiBub25lO1xyXG59XHJcbi5kay1vcHRncm91cCB7XHJcblx0Ym9yZGVyOiBzb2xpZCAjQ0NDQ0NDO1xyXG5cdGJvcmRlci13aWR0aDogMXB4IDA7XHJcblx0cGFkZGluZzogMC4yNWVtIDA7XHJcblx0bWFyZ2luLXRvcDogMC4yNWVtO1xyXG59XHJcbi5kay1vcHRncm91cCArIC5kay1vcHRpb24ge1xyXG5cdG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG4uZGstb3B0Z3JvdXAgKyAuZGstb3B0Z3JvdXAge1xyXG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XHJcblx0bWFyZ2luLXRvcDogMDtcclxufVxyXG4uZGstb3B0Z3JvdXA6bnRoLWNoaWxkKDIpIHtcclxuXHRwYWRkaW5nLXRvcDogMDtcclxuXHRib3JkZXItdG9wOiBub25lO1xyXG5cdG1hcmdpbi10b3A6IDA7XHJcbn1cclxuLmRrLW9wdGdyb3VwOmxhc3QtY2hpbGQge1xyXG5cdGJvcmRlci1ib3R0b20td2lkdGg6IDA7XHJcblx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRwYWRkaW5nLWJvdHRvbTogMDtcclxufVxyXG4uZGstb3B0Z3JvdXAtZGlzYWJsZWQge1xyXG5cdG9wYWNpdHk6IDAuNjtcclxuXHRjb2xvcjogI0JCQkJCQjtcclxuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcbi5kay1vcHRncm91cC1sYWJlbCB7XHJcblx0cGFkZGluZzogMCAwLjVlbSAwLjI1ZW07XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0d2lkdGg6IDEwMCU7XHJcbn1cclxuLmRrLW9wdGdyb3VwLW9wdGlvbnMge1xyXG5cdGxpc3Qtc3R5bGU6IG5vbmU7XHJcblx0cGFkZGluZy1sZWZ0OiAwO1xyXG59XHJcbi5kay1vcHRncm91cC1vcHRpb25zIGxpIHtcclxuXHRwYWRkaW5nLWxlZnQ6IDEuMmVtO1xyXG59XHJcbi5kay1zZWxlY3Qtb3Blbi11cCAuZGstc2VsZWN0ZWQge1xyXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcblx0Ym9yZGVyLWNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG59XHJcbi5kay1zZWxlY3Qtb3Blbi1kb3duIC5kay1zZWxlY3RlZCB7XHJcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxuXHRib3JkZXItY29sb3I6IHJnYmEoJGNvbG9yLXdoaXRlLCAuMyk7XHJcbn1cclxuLmRrLXNlbGVjdC1vcGVuLXVwIC5kay1zZWxlY3RlZDpiZWZvcmUsIC5kay1zZWxlY3Qtb3Blbi1kb3duIC5kay1zZWxlY3RlZDpiZWZvcmUge1xyXG5cdGJvcmRlci13aWR0aDogMCAwLjI1ZW0gMC4yNWVtO1xyXG5cdGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoJGNvbG9yLXdoaXRlLCAuMyk7XHJcbn1cclxuLmRrLXNlbGVjdC1vcGVuLXVwIC5kay1zZWxlY3Qtb3B0aW9ucywgLmRrLXNlbGVjdC1vcGVuLWRvd24gLmRrLXNlbGVjdC1vcHRpb25zLCAuZGstc2VsZWN0LW11bHRpOmZvY3VzIC5kay1zZWxlY3Qtb3B0aW9ucyB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0Ym9yZGVyLWNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG59XHJcbi5kay1zZWxlY3QtbXVsdGk6aG92ZXIsIC5kay1zZWxlY3QtbXVsdGk6Zm9jdXMge1xyXG5cdG91dGxpbmU6IG5vbmU7XHJcbn1cclxuLmRrLXNlbGVjdGVkOmhvdmVyLCAuZGstc2VsZWN0ZWQ6Zm9jdXMge1xyXG5cdG91dGxpbmU6IG5vbmU7XHJcblx0Ym9yZGVyLWNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG59XHJcbi5kay1zZWxlY3RlZDpob3ZlcjpiZWZvcmUsIC5kay1zZWxlY3RlZDpmb2N1czpiZWZvcmUge1xyXG5cdGJvcmRlci10b3AtY29sb3I6IHJnYmEoJGNvbG9yLXdoaXRlLCAuMyk7XHJcbn1cclxuLmRrLXNlbGVjdGVkOmhvdmVyOmFmdGVyLCAuZGstc2VsZWN0ZWQ6Zm9jdXM6YWZ0ZXIge1xyXG5cdGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgLjMpO1xyXG59XHJcbi5kay1zZWxlY3QtZGlzYWJsZWQge1xyXG5cdG9wYWNpdHk6IDAuNjtcclxuXHRjb2xvcjogIzY2NjY2NjtcclxuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcbi5kay1zZWxlY3QtZGlzYWJsZWQgLmRrLXNlbGVjdGVkOmhvdmVyLCAuZGstc2VsZWN0LWRpc2FibGVkIC5kay1zZWxlY3RlZDpmb2N1cyB7XHJcblx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0O1xyXG59XHJcbi5kay1zZWxlY3QtZGlzYWJsZWQgLmRrLXNlbGVjdGVkOmhvdmVyOmJlZm9yZSwgLmRrLXNlbGVjdC1kaXNhYmxlZCAuZGstc2VsZWN0ZWQ6Zm9jdXM6YmVmb3JlIHtcclxuXHRib3JkZXItdG9wLWNvbG9yOiBpbmhlcml0O1xyXG59XHJcbi5kay1zZWxlY3QtZGlzYWJsZWQgLmRrLXNlbGVjdGVkOmhvdmVyOmFmdGVyLCAuZGstc2VsZWN0LWRpc2FibGVkIC5kay1zZWxlY3RlZDpmb2N1czphZnRlciB7XHJcblx0Ym9yZGVyLWxlZnQtY29sb3I6IGluaGVyaXQ7XHJcbn1cclxuc2VsZWN0W2RhdGEtZGtjYWNoZWlkXSB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxufVxyXG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xyXG5cdCY6LW1vei1wbGFjZWhvbGRlciB7XHJcblx0XHRAY29udGVudDtcclxuXHR9XHJcblx0Jjo6LW1vei1wbGFjZWhvbGRlciB7XHJcblx0XHRAY29udGVudDtcclxuXHR9XHJcblx0JjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0QGNvbnRlbnQ7XHJcblx0fVxyXG5cdCY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0QGNvbnRlbnQ7XHJcblx0fVxyXG5cdCY6OnBsYWNlaG9sZGVyIHtcclxuXHRcdEBjb250ZW50O1xyXG5cdH1cclxuXHQmOnBsYWNlaG9sZGVyIHtcclxuXHRcdEBjb250ZW50O1xyXG5cdH1cclxufVxyXG5cclxuXHJcbkBtaXhpbiBkYXNoZXMoJGJnLWNvbG9yOiB0cmFuc3BhcmVudCwgJGNvbG9yLWRhc2g6ICRjb2xvci13aGl0ZSwgJG9wYWNpdHk6IC42LCAkd2lkdGg6IDEycHgsICRkaXI6ICdoJykge1xyXG5cdC8vIHBzZXVkby1ib3JkZXIgOylcclxuXHJcblx0YmFja2dyb3VuZC1jb2xvcjogJGJnLWNvbG9yICFpbXBvcnRhbnQ7XHJcblx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxyXG5cdFx0aWYoJGRpciA9PSAnaCcsIHRvIHJpZ2h0LCB0byBib3R0b20pLFxyXG5cdFx0cmdiYSgkY29sb3ItZGFzaCwgJG9wYWNpdHkpIDAlLFxyXG5cdFx0cmdiYSgkY29sb3ItZGFzaCwgJG9wYWNpdHkpIDQ1JSxcclxuXHRcdHJnYmEoJGNvbG9yLWRhc2gsIDApIDQ1LjAwMSUsXHJcblx0XHRyZ2JhKCRjb2xvci1kYXNoLCAwKSAxMDAlXHJcblx0KSAhaW1wb3J0YW50O1xyXG5cdGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbSBsZWZ0ICFpbXBvcnRhbnQ7XHJcblx0YmFja2dyb3VuZC1zaXplOiBpZigkZGlyID09ICdoJywgJHdpZHRoIDFweCwgMXB4ICR3aWR0aCkgIWltcG9ydGFudDtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogaWYoJGRpciA9PSAnaCcsIHJlcGVhdC14LCByZXBlYXQteSkgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcblxyXG5AbWl4aW4gZ3JpZGR5LWJhY2tncm91bmQoJHNpemUsICRjb2xvciwgJGltYWdlOiAnJywgJGltYWdlLXNpemU6IGNvdmVyLCAkaW1hZ2UtcmVwZWF0OiBuby1yZXBlYXQsICRpbWFnZS1wb3NpdGlvbjogY2VudGVyLCAkaW1hZ2UtYXR0YWNobWVudDogc2Nyb2xsKSB7XHJcblx0JGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIGxlZnQsIHRyYW5zcGFyZW50IDAlLCB0cmFuc3BhcmVudCA0OS41JSwgJGNvbG9yIDQ5LjYlLCAkY29sb3IgNTQuNSUsIHRyYW5zcGFyZW50IDU0LjYlLCB0cmFuc3BhcmVudCAxMDAlKTtcclxuXHRAaWYgJGltYWdlICE9ICcnIHtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6ICRncmFkaWVudCwgdXJsKCRpbWFnZSk7XHJcblx0fSBAZWxzZSB7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiAkZ3JhZGllbnQ7XHJcblx0fVxyXG5cdGJhY2tncm91bmQtc2l6ZTogJHNpemUgJHNpemUsICRpbWFnZS1zaXplO1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQsICRpbWFnZS1yZXBlYXQ7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyLCAkaW1hZ2UtcG9zaXRpb247XHJcblx0YmFja2dyb3VuZC1hdHRhY2htZW50OiBzY3JvbGwsICRpbWFnZS1hdHRhY2htZW50O1xyXG59XHJcblxyXG5cclxuQG1peGluIHRyYW5zaXRpb24oJHByb3BlcnRpZXMsICRzZXR0aW5nczogJHRyYW5zaXRpb24gJGVhc2UtZGVmYXVsdCkge1xyXG5cclxuXHQkX3RyYW5zaXRpb246IG51bGw7XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRwcm9wZXJ0aWVzKSB7XHJcblx0XHQkX3RyYW5zaXRpb246ICRfdHJhbnNpdGlvbiBudGgoJHByb3BlcnRpZXMsICRpKSAkc2V0dGluZ3M7XHJcblx0XHRAaWYgKCRpIDwgbGVuZ3RoKCRwcm9wZXJ0aWVzKSkge1xyXG5cdFx0XHQkX3RyYW5zaXRpb246IHVucXVvdGUoJyN7JF90cmFuc2l0aW9ufSwnKVxyXG5cdFx0fVxyXG5cdH1cclxuXHR0cmFuc2l0aW9uOiAkX3RyYW5zaXRpb247XHJcbn1cclxuXHJcbkBtaXhpbiByYSgkcGFkZGluZ190eXBlLCAkcGFkZGluZ19zaXplLCAkcGFkZGluZ19zaXplX21pbiwgJHBhZGRpbmdfc2l6ZV9tYXgsICRyZXNwb25zaXZlX29wdGlvbnM6IG51bGwpIHsgLy9XYXJ0b3NjaSBvIGlsZSBtYSB3enJvc25hxIcgcG9kYWplbXkgdyBkb3dvbG5laiBqZWRub3N0Y2VcclxuXHJcblx0JHJlc3BvbnNpdmUtdW5pdGxlc3M6ICRwYWRkaW5nX3NpemUgLyAoJHBhZGRpbmdfc2l6ZSAtICRwYWRkaW5nX3NpemUgKyAxKTtcclxuXHQkZGltZW5zaW9uOiBpZih1bml0KCRwYWRkaW5nX3NpemUpID09ICd2aCcsICdoZWlnaHQnLCAnd2lkdGgnKTtcclxuXHQkbWluLWJyZWFrcG9pbnQ6ICRwYWRkaW5nX3NpemVfbWluIC8gJHJlc3BvbnNpdmUtdW5pdGxlc3MgKiAxMDA7XHJcblxyXG5cdCRpbXBvcnRhbnQ6ICcnO1xyXG5cclxuXHRAaWYgc3RyLWluZGV4KCRwYWRkaW5nX3R5cGUsIFwiIVwiKSB7XHJcblx0XHQkaW1wb3J0YW50OiAnIWltcG9ydGFudCc7XHJcblx0XHQkaW5kZXg6IHN0ci1pbmRleCgkcGFkZGluZ190eXBlLCAnIScpO1xyXG5cdFx0JHBhZGRpbmdfdHlwZSA6IHN0ci1zbGljZSgkcGFkZGluZ190eXBlLCAxLCAkaW5kZXggLSAxKTtcclxuXHR9XHJcblxyXG5cclxuXHRAbWVkaWEgKG1heC0jeyRkaW1lbnNpb259OiAjeyRtaW4tYnJlYWtwb2ludH0pIHtcclxuXHRcdCN7JHBhZGRpbmdfdHlwZX06ICRwYWRkaW5nX3NpemVfbWluI3skaW1wb3J0YW50fTtcclxuXHR9XHJcblxyXG5cclxuXHRAaWYgJHBhZGRpbmdfc2l6ZV9tYXgge1xyXG5cdFx0JG1heC1icmVha3BvaW50OiAkcGFkZGluZ19zaXplX21heCAvICRyZXNwb25zaXZlLXVuaXRsZXNzICogMTAwO1xyXG5cclxuXHRcdEBtZWRpYSAobWluLSN7JGRpbWVuc2lvbn06ICN7JG1heC1icmVha3BvaW50fSkge1xyXG5cdFx0XHQjeyRwYWRkaW5nX3R5cGV9OiAkcGFkZGluZ19zaXplX21heCN7JGltcG9ydGFudH07XHJcblx0XHR9XHJcblxyXG5cdFx0QGlmICRyZXNwb25zaXZlX29wdGlvbnN7XHJcblx0XHRcdEBlYWNoICRrZXksICR2YWwgaW4gJHJlc3BvbnNpdmVfb3B0aW9uc3tcclxuXHRcdFx0XHRAaWYgdW5pdCgkdmFsKSA9PSAnJScgeyAvL0dkeSB3IHdhcnRvc2NpIHBvZGFteSB3YXJ0b3NjIHByb2NlbnRvd8SFXHJcblx0XHRcdFx0XHQkdW5pdF9wcm9jZW50OigkdmFsIC8gMSUpIC8gMTAwOyAvLyB1c3V3YW5pZSB6bmFrdSAlXHJcblx0XHRcdFx0XHRAaW5jbHVkZSBtcSgka2V5KSB7XHJcblx0XHRcdFx0XHRcdCN7JHBhZGRpbmdfdHlwZX06ICgoJHBhZGRpbmdfc2l6ZV9taW4gKiAkdW5pdF9wcm9jZW50KSArICRwYWRkaW5nX3NpemVfbWluKSN7JGltcG9ydGFudH07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRAaW5jbHVkZSBtcSgka2V5KSB7XHJcblx0XHRcdFx0XHRcdCN7JHBhZGRpbmdfdHlwZX06IGNhbGMoI3skdmFsfSArICN7JHBhZGRpbmdfc2l6ZV9taW59KSN7JGltcG9ydGFudH07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0I3skcGFkZGluZ190eXBlfTogJHBhZGRpbmdfc2l6ZSN7JGltcG9ydGFudH07XHJcbn1cclxuIiwiXHJcbiRiYXNlLXZpZXdwb3J0LXdpZHRoOiAxNzAwcHggIWRlZmF1bHQ7XHJcblxyXG5AZnVuY3Rpb24gdncoJHZhbHVlLCAkYmFzZTogJGJhc2Utdmlld3BvcnQtd2lkdGgpIHtcclxuXHRAcmV0dXJuICgkdmFsdWUgKiAxMDAgLyAkYmFzZSkgKiAxdnc7XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBwcm9jKCR4LCAkeSkge1xyXG5cdEByZXR1cm4gcGVyY2VudGFnZSgkeCAvICR5KTtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGNoYW5nZS1ieS1wcm9jKCR2YWx1ZSwgJHByb2MpIHtcclxuXHRAcmV0dXJuIHJvdW5kKCR2YWx1ZSAqICRwcm9jIC8gMTAwKTtcclxufSIsIkBtaXhpbiBmb250LWZhY2UoJGZvbnQtbmFtZSwgJGZpbGUsICR3ZWlnaHRzOiAoKSwgJGZvcm1hdHM6ICgnd29mZicsICd3b2ZmMicsICdvdGYnKSkge1xyXG5cclxuXHQkYXZhaWxhYmxlLWZvcm1hdHM6IChcclxuXHRcdCd3b2ZmJzogJ3dvZmYnLFxyXG5cdFx0J3dvZmYyJzogJ3dvZmYyJyxcclxuXHRcdCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLFxyXG5cdFx0J3R0Zic6ICd0cnVldHlwZScsXHJcblx0XHQnb3RmJzogJ29wZW50eXBlJyxcclxuXHRcdCdzdmcnOiAnc3ZnJ1xyXG5cdCk7XHJcblxyXG5cdCRhdmFpbGFibGUtd2VpZ2h0czogKFxyXG5cdFx0J1RoaW4nOiAxMDAsXHJcblx0XHQnTGlnaHQnOiAyMDAsXHJcblx0XHQnQm9vayc6IDMwMCxcclxuXHRcdCdSZWd1bGFyJzogNDAwLFxyXG5cdFx0J01lZGl1bSc6IDUwMCxcclxuXHRcdCdTZW1pYm9sZCc6IDYwMCxcclxuXHRcdCdCb2xkJzogNzAwLFxyXG5cdFx0J0hlYXZ5JzogODAwLFxyXG5cdFx0J0hlYXZ5QmxhY2snOiA5MDBcclxuXHQpO1xyXG5cclxuXHQkcGF0aDogJy4uL2ZvbnRzJztcclxuXHJcblx0QGlmIGxlbmd0aCgkd2VpZ2h0cykgPiAwIHtcclxuXHRcdEBlYWNoICR3ZWlnaHQgaW4gJHdlaWdodHMge1xyXG5cdFx0XHQkc3JjczogKCk7XHJcblxyXG5cdFx0XHRAZWFjaCAkZm9ybWF0IGluICRmb3JtYXRzIHtcclxuXHRcdFx0XHQkc3JjczogYXBwZW5kKCRzcmNzLCB1cmwoJyN7JHBhdGh9LyN7JGZpbGV9LSN7JHdlaWdodH0uI3skZm9ybWF0fScpIGZvcm1hdChtYXAtZ2V0KCRhdmFpbGFibGUtZm9ybWF0cywgJGZvcm1hdCkpLCBjb21tYSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBmb250LWZhY2Uge1xyXG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1uYW1lO1xyXG5cdFx0XHRcdHNyYzogJHNyY3M7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG1hcC1nZXQoJGF2YWlsYWJsZS13ZWlnaHRzLCAkd2VpZ2h0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0gQGVsc2Uge1xyXG5cdFx0JHNyY3M6ICgpO1xyXG5cclxuXHRcdEBlYWNoICRmb3JtYXQgaW4gJGZvcm1hdHMge1xyXG5cdFx0XHQkc3JjczogYXBwZW5kKCRzcmNzLCB1cmwoJyN7JHBhdGh9LyN7JGZpbGV9LiN7JGZvcm1hdH0nKSBmb3JtYXQobWFwLWdldCgkYXZhaWxhYmxlLWZvcm1hdHMsICRmb3JtYXQpKSwgY29tbWEpO1xyXG5cdFx0fVxyXG5cclxuXHRcdEBmb250LWZhY2Uge1xyXG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtbmFtZTtcclxuXHRcdFx0c3JjOiAkc3JjcztcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbkBpbmNsdWRlIGZvbnQtZmFjZSgnR290aGFtJywgJ0dvdGhhbScsICgnQm9vaycsICdCb2xkJywgJ0xpZ2h0JywgJ01lZGl1bScpLCAoJ3dvZmYnLCAnd29mZjInLCAnZW90JywgJ290ZicsICdzdmcnKSk7XHJcbkBpbmNsdWRlIGZvbnQtZmFjZSgnTXVzZW8nLCAnTXVzZW8nLCAoJ0xpZ2h0JywgJ1JlZ3VsYXInLCAnTWVkaXVtJywgJ0JvbGQnLCAnSGVhdnknKSwgKCd3b2ZmJywgJ3dvZmYyJywgJ2VvdCcsICdvdGYnLCAnc3ZnJykpO1xyXG5AaW5jbHVkZSBmb250LWZhY2UoJ1NvdXJjZVNhbnNQcm8nLCAnU291cmNlU2Fuc1BybycsICgnTGlnaHQnLCAnUmVndWxhcicsICdNZWRpdW0nLCAnQm9sZCcsICdIZWF2eScsICdCb29rJyksICgnd29mZicsICd3b2ZmMicsICdlb3QnLCAnb3RmJywgJ3N2ZycpKTtcclxuXHJcbkBpbmNsdWRlIGZvbnQtZmFjZSgnaWNvbnNldCcsICdpY29uc2V0JywgJGZvcm1hdHM6ICgnd29mZicsICdlb3QnLCAndHRmJywgJ3N2ZycpKTtcclxuXHJcbiVpY29uZm9udCxcclxuW2NsYXNzXj1cImljb24tXCJdLCBbY2xhc3MqPVwiIGljb24tXCJdIHtcclxuXHQvKiB1c2UgIWltcG9ydGFudCB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIGJyb3dzZXIgZXh0ZW5zaW9ucyB0aGF0IGNoYW5nZSBmb250cyAqL1xyXG5cdGZvbnQtZmFtaWx5OiAnaWNvbnNldCcgIWltcG9ydGFudDtcclxuXHRzcGVhazogbm9uZTtcclxuXHRmb250LXN0eWxlOiBub3JtYWw7XHJcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHRmb250LXZhcmlhbnQ6IG5vcm1hbDtcclxuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxuXHRsaW5lLWhlaWdodDogMTtcclxuXHJcblx0LyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXHJcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxufVxyXG5cclxuLmljb24tYmFza2V0OjpiZWZvcmUge1xyXG5cdGNvbnRlbnQ6IFwiXFxlOTAwXCI7XHJcbn1cclxuLmljb24tYmFza2V0czo6YmVmb3JlIHtcclxuXHRjb250ZW50OiBcIlxcZTkwMVwiO1xyXG59XHJcbi5pY29uLXBob25lOjpiZWZvcmUge1xyXG5cdGNvbnRlbnQ6IFwiXFxlOTAyXCI7XHJcbn1cclxuLmljb24tYXJyb3ctcmlnaHQ6OmJlZm9yZSB7XHJcblx0Y29udGVudDogXCJcXGU5MDNcIjtcclxufVxyXG4uaWNvbi1hcnJvdy1sZWZ0OjpiZWZvcmUge1xyXG5cdGNvbnRlbnQ6IFwiXFxlOTA0XCI7XHJcbn1cclxuLmljb24tYXJyb3ctdXA6OmJlZm9yZSB7XHJcblx0Y29udGVudDogXCJcXGU5MDVcIjtcclxufVxyXG4uaWNvbi1hcnJvdy1kb3duOjpiZWZvcmUge1xyXG5cdGNvbnRlbnQ6IFwiXFxlOTA2XCI7XHJcbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkF3QkFBLEFBQUEsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQUFBQSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQUFBQSxNQUFNLEVBQUUs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 */
