@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Heart: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* Secondary: green */
/* Brag: gold */
/* Fancy: pink */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
.piece-letter .tview2 move, .tview2 .piece-letter move, .piece-letter .pv_box .pv span, .pv_box .pv .piece-letter span, .tview2 glyph {
  font-family: 'Noto Sans', Sans-Serif;
}

.tview2 move draw, .pv_box .pv span draw, .tview2 eval, .tview2 tick, .tview2 comment .by, .ceval .engine .cloud, .puzzle__side__user__rating__casual, .puzzle__side__replay a, .puzzle__side__theme {
  font-family: 'Roboto', Sans-Serif;
}

.tview2 move, .pv_box .pv span {
  font-family: 'Noto Chess', 'Noto Sans';
}

.tview2 move draw, .pv_box .pv span draw {
  margin-left: 1ch;
  font-weight: normal;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.puzzle__controls .fbt {
  color: #999999;
}

.cmn-toggle + label::after {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.cmn-toggle:hover:not(:disabled) + label::after {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.ceval {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.pv_box .pv-board {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.fbt {
  background: none;
  border: none;
  outline: none;
  color: #bababa;
  align-items: normal;
}

.cmn-toggle:focus:not(:disabled) + label, .cmn-toggle:hover:not(:disabled) + label {
  box-shadow: 0 0 12px #999999;
}

.tview2 move, .ceval help,
.ceval .engine {
  white-space: nowrap;
  overflow: hidden;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap {
  white-space: nowrap;
}

.tview2-column > interrupt > comment {
  overflow-wrap: break-word;
  word-break: break-word;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap {
  overflow: hidden;
  text-overflow: ellipsis;
}

.pv_box .pv-board .pv-board-square {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

.cmn-toggle + label::before, .tview2 shapes::before, .puzzle__themes__vote::before, .puzzle__session a.result-empty::before {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  content: attr(data-icon);
  opacity: 0.9;
}

.pv_box .pv-board .pv-board-square .cg-wrap {
  position: absolute;
  width: 100%;
  height: 100%;
}

.cmn-toggle, .analyse-controls {
  touch-action: manipulation;
}

.tview2-column {
  display: flex;
  flex-flow: row wrap;
}

.ceval .switch, .puzzle__side__replay__bar, .puzzle__themes__vote, .puzzle__themes__lock, .puzzle__controls, .puzzle__feedback.after .complete, .puzzle__vote .puzzle__diffvote-btn, .puzzle__favorite-btn, .puzzle__session a {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.puzzle__side__metas .infos, .puzzle__side__streak__info h1, .puzzle__side__streak__score, .puzzle__side__config__toggle, .puzzle__themes__votes, .puzzle__feedback.after .continue, .puzzle__vote__buttons, .puzzle__vote-row {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.puzzle__side__config__toggles, .puzzle__themes__list__entry, .puzzle__feedback.after .puzzle__more {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.puzzle__tools, .puzzle__feedback, .puzzle--streak .puzzle__feedback.after .complete, .puzzle__vote {
  display: flex;
  flex-flow: column;
}

.puzzle__side__metas, .puzzle__tools, .puzzle__side__replay__bar, .puzzle__side__user, .puzzle__side__config, .puzzle__side__replay, .puzzle__side__theme, .tview2-inline move.active,
.tview2 line move.active, .tview2-inline move:hover, .ceval .engine .cloud, .puzzle__side__replay__bar::before, .puzzle__session a {
  border-radius: 3px;
}

.puzzle__side__metas, .puzzle__tools, .puzzle__side__replay__bar {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.analyse-controls .fbt {
  border-radius: 0 0 3px 3px;
}

.puzzle__side__user, .puzzle__side__config, .puzzle__side__replay, .puzzle__side__theme, .puzzle__side__metas, .puzzle__tools {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

coords {
  /* handle hidden coords */
  /* handle inner coords */
  position: absolute;
  display: flex;
  pointer-events: none;
  user-select: none;
  color: #fff;
  text-shadow: 0 1px 2px #000;
  font-weight: bold;
  /* negate inner coords colors */
}

.coords-no coords {
  display: none;
}

coords {
  font-size: 8px;
}

@media (min-width: 320px) {
  coords {
    font-size: calc( 8px + 4 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  coords {
    font-size: 12px;
  }
}

coords.ranks {
  flex-flow: column-reverse;
  top: 1px;
  right: 0;
  height: 100%;
  width: 0.8em;
}

coords.ranks.black {
  flex-flow: column;
}

coords.files {
  bottom: 0px;
  left: 0;
  text-align: left;
  flex-flow: row;
  width: 100%;
  height: 1.4em;
}

coords.files.black {
  flex-flow: row-reverse;
}

coords.files coord {
  padding-left: 4px;
}

coords coord {
  flex: 1 1 auto;
}

coords .is3d .cg-wrap coords coord {
  color: #fff !important;
  text-shadow: 0 1px 2px #000 !important;
}

coords .is3d .cg-wrap coords.files {
  bottom: calc(1px - 2.5%);
}

coords .is3d .cg-wrap coords.files coord {
  padding-left: 3px;
}

coords {
  text-shadow: var(--cg-cs, 0 1px 2px #000);
}

.orientation-white .files coord:nth-child(2n + 1),
.orientation-white .ranks coord:nth-child(2n),
.orientation-black .files coord:nth-child(2n),
.orientation-black .ranks coord:nth-child(2n + 1) {
  color: var(--cg-ccw, #fff);
}

.orientation-white .files coord:nth-child(2n),
.orientation-white .ranks coord:nth-child(2n + 1),
.orientation-black .files coord:nth-child(2n + 1),
.orientation-black .ranks coord:nth-child(2n) {
  color: var(--cg-ccb, #fff);
}

/* handle outer coords */
@media (min-width: 800px), (orientation: landscape) {
  .coords-out coords {
    text-shadow: none;
  }
  .coords-out coords.ranks {
    right: -15px;
    top: 0;
    width: 12px;
  }
  .coords-out coords.ranks coord {
    transform: translateY(42%);
  }
  .coords-out coords.files {
    bottom: -15px;
    left: 0;
    text-align: center;
  }
  .coords-out coords.ranks coord,
  .coords-out .is2d coords.files coord {
    color: #999999 !important;
  }
}

body {
  --board-scale: 1;
}

@media (min-width: 800px) and (min-height: 500px) {
  body {
    --board-scale: calc((var(--zoom) / 100) * 0.7 + 0.3);
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  body {
    --col1: 1;
  }
  .main-board cg-board {
    border-radius: 0;
  }
}

body.resizing {
  user-select: none;
}

cg-resize {
  display: none;
}

@media (min-width: 800px) {
  cg-resize {
    display: block;
    position: absolute;
    right: -9px;
    bottom: -9px;
    width: 22px;
    height: 22px;
    cursor: nwse-resize;
    z-index: 10;
  }
  cg-resize::before, cg-resize::after {
    background: #000;
    content: '';
    position: absolute;
    width: 12px;
    height: 1px;
  }
  cg-resize::before {
    width: 5px;
    transform: translate(7px, 8px) rotate(-45deg);
  }
  cg-resize::after {
    transform: translate(1px, 6px) rotate(-45deg);
  }
  cg-resize:hover {
    border-radius: 50%;
    background: rgba(214, 79, 0, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

.color-icon.white::before {
  content: '';
}

.color-icon.black::before {
  content: '';
}

.color-icon.random::before {
  content: '';
}

.fbt {
  text-transform: uppercase;
  line-height: 1.5;
  transition: all 150ms;
}

@media (hover: hover) {
  .fbt:hover:not(.disabled):not([disabled]) {
    background: #537c23;
    color: #fff;
  }
}

.fbt.active {
  background: #629924 !important;
  color: #fff;
}

.fbt.disabled, .fbt[disabled] {
  opacity: 0.5;
  cursor: default;
}

@keyframes glowing {
  42% {
    background: none;
  }
  50% {
    background: #293a49;
  }
  58% {
    background: none;
  }
}

.glowing {
  animation: glowing 2s ease-in-out infinite;
}

#zentog {
  position: absolute;
  padding: 0.5em 1em;
  opacity: 0.5;
  z-index: 110;
  display: none;
  border-bottom-right-radius: 3px;
}

body.playing.zen #zentog {
  display: block;
}

#zentog:hover {
  opacity: 1;
}

.cmn-toggle {
  position: absolute;
  margin-left: -99999px;
}

.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  padding: 1px;
  width: 40px;
  height: 24px;
  border: 1px solid #404040;
  border-radius: 24px;
}

.cmn-toggle + label::before, .cmn-toggle + label::after {
  display: block;
  position: absolute;
  content: '';
  width: 22px;
  height: 22px;
  bottom: 0;
  left: 0;
}

.cmn-toggle + label::before {
  font-size: 1em;
  z-index: 1;
  text-align: center;
  line-height: 22px;
}

.cmn-toggle + label::after {
  border-radius: 100%;
  box-shadow: 0 1px 2.5px rgba(0, 0, 0, 0.3);
}

.cmn-toggle:not(:checked) + label {
  background-color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label {
  background-color: #6b6b6b;
}

.cmn-toggle:checked + label {
  background-color: #629924;
}

.cmn-toggle:disabled + label {
  opacity: 60%;
  cursor: not-allowed !important;
}

.cmn-toggle:hover:not(:disabled) + label {
  transition: background 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::before {
  transition: margin 150ms, color 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::after {
  transition: margin 150ms;
}

.cmn-toggle:not(:checked) + label::before {
  content: '';
  color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label::before {
  color: #6b6b6b;
}

.cmn-toggle:checked + label::before, .cmn-toggle:checked + label::after {
  margin-left: 16px;
}

.cmn-toggle:checked + label::before {
  content: '';
  color: #629924;
}

body::-webkit-scrollbar,
body::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

body::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:active {
  background: #6b6b6b;
}

.tview2 move {
  display: inline-block;
  cursor: pointer;
}

.tview2 {
  white-space: normal;
}

.tview2-inline {
  padding: 7px 3px 7px 7px;
}

@media (hover: none) {
  .tview2 move {
    user-select: none;
  }
}

.tview2 move.inaccuracy {
  color: #56b4e9;
}

.tview2 move.mistake {
  color: #e69f00;
}

.tview2 move.blunder {
  color: #df5353;
}

.tview2-column move {
  font-size: 1.092em;
  padding: 0 2px;
}

.tview2-inline move {
  padding: 0.25em 0.17em;
  white-space: nowrap;
  font-weight: bold;
}

.tview2 move.parent {
  color: #3692e7;
}

.tview2 comment a {
  vertical-align: top;
}

.tview2 move.current {
  border: 1px solid #d64f00;
}

.tview2 move.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-inline move.active,
.tview2 line move.active {
  background: #2d5070;
  color: #e3e3e3;
  outline: 1px solid #306698;
}

.tview2 move.nongame {
  font-style: italic;
}

.tview2 move:not(.empty):hover,
.tview2 move:not(.empty):hover index,
.tview2 move:not(.empty):hover eval {
  background: #3692e7;
  color: #fff;
}

.tview2 move.empty {
  color: #6b6b6b;
  cursor: default;
}

.tview2 move index {
  font-size: 90%;
  color: #999999;
}

.tview2 move.context-menu {
  background: #d64f00;
  color: #fff;
}

.tview2 move.context-menu index {
  color: #fff;
}

.tview2-column move index {
  padding-left: 5px;
}

.tview2-column move index:first-child {
  padding-left: 0;
}

.tview2-inline move index {
  padding-right: 0.2em;
  line-height: 111.11%;
}

.tview2 line move {
  color: #bababa;
}

.tview2-column > move {
  flex: 0 0 43.5%;
  display: flex;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column > index + move {
  border-right: #404040;
}

.tview2 eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: 0.8em;
  color: #999999;
}

.tview2 glyph {
  margin-left: 0.08em;
  vertical-align: bottom;
}

.tview2 .mofw-star {
  font-size: 0.75em;
  margin-left: 0.15em;
  vertical-align: middle;
  cursor: default;
}

.tview2 .mofw-star--complete {
  color: #4caf50;
}

.tview2 .mofw-star--draft {
  color: #e6b800;
}

.tview2 tick {
  font-size: 0.7em;
  color: #999999;
  margin-left: 0.3em;
  vertical-align: middle;
}

.tview2 shapes {
  font-size: 0.7em;
  margin-left: 0.4em;
  text-align: right;
  color: #629924;
}

.tview2 shapes::before {
  content: '';
}

.tview2-column > move glyph {
  flex: 0 1 auto;
  text-align: center;
  overflow: hidden;
  font-size: 0.82em;
}

.tview2-column > index {
  flex: 0 0 13%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
}

.tview2 > interrupt {
  font-size: 95%;
}

.tview2-column > interrupt {
  flex: 0 0 100%;
  background: #302e2c;
  border-top: 1px solid #404040;
  border-bottom: 1px solid #404040;
  max-width: 100%;
}

.tview2-column div.pgr {
  flex: 0 0 100%;
  display: flex;
  align-items: flex-start;
}

.tview2-column div.pgr > index {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
  align-self: stretch;
}

.tview2-column div.pgr > .pgr-sym {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  font-size: 1.1em;
}

.tview2-column div.pgr > .pgr-cnt {
  flex: 0 0 12%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  color: #6b6b6b;
  font-size: 0.85em;
}

.tview2-column div.pgr > move {
  flex: 1;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column div.pgr > move:hover {
  background: none !important;
  color: inherit !important;
}

.tview2-column div.pgr > move span {
  cursor: pointer;
  margin-right: 0.35em;
  padding: 0 2px;
  display: inline-block;
}

.tview2-column div.pgr > move span:hover {
  background: #3692e7;
  color: #fff;
}

.tview2-column div.pgr > move span.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-column div.pgr > move span.current {
  border: 1px solid #d64f00;
}

.tview2-column > interrupt > comment {
  display: block;
  padding: 3px 5px;
}

.tview2-inline comment {
  vertical-align: 45%;
  word-wrap: break-word;
  margin: 0 0.2em 0 0.1em;
  font-size: 0.9em;
}

.tview2 comment .by {
  display: inline-block;
  vertical-align: -0.3em;
  font-size: 0.9em;
  opacity: 0.8;
  margin-right: 0.4em;
  max-width: 9em;
}

.tview2-column comment.white {
  border-left: 3px solid;
}

.tview2-column comment.black {
  border-right: 3px solid;
  overflow-x: hidden;
}

.tview2-column comment.inaccuracy {
  border-color: #56b4e9;
}

.tview2-column comment.mistake {
  border-color: #e69f00;
}

.tview2-column comment.blunder {
  border-color: #df5353;
}

.tview2-column comment.undefined {
  border-color: #66558c;
}

.tview2 line comment {
  font-size: 90%;
}

.tview2-column line comment {
  display: inline;
  color: #999999;
  word-wrap: break-word;
  padding: 0 5px 0 3px;
  vertical-align: top;
}

.tview2 line comment .by {
  font-size: 1em;
  vertical-align: top;
}

.tview2 lines {
  display: block;
  margin-top: 2px;
  margin-left: 6px;
  margin-bottom: 0.8em;
  border-left: 2px solid #404040;
}

.tview2 > interrupt > lines {
  margin-left: 0px;
}

.tview2 lines.single {
  border-left: none;
}

.tview2 lines:last-child {
  margin-bottom: 0;
}

.tview2 line {
  display: block;
  padding-left: 7px;
}

.tview2-column line {
  margin: 2px 0;
}

.tview2 lines lines move {
  font-size: 13px;
}

.tview2 lines lines {
  margin-left: 1px;
}

.tview2 lines lines::before {
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  margin-left: -11px;
  width: 9px;
  height: 6px;
}

.tview2 lines line::before {
  margin-top: 0.65em;
  margin-left: -8px;
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  width: 8px;
  height: 6px;
}

.tview2 lines lines:last-child {
  margin-bottom: 0;
}

.tview2 inline {
  display: inline;
  font-style: italic;
  font-size: 0.9em;
  opacity: 0.8;
}

.tview2 inline::before,
.tview2 inline::after {
  vertical-align: 0.4em;
  opacity: 0.7;
  font-size: 0.9em;
}

.tview2 inline::before {
  content: '(';
  margin-left: 2px;
}

.tview2 inline::after {
  content: ')';
  margin-right: 2px;
}

.tview2-inline inline::before,
.tview2-inline inline::after {
  vertical-align: 0.7em;
}

.tview2 .conceal {
  opacity: 0.4;
}

.tview2 .hide {
  display: none;
}

.ceval {
  position: relative;
  display: flex;
  align-items: stretch;
}

.ceval.enabled {
  padding-top: 2px;
  height: 40px;
}

.ceval.enabled .show-threat {
  visibility: visible;
}

.ceval .switch {
  flex: 0 0 40px;
  margin-right: 8px;
}

.ceval pearl {
  flex: 0 0 75px;
  line-height: 38px;
  font-size: 1.6em;
  text-align: center;
  font-weight: bold;
}

.ceval help,
.ceval .engine {
  flex: 1 1 auto;
  font-size: 12px;
  line-height: 16px;
  margin-top: 3px;
  color: #999999;
}

.ceval .engine .cloud {
  margin-left: 4px;
  background: #4f7a1d;
  color: #fff;
  padding: 1px 3px;
  text-transform: uppercase;
  font-size: 11px;
}

.ceval .engine .info {
  display: block;
  white-space: nowrap;
}

.ceval .engine .deeper {
  color: #3692e7;
  margin-left: 4px;
}

.ceval .engine .deeper::before {
  vertical-align: -2px;
}

.ceval .technology {
  margin-left: 5px;
}

.ceval .technology.good {
  color: #629924;
}

.ceval .bar {
  position: absolute;
  width: 100%;
  height: 3px;
  top: 0px;
}

@keyframes bar-anim {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 100000px 0;
  }
}

.ceval .bar span {
  display: block;
  height: 3px;
  width: 0;
  background: #629924;
  transition: width 1s;
}

.ceval .bar span.threat {
  background: #cc3333;
}

.ceval.computing .bar span {
  background-image: url("../images/bar-highlight.png");
  animation: bar-anim 1000s linear infinite;
}

.ceval .show-threat {
  flex: 0 99 auto;
  line-height: 38px;
  color: #999999;
  font-size: 0.9em;
  padding-right: 0.5em;
  overflow: hidden;
  visibility: hidden;
}

.ceval .show-threat:hover:not(.hidden), .ceval .show-threat.active {
  color: #cc3333;
}

.ceval .show-threat.hidden {
  opacity: 0.3;
  cursor: default;
}

.pv_box {
  position: relative;
  background: #262421;
  font-size: 13px;
}

.pv_box .pv {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  line-height: 2em;
  border-top: 1px solid #404040;
  padding-right: 14px;
  min-height: 2em;
}

.pv_box .pv.pv--nowrap {
  display: block;
  flex-wrap: initial;
  height: 2em;
}

.pv_box .pv[data-uci]:hover {
  background: #323c22;
  cursor: pointer;
}

.pv_box .pv strong {
  display: inline-block;
  width: 34px;
  text-align: center;
}

.pv_box .pv span {
  margin-left: 4px;
}

.pv_box .pv[data-uci] .pv-san:hover {
  color: #3692e7;
}

.pv_box .pv .pv-wrap-toggle {
  position: absolute;
  top: 0;
  right: 0;
  padding: 0 4px;
  margin: 0;
  cursor: pointer;
}

.pv_box .pv .pv-wrap-toggle:hover {
  background: #629924;
  color: #fff;
}

.pv_box .pv .pv-wrap-toggle::before {
  content: '▲';
}

.pv_box .pv.pv--nowrap .pv-wrap-toggle {
  transform: rotate(180deg);
}

.pv_box .pv-board {
  position: absolute;
  width: 80%;
  left: 34px;
  max-width: 240px;
  z-index: 1;
}

main {
  --gauge-gap: 8px;
}

@media (min-width: 320px) {
  main {
    --gauge-gap: calc( 8px + 9 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  main {
    --gauge-gap: 17px;
  }
}

.eval-gauge {
  width: var(--gauge-gap);
  position: relative;
  background: #a0a0a0;
  overflow: hidden;
}

@media (max-width: 799px) and (orientation: portrait) {
  .eval-gauge {
    display: none;
  }
}

.eval-gauge.reverse {
  transform: rotateX(180deg);
}

.eval-gauge::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.7) inset;
}

.eval-gauge tick {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  border-bottom: 2px ridge #a0a0a0;
  opacity: 0.4;
}

.eval-gauge tick.zero {
  top: 6px;
  opacity: 1;
  border-bottom: 7px solid rgba(214, 79, 0, 0.4);
  margin-top: -3px;
}

.eval-gauge .black {
  width: 100%;
  height: 50%;
  background: #666;
  transition: height 1s;
}

.analyse-controls {
  display: flex;
  justify-content: space-between;
  align-items: stretch;
  font-size: 1.3rem;
}

.analyse-controls .fbt {
  text-align: center;
}

.analyse-controls .hidden {
  visibility: hidden;
}

.analyse-controls .jumps {
  display: flex;
}

.analyse-controls .jumps .fbt {
  flex: 1 1 30%;
}

.analyse-controls .jumps .fbt:first-child, .analyse-controls .jumps .fbt:last-child {
  flex: 1 1 20%;
  font-size: 0.7em;
}

#promotion-choice {
  background: rgba(22, 21, 18, 0.7);
  z-index: 205;
  position: absolute;
  width: var(--cg-width, 100%);
  height: var(--cg-height, 100%);
  right: 0;
}

#promotion-choice square {
  cursor: pointer;
  border-radius: 50%;
  background-color: #b0b0b0;
  box-shadow: inset 0 0 25px 3px #808080;
  transition: all 150ms;
}

#promotion-choice piece {
  pointer-events: auto;
  opacity: 1;
  /* cancels blindfold */
}

.is2d #promotion-choice piece {
  width: 100%;
  height: 100%;
  transition: all 150ms;
  transform: scale(0.8);
}

#promotion-choice square:hover {
  box-shadow: inset 0 0 48px 8px #d64f00;
  border-radius: 0%;
}

.is2d #promotion-choice square:hover piece {
  transform: none;
}

.blindfold.main-board piece,
.blindfold .now-playing piece {
  opacity: 0;
}

.blindfold.main-board .check {
  background-image: none;
}

#main-wrap {
  --main-max-width: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 5rem);
}

@media (min-width: 800px), (orientation: landscape) {
  #main-wrap {
    --main-max-width: auto;
  }
}

.puzzle {
  grid-area: main;
  display: grid;
  grid-template-areas: 'board' 'controls' 'tools' 'session' 'side';
  grid-row-gap: 2vmin;
}

.puzzle__side {
  grid-area: side;
}

.puzzle__board {
  grid-area: board;
}

.puzzle__tools {
  grid-area: tools;
}

.puzzle__controls {
  grid-area: controls;
}

.puzzle__session {
  grid-area: session;
  align-self: start;
}

.puzzle .eval-gauge {
  grid-area: gauge;
}

.puzzle__moves {
  display: none;
}

@media (min-width: 800px), (orientation: landscape) {
  .puzzle {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'board   gauge tools' 'session .     controls' 'side    side  side';
  }
  .puzzle__moves {
    display: block;
  }
}

@media (min-width: 1260px) {
  .puzzle {
    grid-template-areas: 'side    . board   gauge tools' 'side    . session .     controls' 'side    . .       .     .';
    grid-template-columns: minmax(230px, 20vw) 2vmin minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
  }
}

.puzzle__side {
  display: grid;
  grid-gap: 2vmin;
  grid-template-areas: 'user' 'theme' 'metas' 'config';
}

.puzzle-replay .puzzle__side {
  grid-template-areas: 'replay' 'user' 'theme' 'metas' 'config';
}

@media (min-width: 500px) {
  .puzzle__side {
    grid-template-columns: 1fr 1fr;
    grid-template-areas: 'metas user' 'metas theme' 'config theme' '. theme';
    grid-template-rows: min-content min-content min-content;
  }
  .puzzle-replay .puzzle__side {
    grid-template-areas: 'metas replay' 'metas user' 'config user' 'config theme';
  }
}

@media (min-width: 1260px) {
  .puzzle__side {
    grid-template-columns: 1fr;
    grid-template-areas: 'metas' 'user' 'theme' 'config';
    grid-template-rows: min-content min-content min-content;
    justify-self: end;
    min-width: 250px;
    max-width: 350px;
  }
  .puzzle-replay .puzzle__side {
    grid-template-areas: 'metas' 'replay' 'user' 'theme' 'config';
  }
}

.puzzle__side__metas {
  grid-area: metas;
}

.puzzle__side__user {
  grid-area: user;
}

.puzzle__side__config {
  grid-area: config;
}

.puzzle__side__theme {
  grid-area: theme;
}

.puzzle__side__replay {
  grid-area: replay;
}

.puzzle__side__metas {
  background: #262421;
  padding: 2vmin;
}

.puzzle__side__metas p {
  margin: 0;
}

.puzzle__side__metas .hidden {
  color: #6b6b6b;
}

.puzzle__side__metas .infos {
  overflow: hidden;
  white-space: nowrap;
}

.puzzle__side__metas .infos::before {
  font-size: 3rem;
  margin-right: 1vw;
}

.puzzle__side__metas .infos.puzzle {
  padding-bottom: 1.2vh;
  border-bottom: 1px solid #404040;
  margin-bottom: 1.2vh;
}

.puzzle__side__metas .infos .players {
  margin-top: 0.3rem;
  font-size: 90%;
}

.puzzle__side__weekly_puzzle_count {
  margin-top: 1.5rem;
}

.puzzle__side__user {
  background: #262421;
  padding: 2vmin;
}

.puzzle__side__user__rating strong {
  display: block;
  text-align: center;
  font-size: 3.5em;
}

.puzzle__side__user__rating__casual {
  font-size: 0.9em;
  margin-top: 1em;
}

.puzzle__side__user .rp {
  font-size: 1.3rem;
  margin-left: 1ch;
}

.puzzle__side__user .rp.up {
  color: #629924;
}

.puzzle__side__user .rp.down {
  color: #cc3333;
}

.puzzle__side__streak__info h1 {
  color: #bf811d;
  font-size: 2.2rem;
  margin-bottom: 1rem;
}

.puzzle__side__streak__info h1::before {
  font-size: 1.5em;
}

.puzzle__side__streak__score {
  color: #bf811d;
  justify-content: center;
  font-size: 4em;
}

.puzzle__side__streak__score::before {
  font-size: 0.9em;
}

.puzzle__side__config {
  align-self: start;
  background: #262421;
  padding: 2vmin;
  overflow: hidden;
}

.puzzle__side__config__toggle .switch {
  margin-right: 1em;
}

.puzzle__side__config__toggle label {
  cursor: pointer;
}

.puzzle__side__config__difficulty {
  margin-top: 2vmin;
}

.puzzle__side__config__difficulty label {
  margin-right: 1em;
}

.puzzle__side__config__difficulty select {
  border: none;
}

.puzzle__side__config__toggles {
  margin-top: 2vmin;
}

.puzzle__side__replay {
  background: #262421;
  padding: 2vmin;
}

.puzzle__side__replay a {
  font-size: 1.3em;
  margin-bottom: 1em;
  display: block;
}

.puzzle__side__replay__bar {
  position: relative;
  justify-content: center;
  padding: 0 1em;
  height: 2.5em;
  background: #3e3b38;
  font-weight: bold;
}

.puzzle__side__replay__bar::before {
  z-index: 0;
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: var(--p);
  background: #296092 linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, transparent 35%);
  animation: bar-glider-anim 3s linear infinite;
  transition: width 1s;
}

.puzzle__side__replay__bar::after {
  z-index: 1;
  content: attr(data-text);
}

.puzzle__side__theme {
  background: #262421;
  padding: 2vmin;
  font-size: 0.9em;
}

.puzzle__side__theme h2 {
  font-size: 1.5em;
  margin-bottom: 0.6rem;
  text-transform: uppercase;
}

.puzzle__themes {
  padding-top: 1.2vh;
  border-top: 1px solid #404040;
  margin-top: 1.2vh;
}

.puzzle__themes__list__entry {
  align-items: stretch;
  margin-left: -0.5rem;
}

.puzzle__themes__list__entry a {
  margin-left: 0.5rem;
  line-height: 2em;
}

.puzzle__themes__list__entry:hover {
  background: #282f35;
}

.puzzle__themes__list__entry.strike a {
  text-decoration: line-through;
}

.puzzle__themes__votes {
  flex: 0 1 7em;
  align-items: stretch;
  text-align: center;
}

.puzzle__themes__vote {
  justify-content: center;
  flex: 0 0 50%;
  cursor: pointer;
  color: #6b6b6b;
}

.puzzle__themes:hover .puzzle__themes__vote {
  color: #629924;
}

.puzzle__themes:hover .puzzle__themes__vote.vote-down {
  color: #cc3333;
}

.puzzle__themes__vote::before {
  content: '';
  font-size: 1.3em;
}

.puzzle__themes__vote.vote-down::before {
  transform: rotate(0.5turn);
}

.puzzle__themes__vote:hover, .puzzle__themes__vote.active {
  background: #629924;
  color: #fff !important;
}

.puzzle__themes__vote.vote-down:hover, .puzzle__themes__vote.vote-down.active {
  background: #cc3333;
}

.puzzle__themes__lock {
  justify-content: center;
  flex: 0 0 100%;
  color: #6b6b6b;
  opacity: 0.5;
}

.puzzle__themes__selector {
  margin: 1em 0;
}

.puzzle__themes__study {
  display: block;
}

.puzzle__tools {
  background: #262421;
}

.puzzle__tools .ceval-wrap {
  flex: 0 0 38px;
}

.puzzle__tools .ceval {
  height: 38px;
}

.puzzle__moves {
  flex: 2 1 auto;
  overflow: auto;
  border-bottom: 1px solid #404040;
  position: relative;
  /* required by line::before */
}

.puzzle__moves .tview2 > move {
  justify-content: space-between;
}

.puzzle__moves .tview2 > move glyph {
  font-size: 1.6em;
}

.puzzle__moves move.fail glyph {
  color: #cc3333;
}

.puzzle__moves move.good glyph,
.puzzle__moves move.win glyph {
  color: #629924;
}

.puzzle__moves move:hover glyph {
  color: #fff;
}

.puzzle__feedback {
  flex: 1 0 9rem;
  background: #262421;
  justify-content: center;
}

@media (min-width: 800px) and (min-height: 600px), (orientation: landscape) and (min-height: 600px) {
  .puzzle__feedback {
    flex: 1 0 17rem;
  }
}

.puzzle__feedback:not(.after) {
  padding: 2em;
}

.puzzle__feedback .player {
  display: flex;
  align-items: center;
}

.puzzle__feedback .no-square {
  flex: 0 0 64px;
  height: 64px;
  margin-right: 10px;
}

.is3d .puzzle__feedback div.no-square {
  height: 82px;
}

.puzzle__feedback piece {
  position: inherit;
  display: block;
  width: 100%;
  height: 100%;
}

.puzzle__feedback .icon {
  display: block;
  width: 64px;
  height: 64px;
  font-size: 50px;
  line-height: 64px;
  text-align: center;
}

.puzzle__feedback.good .icon,
.puzzle__feedback .win .icon {
  color: #629924;
}

.puzzle__feedback.fail .icon {
  color: #cc3333;
}

.puzzle__feedback .instruction > * {
  display: block;
}

.puzzle__feedback .instruction strong {
  font-size: 1.5em;
}

.puzzle__feedback .view_solution {
  margin-top: 1.5em;
  text-align: center;
  visibility: hidden;
  opacity: 0;
}

.puzzle__feedback .view_solution.show {
  visibility: visible;
  opacity: 0.8;
  transition: opacity 1.5s;
}

.puzzle__controls {
  height: 3rem;
  margin-top: -2vmin;
}

@media (max-width: 799px) and (orientation: portrait) {
  .puzzle__controls {
    height: 5rem;
  }
}

.puzzle__controls .jumps {
  flex: 1 1 auto;
}

.puzzle__controls .glowing {
  color: #e3e3e3;
}

.puzzle__feedback.after {
  flex-flow: row nowrap;
}

@media (min-width: 800px), (orientation: landscape) {
  .puzzle__feedback.after {
    flex-flow: column;
  }
}

.puzzle__feedback.after .continue {
  justify-content: center;
  font-size: 1.3em;
  background: #3692e7;
  color: #fff;
  text-transform: uppercase;
  padding: 2em;
}

.puzzle__feedback.after .continue:hover {
  background: #64abed;
}

.puzzle__feedback.after .continue i::before {
  font-size: 2.5em;
  margin-right: 10px;
}

.puzzle__feedback.after .complete {
  justify-content: center;
  flex: 1 1 50%;
  font-size: 1.3em;
  white-space: nowrap;
}

.puzzle__feedback.after .complete .game-over {
  letter-spacing: 0.5ch;
  border-bottom: 1px solid #404040;
  padding-bottom: 0.5em;
  margin-bottom: 0.5em;
}

.puzzle__feedback.after .puzzle__more {
  display: none;
  border-top: 1px solid #404040;
  padding: 1em 2em;
}

.puzzle__feedback.after .puzzle__more a {
  color: #bababa;
}

.puzzle__feedback.after .puzzle__more a:hover {
  color: #3692e7;
}

@media (min-width: 800px), (orientation: landscape) {
  .puzzle__feedback.after .puzzle__more {
    display: flex;
  }
}

.puzzle__vote {
  flex: 1 1 70%;
}

.puzzle__vote__help {
  margin: 0.5em 1em 0 0;
}

.puzzle__vote__help p {
  display: inline;
}

.puzzle__vote__help p:last-child {
  margin-left: 1ch;
}

@media (min-width: 800px), (orientation: landscape) {
  .puzzle__vote__help {
    display: block;
    margin: 0 1em;
  }
}

.puzzle__vote__buttons {
  opacity: 0.1;
  flex: 1 1 100%;
  align-items: stretch;
  text-align: center;
}

.puzzle__vote__buttons.enabled {
  opacity: 1;
  transition: opacity 0.5s;
}

.puzzle__vote .puzzle__diffvote-btn {
  justify-content: center;
  flex: 1 1 20%;
  cursor: pointer;
  font-size: 0.8em;
  font-weight: bold;
  padding: 0.5em 0.1em;
  border-radius: 3px;
  user-select: none;
  transition: background 0.15s, color 0.15s;
}

.puzzle__vote .puzzle__diffvote-btn.easiest {
  color: #629924;
}

.puzzle__vote .puzzle__diffvote-btn.easiest:hover, .puzzle__vote .puzzle__diffvote-btn.easiest.selected {
  background: #629924;
  color: #fff;
}

.puzzle__vote .puzzle__diffvote-btn.easier {
  color: #7e9222;
}

.puzzle__vote .puzzle__diffvote-btn.easier:hover, .puzzle__vote .puzzle__diffvote-btn.easier.selected {
  background: #7e9222;
  color: #fff;
}

.puzzle__vote .puzzle__diffvote-btn.normal {
  color: #999999;
}

.puzzle__vote .puzzle__diffvote-btn.normal:hover, .puzzle__vote .puzzle__diffvote-btn.normal.selected {
  background: #4d4d4d;
  color: #fff;
}

.puzzle__vote .puzzle__diffvote-btn.harder {
  color: #bf811d;
}

.puzzle__vote .puzzle__diffvote-btn.harder:hover, .puzzle__vote .puzzle__diffvote-btn.harder.selected {
  background: #bf811d;
  color: #fff;
}

.puzzle__vote .puzzle__diffvote-btn.hardest {
  color: #cc3333;
}

.puzzle__vote .puzzle__diffvote-btn.hardest:hover, .puzzle__vote .puzzle__diffvote-btn.hardest.selected {
  background: #cc3333;
  color: #fff;
}

.puzzle__vote-row {
  flex: 1 1 70%;
}

.puzzle__favorite-btn {
  justify-content: center;
  flex: 0 0 auto;
  font-size: 1.8em;
  cursor: pointer;
  padding: 0 0.4em;
  user-select: none;
  color: #999999;
  transition: color 0.15s, transform 0.15s;
}

.puzzle__favorite-btn:hover {
  color: #bf811d;
  transform: scale(1.2);
}

.puzzle__favorite-btn.active {
  color: #bf811d;
}

.puzzle__session {
  display: flex;
  flex-flow: row wrap-reverse;
  margin-top: -0.4em;
}

.puzzle__session a {
  flex: 0 0 2.3em;
  height: 1.6em;
  margin: 0.4em 0.5em 0 0;
  color: #fff;
  opacity: 0.85;
  font-size: 0.85em;
  font-weight: bold;
  justify-content: center;
}

.puzzle__session a.result-empty::before {
  content: '';
  font-size: 0.9em;
}

.puzzle__session a.result-true {
  background: #629924;
}

.puzzle__session a.result-false {
  background: #cc3333;
}

.puzzle__session a.result-false.result-empty::before {
  content: '';
}

.puzzle__session a.current {
  background: #bf811d;
}

.puzzle__session a.session-new {
  background: #3692e7;
}

.puzzle__session a:hover {
  opacity: 1;
}

.zen .puzzle__side, .zen .puzzle__controls, .zen .puzzle__session, .zen #friend_box,
.zen .site-title-nav,
.zen .site-buttons {
  display: none;
}

body.playing.zen #top {
  justify-content: center;
}

body.playing.zen .puzzle__moves.areplay {
  display: none;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHV6emxlL2Nzcy9idWlsZC9wdXp6bGUuZGFyay5jc3MiLCJzb3VyY2VzIjpbInB1enpsZS9jc3MvYnVpbGQvcHV6emxlLmRhcmsuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2Rhcmsuc2NzcyIsImNvbW1vbi9jc3MvdGhlbWUvX2RlZmF1bHQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2Z1bmN0aW9ucy5zY3NzIiwicHV6emxlL2Nzcy9idWlsZC9fcHV6emxlLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC1yZXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb2xvci1pY29uLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fZmJ0LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fZ2xvd2luZy5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX3plbi10b2dnbGUuc2NzcyIsImNvbW1vbi9jc3MvZm9ybS9fY21uLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19zY3JvbGxiYXIuc2NzcyIsInRyZWUvY3NzL190cmVlLnNjc3MiLCJ0cmVlL2Nzcy9fZXh0ZW5kLnNjc3MiLCJjZXZhbC9jc3MvX2NldmFsLnNjc3MiLCJjZXZhbC9jc3MvX2N0cmwuc2NzcyIsImNldmFsL2Nzcy9fcHYuc2NzcyIsImNldmFsL2Nzcy9fZXZhbC1nYXVnZS5zY3NzIiwiY2hlc3MvY3NzL19jb250cm9sLnNjc3MiLCJjaGVzcy9jc3MvX3Byb21vdGlvbi5zY3NzIiwiY2hlc3MvY3NzL19ibGluZGZvbGQuc2NzcyIsInB1enpsZS9jc3MvX3B1enpsZS5zY3NzIiwicHV6emxlL2Nzcy9fbGF5b3V0LnNjc3MiLCJwdXp6bGUvY3NzL19zaWRlLnNjc3MiLCJwdXp6bGUvY3NzL190b29scy5zY3NzIiwicHV6emxlL2Nzcy9fYWZ0ZXIuc2NzcyIsInB1enpsZS9jc3MvX3Nlc3Npb24uc2NzcyIsInB1enpsZS9jc3MvX3plbi5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvZGFyayc7XG5AaW1wb3J0ICdwdXp6bGUnO1xuIiwiQGltcG9ydCAnZGVmYXVsdCc7XG5cbiR0aGVtZTogJ2RhcmsnO1xuJGNvbG9yLXNjaGVtZTogJ2RhcmsnO1xuJHRoZW1lLWxpZ2h0OiBmYWxzZTtcbiR0aGVtZS1kYXJrOiB0cnVlO1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOCUpO1xuJGMtYmctaGlnaDogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMTQlKTtcbiRjLWJnLWxvdzogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIlKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE4JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIzJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCAxNiUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDczJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA2MCUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNDIlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCA4OSUpO1xuJGMtc2hhZGU6IGMtbGlnaHQoJGMtZm9udCwgMzAlKTtcbiRjLWZvbnQtcGFnZTogJGMtZm9udC1kaW07XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc5JSwgNTYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5LCAxNSUpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQzJSk7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjIlLCA0OCUpO1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAyNSUpO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCAxMyUpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctbG93O1xuJGMtcG9wdXA6ICRjLWZvbnQtY2xlYXI7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1ib3g7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCAyNSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgMjIlKTtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbiRjLWZvbnQtc2hhZG93OiBibGFjaztcbiR0ZXh0LXNoYWRvdzogbm9uZTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOSkgMTAwJSk7XG59XG5cbkBtaXhpbiBtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyNSksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIyKSAxMDAlKTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZSB7XG59XG4iLCJAaW1wb3J0ICcuLi9hYnN0cmFjdC9mdW5jdGlvbnMnO1xuXG4vKiBDb2xvcnMgKi9cblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtc2l0ZS1odWU6IDM3O1xuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOTIlKTtcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc3JSwgNDYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHByaW1hcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcbiRjLXNlY29uZGFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgc2Vjb25kYXJ5IGJhY2tncm91bmQgKi9cblxuLyogQWNjZW50OiBvcmFuZ2UgKi9cbiRjLWFjY2VudDogaHNsKDIyLCAxMDAlLCA0MiUpO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogSGVhcnQ6IHJlZCAqL1xuJGMtaGVhcnQ6ICRjLWVycm9yO1xuJGMtaGVhcnQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoJyN7JGltZy1wYXRofS8jeyRwYXRofScpO1xufVxuIiwiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW4nO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvY29vcmRzJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvbGF5b3V0L3VuaWJvYXJkJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2JvYXJkLXJlc2l6ZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2ZidCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9nbG93aW5nJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3plbi10b2dnbGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9mb3JtL2Ntbi10b2dnbGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhcic7XG5AaW1wb3J0ICcuLi8uLi8uLi90cmVlL2Nzcy90cmVlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NldmFsL2Nzcy9jZXZhbCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jZXZhbC9jc3MvZXZhbC1nYXVnZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGVzcy9jc3MvY29udHJvbCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGVzcy9jc3MvcHJvbW90aW9uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy9ibGluZGZvbGQnO1xuXG5AaW1wb3J0ICcuLi9wdXp6bGUnO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0ICcuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQnO1xuXG5AaW1wb3J0ICdhYnN0cmFjdC9hbGwnO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0ICdmdW5jdGlvbnMnO1xuQGltcG9ydCAnei1pbmRleCc7XG5AaW1wb3J0ICdtZWRpYS1xdWVyaWVzJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1bmlib2FyZCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAnZXh0ZW5kcyc7XG5AaW1wb3J0ICdmbGV4JztcbkBpbXBvcnQgJ2JveCc7XG5AaW1wb3J0ICdmbHVpZC1zaXplJztcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXG4gICdjZ19fcHJvbW90aW9uJzogMjA1LFxuICAnY2dfX3BpZWNlLmRyYWdnaW5nJzogMjA0LFxuICAnY2dfX2JvYXJkLm92ZXJsYXknOiAxMDAsXG4gICdjZ19fcGllY2UuYW5pbSc6IDMsXG4gICdjZ19fc3ZnLmNnLXNoYXBlcyc6IDIsXG4gICdjZ19fc3ZnLmNnLWN1c3RvbS1zdmdzJzogNCxcbiAgJ2NnX19waWVjZSc6IDIsXG4gICdjZ19fcGllY2UuZmFkaW5nJzogMSxcbiAgJ3Bvd2VydGlwJzogMTIwLFxuICAnY29tcGxldGUnOiAxMTIsXG4gICdpbnF1aXJ5JzogMTExLFxuICAnemVuLXRvZ2dsZSc6IDExMCxcbiAgJ21vZGFsJzogMTEwLFxuICAnbXNlbGVjdCc6IDExMCxcbiAgJ3RvcG5hdic6IDExMCxcbiAgJ2Z1bGxzY3JlZW4tbWFzayc6IDEwOSxcbiAgJ2Ryb3Bkb3duJzogMTA4LFxuICAnY29udGV4dC1tZW51JzogMTA3LFxuICAnc2l0ZS1oZWFkZXInOiAxMDYsXG4gICdyZWNvbm5lY3RpbmcnOiAxMDUsXG4gICd0b3VyLXJlbWluZGVyJzogMTA0LFxuICAnbXotbWVudSc6IDQsXG4gICdhYm92ZS1saW5rLW92ZXJsYXknOiAzLFxuICAnZnJpZW5kLWJveCc6IDIsXG4gICdsaW5rLW92ZXJsYXknOiAyLFxuICAnZ2FtZS1ib29rbWFyayc6IDIsXG4gICdzdWJuYXYtc2lkZSc6IDIsXG4gICdkZWZhdWx0JzogMCxcbik7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QtbGFyZ2U6IG1heC13aWR0aCAxMTE5cHg7XG4kbXEtbm90LXgtbGFyZ2U6IG1heC13aWR0aCAxMjU5cHg7XG5cbi8qIEhlaWdodHMgKi9cblxuJG1xLXgtc2hvcnQ6IG1pbi1oZWlnaHQgNDAwcHg7XG4kbXEtc2hvcnQ6IG1pbi1oZWlnaHQgNTAwcHg7XG4kbXEtdGFsbDogbWluLWhlaWdodCA2MDBweDtcbiRtcS14LXRhbGw6IG1pbi1oZWlnaHQgNzAwcHg7XG5cbiRtcS1ub3QteC1zaG9ydDogbWF4LWhlaWdodCAzOTlweDtcblxuLyogT3JpZW50YXRpb25zICovXG5cbiRtcS1wb3J0cmFpdDogb3JpZW50YXRpb24gcG9ydHJhaXQ7XG4kbXEtbGFuZHNjYXBlOiBvcmllbnRhdGlvbiBsYW5kc2NhcGU7XG5cbi8qIENhcGFiaWxpdGllcyAqL1xuXG4kbXEtaG92ZXIteWVzOiAnaG92ZXI6IGhvdmVyJztcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiAnLi4vZm9udCc7XG4kaW1nLXBhdGg6ICcuLi9pbWFnZXMnO1xuXG4kdmlld3BvcnQtbWluLXdpZHRoOiAzMjBweDtcblxuJGJsb2NrLWdhcDogMnZtaW47XG4kYmxvY2stZ2FwLWhhbGY6IDF2bWluO1xuXG4kYmxvY2stZ2FwLWg6IDJ2aDtcbiRibG9jay1nYXAtdzogMnZ3O1xuJGJsb2NrLWdhcC13LWhhbGY6IDF2dztcblxuJGJveC1yYWRpdXMtc2l6ZTogM3B4O1xuXG4kc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQ6IDYwcHg7XG4kc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0OiA0MHB4O1xuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG5cbiRtYWluLW1heC13aWR0aDogMTMwMHB4ICFkZWZhdWx0O1xuXG4kbWFpbi1tYXJnaW46IHZhcigtLW1haW4tbWFyZ2luKTtcbiRzaXRlLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7XG5cbiRzaXRlLWhlYWRlci1tYXJnaW46IHZhcigtLXNpdGUtaGVhZGVyLW1hcmdpbik7XG5cbiRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHQ6IGNhbGMoI3skc2l0ZS1oZWFkZXItaGVpZ2h0fSArICN7JHNpdGUtaGVhZGVyLW1hcmdpbn0pO1xuIiwiLyogVW5pYm9hcmQ6IGtlZXAgdGhlIHNhbWUgcGFnZSBsYXlvdXQgYWNyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYyhcbiAgMTAwdmggKiAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGV9IC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9XG4pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiA1cmVtO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6bm90KDpob3Zlcikge1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cblxuICBkcmF3IHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCBibGFjayAhaW1wb3J0YW50O1xufVxuXG4lYWN0aXZlLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbWl4KHdoaXRlLCAkYy1hY2NlbnQsIDIwJSk7XG59XG5cbiVhY3RpdmUtc29mdCB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAkYy1mb250LXNoYWRvdyAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuJWRyb3Bkb3duLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IC0xcHggNXB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbiVwb3B1cC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xufVxuXG4lYnV0dG9uLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIGhzbGEoMCwgMCwgMCUsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1yYWlzZWQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCAwcHggaHNsYSgwLCAwLCAwLCAwLjIyNSk7XG59XG5cbiVidXR0b24tbm9uZSB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgY29sb3I6ICRjLWZvbnQ7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG59XG5cbiVjaGVja2JveCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1iZy1sb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltbWVyO1xuICAgIGJvcmRlci1jb2xvcjogJGMtc2Vjb25kYXJ5LWRpbTtcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiV6YWxnb3ZlcmZsb3cge1xuICAvLyBtaXRpZ2F0ZSB6YWxnbyB0ZXh0XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVnYW1lLWVtYmVkIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgcGFkZGluZy1ib3R0b206IDE2MCU7XG4gIH1cbn1cblxuJWRhdGEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KCdmdWxsc2NyZWVuLW1hc2snKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KCdsaW5rLW92ZXJsYXknKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbiVkb3VibGUtdGFwIHtcbiAgLy8gcHJldmVudCBpUGFkIHNhZmFyaSBmcm9tIHpvb21pbmcgaW4gb24gZG91YmxlIHRhcFxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoXG4gICAgICAgICAgI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICpcbiAgICAgICAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsImNvb3JkcyB7XG4gIC8qIGhhbmRsZSBoaWRkZW4gY29vcmRzICovXG4gIC5jb29yZHMtbm8gJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8qIGhhbmRsZSBpbm5lciBjb29yZHMgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICBAaW5jbHVkZSBmbHVpZC1zaXplKCdmb250LXNpemUnLCA4cHgsIDEycHgpO1xuXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCAjMDAwO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICAmLnJhbmtzIHtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbi1yZXZlcnNlO1xuICAgIHRvcDogMXB4O1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgLy8gYSBuZWdhdGl2ZSB2YWx1ZSBjcmVhdGVzIGVtcHR5IHNwYWNlIG9uIHRoZSByaWdodCBzaWRlIGluIG1vYmlsZSBicm93c2Vyc1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMC44ZW07XG5cbiAgICAmLmJsYWNrIHtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gICYuZmlsZXMge1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmbGV4LWZsb3c6IHJvdztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEuNGVtO1xuXG4gICAgJi5ibGFjayB7XG4gICAgICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICAgIH1cblxuICAgIGNvb3JkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIH1cbiAgfVxuXG4gIGNvb3JkIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC8qIG5lZ2F0ZSBpbm5lciBjb29yZHMgY29sb3JzICovXG4gIC5pczNkIC5jZy13cmFwIGNvb3JkcyBjb29yZCB7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4ICMwMDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pczNkIC5jZy13cmFwIGNvb3Jkcy5maWxlcyB7XG4gICAgYm90dG9tOiBjYWxjKDFweCAtIDIuNSUpO1xuXG4gICAgY29vcmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7XG4gICAgfVxuICB9XG59XG5cbkBpbXBvcnQgJ2Nvb3Jkcy1jb2xvcnMnO1xuXG4vKiBoYW5kbGUgb3V0ZXIgY29vcmRzICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkKSB7XG4gIC5jb29yZHMtb3V0IGNvb3JkcyB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG5cbiAgICAmLnJhbmtzIHtcbiAgICAgIHJpZ2h0OiAtMTVweDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMnB4O1xuXG4gICAgICBjb29yZCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MiUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmlsZXMge1xuICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLmNvb3Jkcy1vdXQgY29vcmRzLnJhbmtzLFxuICAuY29vcmRzLW91dCAuaXMyZCBjb29yZHMuZmlsZXMge1xuICAgIGNvb3JkIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2UgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIiRjb29yZC1jb2xvci1kZWZhdWx0OiAjZmZmO1xuJGNvb3JkLXNoYWRvdy1kZWZhdWx0OiAwIDFweCAycHggIzAwMDtcblxuY29vcmRzIHtcbiAgdGV4dC1zaGFkb3c6IHZhcigtLWNnLWNzLCAkY29vcmQtc2hhZG93LWRlZmF1bHQpO1xufVxuXG4ub3JpZW50YXRpb24td2hpdGUgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpLFxuLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSB7XG4gIGNvbG9yOiB2YXIoLS1jZy1jY3csICRjb29yZC1jb2xvci1kZWZhdWx0KTtcbn1cblxuLm9yaWVudGF0aW9uLXdoaXRlIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSxcbi5vcmllbnRhdGlvbi1ibGFjayAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSksXG4ub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybikge1xuICBjb2xvcjogdmFyKC0tY2ctY2NiLCAkY29vcmQtY29sb3ItZGVmYXVsdCk7XG59XG4iLCJib2R5IHtcbiAgLS1ib2FyZC1zY2FsZTogMTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAvLyAtLXpvb206IDgwOyBkZWZpbmVkIGluIHRoZSBIVE1MLCBsb2FkZWQgZnJvbSBzZXJ2ZXJcbiAgICAtLWJvYXJkLXNjYWxlOiBjYWxjKCh2YXIoLS16b29tKSAvIDEwMCkgKiAwLjcgKyAwLjMpO1xuICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgYm9keSB7XG4gICAgLS1jb2wxOiAxO1xuICB9XG5cbiAgLm1haW4tYm9hcmQgY2ctYm9hcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbn1cbiIsImJvZHkucmVzaXppbmcge1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuY2ctcmVzaXplIHtcbiAgJHJlc2l6ZS13aWR0aDogMjJweDtcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWJvYXJkLXJlc2l6YWJsZSkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogI3sxM3B4IC0gJHJlc2l6ZS13aWR0aH07XG4gICAgYm90dG9tOiAjezEzcHggLSAkcmVzaXplLXdpZHRofTtcbiAgICB3aWR0aDogJHJlc2l6ZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRyZXNpemUtd2lkdGg7XG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbiAgICB6LWluZGV4OiAxMDtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB3aWR0aDogNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoN3B4LCA4cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDFweCwgNnB4KSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWFjY2VudCwgMC41KTtcbiAgICB9XG5cbiAgICAucmVzaXppbmcgJiB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1zZWNvbmRhcnksIDAuNSk7XG4gICAgfVxuICB9XG59XG4iLCIuY29sb3ItaWNvbiB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cbiAgfVxuXG4gICYucmFuZG9tOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugZ8nO1xuICB9XG59XG4iLCIuZmJ0IHtcbiAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG5cbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpob3Zlcjpub3QoLmRpc2FibGVkKTpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA3NSUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJltkaXNhYmxlZF0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgZ2xvd2luZyB7XG4gIDQyJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMjAlKTtcbiAgfVxuXG4gIDU4JSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4uZ2xvd2luZyB7XG4gIGFuaW1hdGlvbjogZ2xvd2luZyAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbiIsIiN6ZW50b2cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcbiAgb3BhY2l0eTogMC41O1xuICB6LWluZGV4OiB6KCd6ZW4tdG9nZ2xlJyk7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xuXG4gIGJvZHkucGxheWluZy56ZW4gJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICBwYWRkaW5nOiAxcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgei1pbmRleDogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDIuNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iYWQ7XG59XG5cbi5jbW4tdG9nZ2xlLS1zdWJ0bGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtZm9udC1kaW1tZXI7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmRpc2FibGVkICsgbGFiZWwge1xuICBvcGFjaXR5OiA2MCU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXM6bm90KDpkaXNhYmxlZCkgKyBsYWJlbCB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbn1cblxuLmNtbi10b2dnbGU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICArIGxhYmVsIHtcbiAgICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiBtYXJnaW4gJHRyYW5zaXRpb24tZHVyYXRpb24sIGNvbG9yICR0cmFuc2l0aW9uLWR1cmF0aW9uO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xuICAgIH1cbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL8nO1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6AuCc7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cbn1cbiIsImJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IDAuNXJlbTtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRjLWZvbnQtZGltbWVyO1xufVxuIiwiQGltcG9ydCAnZXh0ZW5kJztcblxuJGMtaW5hY2N1cmFjeTogIzU2YjRlOTtcbiRjLW1pc3Rha2U6ICNlNjlmMDA7XG4kYy1ibHVuZGVyOiAjZGY1MzUzO1xuXG4udHZpZXcyIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcblxuICAmLWNvbHVtbiB7XG4gICAgQGV4dGVuZCAlZmxleC13cmFwO1xuICB9XG5cbiAgJi1pbmxpbmUge1xuICAgIHBhZGRpbmc6IDdweCAzcHggN3B4IDdweDtcbiAgfVxuXG4gIG1vdmUge1xuICAgIEBleHRlbmQgJW1vdmU7XG5cbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICAmLmluYWNjdXJhY3kge1xuICAgICAgY29sb3I6ICRjLWluYWNjdXJhY3k7XG4gICAgfVxuICAgICYubWlzdGFrZSB7XG4gICAgICBjb2xvcjogJGMtbWlzdGFrZTtcbiAgICB9XG4gICAgJi5ibHVuZGVyIHtcbiAgICAgIGNvbG9yOiAkYy1ibHVuZGVyO1xuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uIG1vdmUge1xuICAgIGZvbnQtc2l6ZTogMS4wOTJlbTtcbiAgICBwYWRkaW5nOiAwIDJweDtcbiAgfVxuXG4gICYtaW5saW5lIG1vdmUge1xuICAgIHBhZGRpbmc6IDAuMjVlbSAwLjE3ZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIG1vdmUucGFyZW50IHtcbiAgICBjb2xvcjogJGMtcHJpbWFyeTtcbiAgfVxuXG4gIGNvbW1lbnQgYSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIG1vdmUuY3VycmVudCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtYWNjZW50O1xuICB9XG5cbiAgbW92ZS5hY3RpdmUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDI1JSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gIH1cblxuICAmLWlubGluZSBtb3ZlLmFjdGl2ZSxcbiAgbGluZSBtb3ZlLmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDYwJSk7XG4gIH1cblxuICBtb3ZlLm5vbmdhbWUge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gIG1vdmU6bm90KC5lbXB0eSk6aG92ZXIge1xuICAgICYsXG4gICAgaW5kZXgsXG4gICAgZXZhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLWlubGluZSBtb3ZlOmhvdmVyIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuICB9XG5cbiAgbW92ZS5lbXB0eSB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gIG1vdmUgaW5kZXgge1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIG1vdmUuY29udGV4dC1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgY29sb3I6ICRjLWFjY2VudC1vdmVyO1xuXG4gICAgaW5kZXgge1xuICAgICAgY29sb3I6ICRjLWFjY2VudC1vdmVyO1xuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uIG1vdmUgaW5kZXgge1xuICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICB9XG5cbiAgJi1jb2x1bW4gbW92ZSBpbmRleDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgJi1pbmxpbmUgbW92ZSBpbmRleCB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yZW07XG4gICAgbGluZS1oZWlnaHQ6IDExMS4xMSU7XG4gIH1cblxuICBsaW5lIG1vdmUge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICB9XG5cbiAgJi1jb2x1bW4gPiBtb3ZlIHtcbiAgICBmbGV4OiAwIDAgNDMuNSU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmb250LXNpemU6IDEuMTg1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNzVlbTtcbiAgICBwYWRkaW5nOiAwIDAuM2VtIDAgMC41ZW07XG4gIH1cblxuICAmLWNvbHVtbiA+IGluZGV4ICsgbW92ZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYy1ib3JkZXI7XG4gIH1cblxuICBldmFsIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmbGV4OiAzIDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIGdseXBoIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgICBtYXJnaW4tbGVmdDogMC4wOGVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxuICAubW9mdy1zdGFyIHtcbiAgICBmb250LXNpemU6IDAuNzVlbTtcbiAgICBtYXJnaW4tbGVmdDogMC4xNWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgJi0tY29tcGxldGUge1xuICAgICAgY29sb3I6ICM0Y2FmNTA7IC8vIGdyZWVuIOKAlCBjb21wbGV0ZSBub21pbmF0aW9uXG4gICAgfVxuXG4gICAgJi0tZHJhZnQge1xuICAgICAgY29sb3I6ICNlNmI4MDA7IC8vIHllbGxvdyDigJQgZHJhZnQvaW5jb21wbGV0ZSBub21pbmF0aW9uXG4gICAgfVxuICB9XG5cbiAgdGljayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cblxuICBzaGFwZXMge1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuNGVtO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG4gIH1cblxuICAmLWNvbHVtbiA+IG1vdmUgZ2x5cGgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZvbnQtc2l6ZTogMC44MmVtO1xuICB9XG5cbiAgJi1jb2x1bW4gPiBpbmRleCB7XG4gICAgZmxleDogMCAwIDEzJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yaWdodDogJGJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxuXG4gID4gaW50ZXJydXB0IHtcbiAgICBmb250LXNpemU6IDk1JTtcbiAgfVxuXG4gICYtY29sdW1uID4gaW50ZXJydXB0IHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gU2NvdHRpc2ggUHJvZ3Jlc3NpdmUgQ2hlc3M6IG9uZSBzZXJpZXMgcGVyIHJvdyDigJQgaW5kZXggfCBwYXduIHwgY291bnQgfCBtb3Zlc1xuICAmLWNvbHVtbiBkaXYucGdyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgPiBpbmRleCB7XG4gICAgICBmbGV4OiAwIDAgMTAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICB9XG5cbiAgICA+IC5wZ3Itc3ltIHtcbiAgICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICB9XG5cbiAgICA+IC5wZ3ItY250IHtcbiAgICAgIGZsZXg6IDAgMCAxMiU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgfVxuXG4gICAgPiBtb3ZlIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBmb250LXNpemU6IDEuMTg1ZW07XG4gICAgICBsaW5lLWhlaWdodDogMS43NWVtO1xuICAgICAgcGFkZGluZzogMCAwLjNlbSAwIDAuNWVtO1xuICAgICAgLy8gT3ZlcnJpZGUgbm9ybWFsIG1vdmUtbGV2ZWwgaG92ZXIg4oCUIGluZGl2aWR1YWwgc3BhbnMgaGFuZGxlIHRoZWlyIG93biBob3ZlclxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgc3BhbiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjM1ZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDI1JSk7XG4gICAgICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWFjY2VudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uID4gaW50ZXJydXB0ID4gY29tbWVudCB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gIH1cblxuICAmLWlubGluZSBjb21tZW50IHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogNDUlO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBtYXJnaW46IDAgMC4yZW0gMCAwLjFlbTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG5cbiAgY29tbWVudCAuYnkge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcywgJXJvYm90bztcblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuM2VtO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgb3BhY2l0eTogMC44O1xuICAgIG1hcmdpbi1yaWdodDogMC40ZW07XG4gICAgbWF4LXdpZHRoOiA5ZW07XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LndoaXRlIHtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5ibGFjayB7XG4gICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQ7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5pbmFjY3VyYWN5IHtcbiAgICBib3JkZXItY29sb3I6ICRjLWluYWNjdXJhY3k7XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50Lm1pc3Rha2Uge1xuICAgIGJvcmRlci1jb2xvcjogJGMtbWlzdGFrZTtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQuYmx1bmRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1ibHVuZGVyO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC51bmRlZmluZWQge1xuICAgIGJvcmRlci1jb2xvcjogIzY2NTU4YztcbiAgfVxuXG4gIGxpbmUgY29tbWVudCB7XG4gICAgZm9udC1zaXplOiA5MCU7XG4gIH1cblxuICAmLWNvbHVtbiBsaW5lIGNvbW1lbnQge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgM3B4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICBsaW5lIGNvbW1lbnQgLmJ5IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgbGluZXMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDAuOGVtO1xuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJGMtYm9yZGVyO1xuICB9XG5cbiAgPiBpbnRlcnJ1cHQgPiBsaW5lcyB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgfVxuXG4gIGxpbmVzLnNpbmdsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIH1cblxuICBsaW5lczpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgbGluZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAmLWNvbHVtbiBsaW5lIHtcbiAgICBtYXJnaW46IDJweCAwO1xuICB9XG5cbiAgbGluZXMgbGluZXMgbW92ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICB9XG5cbiAgbGluZXMgbGluZXMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIH1cblxuICBsaW5lcyBsaW5lczo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnICc7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMXB4O1xuICAgIHdpZHRoOiA5cHg7XG4gICAgaGVpZ2h0OiA2cHg7XG4gIH1cblxuICBsaW5lcyBsaW5lOjpiZWZvcmUge1xuICAgIG1hcmdpbi10b3A6IDAuNjVlbTtcbiAgICBtYXJnaW4tbGVmdDogLThweDtcbiAgICBjb250ZW50OiAnICc7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDZweDtcbiAgfVxuXG4gIGxpbmVzIGxpbmVzOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICBpbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICBpbmxpbmU6OmJlZm9yZSxcbiAgaW5saW5lOjphZnRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IDAuNGVtO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG5cbiAgaW5saW5lOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcoJztcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG5cbiAgaW5saW5lOjphZnRlciB7XG4gICAgY29udGVudDogJyknO1xuICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICB9XG5cbiAgJi1pbmxpbmUgaW5saW5lOjpiZWZvcmUsXG4gICYtaW5saW5lIGlubGluZTo6YWZ0ZXIge1xuICAgIHZlcnRpY2FsLWFsaWduOiAwLjdlbTtcbiAgfVxuXG4gIC5jb25jZWFsIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cblxuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiJW1vdmUge1xuICBAZXh0ZW5kICVzYW4sICVub3dyYXAtaGlkZGVuO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuIiwiQGltcG9ydCAnY3RybCc7XG5AaW1wb3J0ICdwdic7XG4iLCIuY2V2YWwge1xuICBAZXh0ZW5kICVtZXRhbC1iZztcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG4gICYuZW5hYmxlZCB7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICAuc2hvdy10aHJlYXQge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG4gIH1cblxuICAuc3dpdGNoIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGZsZXg6IDAgMCA0MHB4O1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICB9XG5cbiAgcGVhcmwge1xuICAgIGZsZXg6IDAgMCA3NXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzOHB4O1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgaGVscCxcbiAgLmVuZ2luZSB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbjtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgLmVuZ2luZSB7XG4gICAgLmNsb3VkIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bywgJWJveC1yYWRpdXM7XG5cbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltO1xuICAgICAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyO1xuICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgfVxuXG4gICAgLmluZm8ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5kZWVwZXIge1xuICAgICAgY29sb3I6ICRjLXByaW1hcnk7XG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIH1cblxuICAgIC5kZWVwZXI6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDtcbiAgICB9XG4gIH1cblxuICAudGVjaG5vbG9neSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAmLmdvb2Qge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgfVxuICB9XG5cbiAgLmJhciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHRvcDogMHB4O1xuICB9XG5cbiAgQGtleWZyYW1lcyBiYXItYW5pbSB7XG4gICAgZnJvbSB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwMDAwcHggMDtcbiAgICB9XG4gIH1cblxuICAuYmFyIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHdpZHRoOiAwO1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMXM7XG5cbiAgICAmLnRocmVhdCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuICB9XG5cbiAgJi5jb21wdXRpbmcgLmJhciBzcGFuIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCdiYXItaGlnaGxpZ2h0LnBuZycpO1xuICAgIGFuaW1hdGlvbjogYmFyLWFuaW0gMTAwMHMgbGluZWFyIGluZmluaXRlO1xuICB9XG5cbiAgLnNob3ctdGhyZWF0IHtcbiAgICBmbGV4OiAwIDk5IGF1dG87XG4gICAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgcGFkZGluZy1yaWdodDogMC41ZW07XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyOm5vdCguaGlkZGVuKSxcbiAgICAmLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtcmVkO1xuICAgIH1cblxuICAgICYuaGlkZGVuIHtcbiAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cbiIsIi5wdl9ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgZm9udC1zaXplOiAxM3B4O1xuXG4gIC5wdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNHB4O1xuICAgIG1pbi1oZWlnaHQ6IDJlbTtcblxuICAgICYucHYtLW5vd3JhcCB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgLy8gXCJmbGV4XCIgZG9lc24ndCBzdXBwb3J0IGVsbGlwc2lzIHNvIHN3aXRjaCBiYWNrIHRvIFwiYmxvY2tcIlxuICAgICAgZmxleC13cmFwOiBpbml0aWFsO1xuICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJltkYXRhLXVjaV06aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMzRweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJXNhbjtcblxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICB9XG5cbiAgICAmW2RhdGEtdWNpXSAucHYtc2FuOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5O1xuICAgIH1cblxuICAgIC5wdi13cmFwLXRvZ2dsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICB9XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAn4payJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnB2LS1ub3dyYXAgLnB2LXdyYXAtdG9nZ2xlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgfVxuICB9XG5cbiAgLnB2LWJvYXJkIHtcbiAgICBAZXh0ZW5kICVwb3B1cC1zaGFkb3c7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgbGVmdDogMzRweDtcbiAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAucHYtYm9hcmQtc3F1YXJlIHtcbiAgICAgIEBleHRlbmQgJXNxdWFyZTtcblxuICAgICAgLmNnLXdyYXAge1xuICAgICAgICBAZXh0ZW5kICVhYnMtMTAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwibWFpbiB7XG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJy0tZ2F1Z2UtZ2FwJywgOHB4LCAxN3B4KTtcbn1cblxuLmV2YWwtZ2F1Z2Uge1xuICB3aWR0aDogdmFyKC0tZ2F1Z2UtZ2FwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICNmZmYsICNhMGEwYTApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi5yZXZlcnNlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjcpIGluc2V0O1xuICB9XG5cbiAgdGljayB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDJweCByaWRnZSBpZigkdGhlbWUtbGlnaHQsICNlZWUsICNhMGEwYTApO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIHRpY2suemVybyB7XG4gICAgdG9wOiA2cHg7XG4gICAgb3BhY2l0eTogMTtcbiAgICBib3JkZXItYm90dG9tOiA3cHggc29saWQgZmFkZS1vdXQoJGMtYWNjZW50LCAwLjYpO1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gIH1cblxuICAuYmxhY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTAlO1xuICAgIGJhY2tncm91bmQ6IGlmKCR0aGVtZS1saWdodCwgIzg4OCwgIzY2Nik7XG4gICAgdHJhbnNpdGlvbjogaGVpZ2h0IDFzO1xuICB9XG59XG4iLCIuYW5hbHlzZS1jb250cm9scyB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuXG4gIC5mYnQge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmhpZGRlbiB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLmp1bXBzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLmZidCB7XG4gICAgICBmbGV4OiAxIDEgMzAlO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkLFxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgZmxleDogMSAxIDIwJTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIiNwcm9tb3Rpb24tY2hvaWNlIHtcbiAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctcGFnZSwgMC4zKTtcbiAgei1pbmRleDogeignY2dfX3Byb21vdGlvbicpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IHZhcigtLWNnLXdpZHRoLCAxMDAlKTtcbiAgaGVpZ2h0OiB2YXIoLS1jZy1oZWlnaHQsIDEwMCUpO1xuICByaWdodDogMDtcblxuICBzcXVhcmUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IwYjBiMDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMjVweCAzcHggIzgwODA4MDtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gIH1cblxuICBwaWVjZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgb3BhY2l0eTogMTtcblxuICAgIC8qIGNhbmNlbHMgYmxpbmRmb2xkICovXG4gIH1cblxuICAuaXMyZCAmIHBpZWNlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuICB9XG5cbiAgc3F1YXJlOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNDhweCA4cHggJGMtYWNjZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDAlO1xuICB9XG5cbiAgLmlzMmQgJiBzcXVhcmU6aG92ZXIgcGllY2Uge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuIiwiLmJsaW5kZm9sZCB7XG4gICYubWFpbi1ib2FyZCBwaWVjZSxcbiAgLm5vdy1wbGF5aW5nIHBpZWNlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgJi5tYWluLWJvYXJkIC5jaGVjayB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuIiwiJG1xLWNvbDE6ICRtcS1jb2wxLXVuaWJvYXJkO1xuJG1xLWNvbDItc3F1ZWV6ZTogJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZTtcbiRtcS1jb2wyOiAkbXEtY29sMi11bmlib2FyZDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ3NpZGUnO1xuQGltcG9ydCAndG9vbHMnO1xuQGltcG9ydCAnYWZ0ZXInO1xuQGltcG9ydCAnc2Vzc2lvbic7XG5AaW1wb3J0ICd6ZW4nO1xuIiwiI21haW4td3JhcCB7XG4gIC0tbWFpbi1tYXgtd2lkdGg6IGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMS11bmlib2FyZC1jb250cm9sc30pO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi5wdXp6bGUge1xuICBncmlkLWFyZWE6IG1haW47XG4gIGRpc3BsYXk6IGdyaWQ7XG5cbiAgJl9fc2lkZSB7XG4gICAgQGV4dGVuZCAlemVuO1xuICAgIGdyaWQtYXJlYTogc2lkZTtcbiAgfVxuXG4gICZfX2JvYXJkIHtcbiAgICBncmlkLWFyZWE6IGJvYXJkO1xuICB9XG5cbiAgJl9fdG9vbHMge1xuICAgIGdyaWQtYXJlYTogdG9vbHM7XG4gIH1cblxuICAmX19jb250cm9scyB7XG4gICAgQGV4dGVuZCAlemVuO1xuICAgIGdyaWQtYXJlYTogY29udHJvbHM7XG4gIH1cblxuICAmX19zZXNzaW9uIHtcbiAgICBAZXh0ZW5kICV6ZW47XG4gICAgZ3JpZC1hcmVhOiBzZXNzaW9uO1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLmV2YWwtZ2F1Z2Uge1xuICAgIGdyaWQtYXJlYTogZ2F1Z2U7XG4gIH1cblxuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnYm9hcmQnICdjb250cm9scycgJ3Rvb2xzJyAnc2Vzc2lvbicgJ3NpZGUnO1xuICBncmlkLXJvdy1nYXA6ICRibG9jay1nYXA7XG5cbiAgJl9fbW92ZXMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMi11bmlib2FyZC13aWR0aCB2YXIoLS1nYXVnZS1nYXApICRjb2wyLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogZml0LWNvbnRlbnQoMCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ2JvYXJkICAgZ2F1Z2UgdG9vbHMnICdzZXNzaW9uIC4gICAgIGNvbnRyb2xzJyAnc2lkZSAgICBzaWRlICBzaWRlJztcblxuICAgICZfX21vdmVzIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnc2lkZSAgICAuIGJvYXJkICAgZ2F1Z2UgdG9vbHMnICdzaWRlICAgIC4gc2Vzc2lvbiAuICAgICBjb250cm9scycgJ3NpZGUgICAgLiAuICAgICAgIC4gICAgIC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDMtdW5pYm9hcmQtc2lkZSAkYmxvY2stZ2FwICRjb2wzLXVuaWJvYXJkLXdpZHRoIHZhcigtLWdhdWdlLWdhcCkgJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gIH1cblxuICAmX19zaWRlIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtZ2FwOiAkYmxvY2stZ2FwO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICd1c2VyJyAndGhlbWUnICdtZXRhcycgJ2NvbmZpZyc7XG5cbiAgICAucHV6emxlLXJlcGxheSAmIHtcbiAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdyZXBsYXknICd1c2VyJyAndGhlbWUnICdtZXRhcycgJ2NvbmZpZyc7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtZXRhcyB1c2VyJyAnbWV0YXMgdGhlbWUnICdjb25maWcgdGhlbWUnICcuIHRoZW1lJztcbiAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWluLWNvbnRlbnQgbWluLWNvbnRlbnQgbWluLWNvbnRlbnQ7XG5cbiAgICAgIC5wdXp6bGUtcmVwbGF5ICYge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWV0YXMgcmVwbGF5JyAnbWV0YXMgdXNlcicgJ2NvbmZpZyB1c2VyJyAnY29uZmlnIHRoZW1lJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14LWxhcmdlKSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtZXRhcycgJ3VzZXInICd0aGVtZScgJ2NvbmZpZyc7XG4gICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbi1jb250ZW50IG1pbi1jb250ZW50IG1pbi1jb250ZW50O1xuICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICBtaW4td2lkdGg6IDI1MHB4O1xuICAgICAgbWF4LXdpZHRoOiAzNTBweDtcblxuICAgICAgLnB1enpsZS1yZXBsYXkgJiB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtZXRhcycgJ3JlcGxheScgJ3VzZXInICd0aGVtZScgJ2NvbmZpZyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fbWV0YXMge1xuICAgICAgZ3JpZC1hcmVhOiBtZXRhcztcbiAgICB9XG5cbiAgICAmX191c2VyIHtcbiAgICAgIGdyaWQtYXJlYTogdXNlcjtcbiAgICB9XG5cbiAgICAmX19jb25maWcge1xuICAgICAgZ3JpZC1hcmVhOiBjb25maWc7XG4gICAgfVxuXG4gICAgJl9fdGhlbWUge1xuICAgICAgZ3JpZC1hcmVhOiB0aGVtZTtcbiAgICB9XG5cbiAgICAmX19yZXBsYXkge1xuICAgICAgZ3JpZC1hcmVhOiByZXBsYXk7XG4gICAgfVxuICB9XG59XG4iLCIucHV6emxlX19zaWRlIHtcbiAgJl9fbWV0YXMge1xuICAgIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgcGFkZGluZzogMnZtaW47XG5cbiAgICAuaGlkZGVuIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgICB9XG5cbiAgICAuaW5mb3Mge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDF2dztcbiAgICAgIH1cblxuICAgICAgJi5wdXp6bGUge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS4ydmg7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuMnZoO1xuICAgICAgfVxuXG4gICAgICAucGxheWVycyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuM3JlbTtcbiAgICAgICAgZm9udC1zaXplOiA5MCU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fd2Vla2x5X3B1enpsZV9jb3VudCB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICB9XG5cbiAgJl9fdXNlciB7XG4gICAgQGV4dGVuZCAlYm94LW5lYXQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgcGFkZGluZzogMnZtaW47XG5cbiAgICAmX19yYXRpbmcge1xuICAgICAgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAzLjVlbTtcbiAgICAgIH1cbiAgICAgICZfX2Nhc3VhbCB7XG4gICAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5ycCB7XG4gICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxY2g7XG5cbiAgICAgICYudXAge1xuICAgICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIH1cblxuICAgICAgJi5kb3duIHtcbiAgICAgICAgY29sb3I6ICRjLWJhZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19zdHJlYWsge1xuICAgICZfX2luZm8ge1xuICAgICAgaDEge1xuICAgICAgICBjb2xvcjogJGMtYnJhZztcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2NvcmUge1xuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZTogNGVtO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2NvbmZpZyB7XG4gICAgQGV4dGVuZCAlYm94LW5lYXQ7XG5cbiAgICBhbGlnbi1zZWxmOiBzdGFydDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgcGFkZGluZzogMnZtaW47XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICZfX3RvZ2dsZSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICAgIC5zd2l0Y2gge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICAgIH1cblxuICAgICAgbGFiZWwge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fZGlmZmljdWx0eSB7XG4gICAgICBtYXJnaW4tdG9wOiAydm1pbjtcblxuICAgICAgbGFiZWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICAgIH1cblxuICAgICAgc2VsZWN0IHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX3RvZ2dsZXMge1xuICAgICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuICAgICAgbWFyZ2luLXRvcDogMnZtaW47XG4gICAgfVxuICB9XG5cbiAgJl9fcmVwbGF5IHtcbiAgICBAZXh0ZW5kICVib3gtbmVhdDtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBwYWRkaW5nOiAydm1pbjtcblxuICAgIGEge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBmb250LXNpemU6IDEuM2VtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJl9fYmFyIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtZm9yY2UsICVmbGV4LWNlbnRlcjtcblxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAwIDFlbTtcbiAgICAgIGhlaWdodDogMi41ZW07XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IHZhcigtLXApO1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYmctcGFnZSwgJGMtcHJpbWFyeSwgNDAlKVxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMjU1JSwgMjU1JSwgMjU1JSwgMC4xNSkgMCUsIHRyYW5zcGFyZW50IDM1JSk7XG4gICAgICAgIGFuaW1hdGlvbjogYmFyLWdsaWRlci1hbmltIDNzIGxpbmVhciBpbmZpbml0ZTtcblxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHdpZHRoLCAxcyk7XG4gICAgICB9XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX3RoZW1lIHtcbiAgICBAZXh0ZW5kICVib3gtbmVhdCwgJXJvYm90bztcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBwYWRkaW5nOiAydm1pbjtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuXG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNnJlbTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG59XG5cbi5wdXp6bGVfX3RoZW1lcyB7XG4gIHBhZGRpbmctdG9wOiAxLjJ2aDtcbiAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgbWFyZ2luLXRvcDogMS4ydmg7XG5cbiAgJl9fbGlzdCB7XG4gICAgJl9fZW50cnkge1xuICAgICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtO1xuXG4gICAgICBhIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1iZy1ib3gsICRjLWxpbmssIDkwJSk7XG4gICAgICB9XG5cbiAgICAgICYuc3RyaWtlIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX192b3RlcyB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgZmxleDogMCAxIDdlbTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX192b3RlIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcblxuICAgIC5wdXp6bGVfX3RoZW1lczpob3ZlciAmIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgIC5wdXp6bGVfX3RoZW1lczpob3ZlciAmLnZvdGUtZG93biB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICAgIGNvbnRlbnQ6ICfugZsnO1xuICAgICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICB9XG5cbiAgICAmLnZvdGUtZG93bjo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDAuNXR1cm4pO1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICAgIGNvbG9yOiAkYy1nb29kLW92ZXIgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLnZvdGUtZG93bjpob3ZlcixcbiAgICAmLnZvdGUtZG93bi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmFkO1xuICAgIH1cbiAgfVxuXG4gICZfX2xvY2sge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICZfX3NlbGVjdG9yIHtcbiAgICBtYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgJl9fc3R1ZHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iLCIucHV6emxlX190b29scyB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuXG4gIC5jZXZhbC13cmFwIHtcbiAgICBmbGV4OiAwIDAgMzhweDtcbiAgfVxuXG4gIC5jZXZhbCB7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICB9XG59XG5cbi5wdXp6bGVfX21vdmVzIHtcbiAgZmxleDogMiAxIGF1dG87XG4gIG92ZXJmbG93OiBhdXRvO1xuICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLyogcmVxdWlyZWQgYnkgbGluZTo6YmVmb3JlICovXG5cbiAgLnR2aWV3MiA+IG1vdmUge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIGdseXBoIHtcbiAgICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgfVxuICB9XG5cbiAgbW92ZSB7XG4gICAgJi5mYWlsIGdseXBoIHtcbiAgICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgJi5nb29kIGdseXBoLFxuICAgICYud2luIGdseXBoIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgICY6aG92ZXIgZ2x5cGgge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG59XG5cbi5wdXp6bGVfX2ZlZWRiYWNrIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgZmxleDogMSAwIDlyZW07XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRhbGwpIHtcbiAgICAgIGZsZXg6IDEgMCAxN3JlbTtcbiAgICB9XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1oaWdoO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAmOm5vdCguYWZ0ZXIpIHtcbiAgICBwYWRkaW5nOiAyZW07XG4gIH1cblxuICAucGxheWVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubm8tc3F1YXJlIHtcbiAgICBmbGV4OiAwIDAgNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLmlzM2QgJiBkaXYubm8tc3F1YXJlIHtcbiAgICBoZWlnaHQ6IDgycHg7XG4gIH1cblxuICBwaWVjZSB7XG4gICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLmljb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBmb250LXNpemU6IDUwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDY0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJi5nb29kIC5pY29uLFxuICAud2luIC5pY29uIHtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gICYuZmFpbCAuaWNvbiB7XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxuXG4gIC5pbnN0cnVjdGlvbiA+ICoge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLmluc3RydWN0aW9uIHN0cm9uZyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgfVxuXG4gIC52aWV3X3NvbHV0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudmlld19zb2x1dGlvbi5zaG93IHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDAuODtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSwgMS41cyk7XG4gIH1cbn1cblxuLnB1enpsZV9fY29udHJvbHMge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICBoZWlnaHQ6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuICBtYXJnaW4tdG9wOiAjey0kYmxvY2stZ2FwfTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgaGVpZ2h0OiAkY29sMS11bmlib2FyZC1jb250cm9scztcbiAgfVxuXG4gIC8vIGhlaWdodDogY2FsYygjeyRwdXp6bGUtaGlzdG9yeS1oZWlnaHR9ICsgI3skYmxvY2stZ2FwfSk7XG4gIC5qdW1wcyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAuZmJ0IHtcbiAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG4gIH1cblxuICAuZ2xvd2luZyB7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgfVxufVxuIiwiLnB1enpsZV9fZmVlZGJhY2suYWZ0ZXIge1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICB9XG5cbiAgLmNvbnRpbnVlIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBhZGRpbmc6IDJlbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbGlnaHRlbigkYy1wcmltYXJ5LCAxMCUpO1xuICAgIH1cblxuICAgIGk6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbiAgfVxuXG4gIC5jb21wbGV0ZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4OiAxIDEgNTAlO1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC5nYW1lLW92ZXIge1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNWNoO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgIH1cblxuICAgIC5wdXp6bGUtLXN0cmVhayAmIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIC5wdXp6bGVfX21vcmUge1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBwYWRkaW5nOiAxZW0gMmVtO1xuXG4gICAgYSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG59XG5cbi5wdXp6bGVfX3ZvdGUge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICBmbGV4OiAxIDEgNzAlO1xuXG4gICZfX2hlbHAge1xuICAgIG1hcmdpbjogMC41ZW0gMWVtIDAgMDtcblxuICAgIHAge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMWNoO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAwIDFlbTtcbiAgICB9XG4gIH1cblxuICAmX19idXR0b25zIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBvcGFjaXR5OiAwLjE7XG5cbiAgICAmLmVuYWJsZWQge1xuICAgICAgb3BhY2l0eTogMTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5LCAwLjVzKTtcbiAgICB9XG5cbiAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAucHV6emxlX19kaWZmdm90ZS1idG4ge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleDogMSAxIDIwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiAwLjVlbSAwLjFlbTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cywgY29sb3IgMC4xNXM7XG5cbiAgICAmLmVhc2llc3Qge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICYuZWFzaWVyIHtcbiAgICAgIGNvbG9yOiBtaXgoJGMtZ29vZCwgJGMtd2FybiwgNzAlKTtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWdvb2QsICRjLXdhcm4sIDcwJSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgIH1cbiAgICAmLm5vcm1hbCB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5oYXJkZXIge1xuICAgICAgY29sb3I6ICRjLXdhcm47XG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLXdhcm47XG4gICAgICAgIGNvbG9yOiAkYy13YXJuLW92ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICYuaGFyZGVzdCB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgJjpob3ZlcixcbiAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnB1enpsZV9fdm90ZS1yb3cge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gIGZsZXg6IDEgMSA3MCU7XG59XG5cbi5wdXp6bGVfX2Zhdm9yaXRlLWJ0biB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleDogMCAwIGF1dG87XG4gIGZvbnQtc2l6ZTogMS44ZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMCAwLjRlbTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMsIHRyYW5zZm9ybSAwLjE1cztcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGMtYnJhZztcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgY29sb3I6ICRjLWJyYWc7XG4gIH1cbn1cbiIsIi5wdXp6bGVfX3Nlc3Npb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwLXJldmVyc2U7XG4gIG1hcmdpbi10b3A6IC0wLjRlbTtcblxuICBhIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLCAlZmxleC1jZW50ZXI7XG5cbiAgICBmbGV4OiAwIDAgMi4zZW07XG4gICAgaGVpZ2h0OiAxLjZlbTtcbiAgICBtYXJnaW46IDAuNGVtIDAuNWVtIDAgMDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBvcGFjaXR5OiAwLjg1O1xuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgJi5yZXN1bHQtZW1wdHk6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgICBjb250ZW50OiAn7oC4JztcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgfVxuXG4gICAgJi5yZXN1bHQtdHJ1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIH1cblxuICAgICYucmVzdWx0LWZhbHNlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcblxuICAgICAgJi5yZXN1bHQtZW1wdHk6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICfugL8nO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuY3VycmVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1icmFnO1xuICAgIH1cblxuICAgICYuc2Vzc2lvbi1uZXcge1xuICAgICAgYmFja2dyb3VuZDogJGMtbGluaztcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG4iLCIlemVuIHtcbiAgLnplbiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbmJvZHkucGxheWluZy56ZW4ge1xuICAjdG9wIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5wdXp6bGVfX21vdmVzLmFyZXBsYXkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuI2ZyaWVuZF9ib3gsXG4uc2l0ZS10aXRsZS1uYXYsXG4uc2l0ZS1idXR0b25zIHtcbiAgQGV4dGVuZCAlemVuO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBa0JaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEIsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsZ0JBQWdC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 */
