@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 */
/* Number drawn on the streak wings. Dark ink reads against the gold; dark themes
   (dark, cohenchess, transp) override this pair with metallic silver. */
/* Same bevel again, for browsers that take the gradient-clip path. */
/* 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 */
/* Number drawn on the streak wings: silver with a highlight above and a shade
   below, so it reads as brushed metal rather than flat grey. Gradient text is not
   an option - background-clip:text paints almost nothing inside the flex-container
   pseudo that draws this number. cohenchess and transp @import this file. */
/* The shine treatment clips the gradient to the glyphs, and a text-shadow would
   paint over that clipped background - so the same bevel is expressed as a filter. */
/* 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 u8t {
  font-family: 'Noto Sans', Sans-Serif;
}

u8t draw, .mchat__tab, .mchat__messages a:not(.user-link), .game__tournament .clock, .rclock .time, i5z {
  font-family: 'Roboto', Sans-Serif;
}

u8t {
  font-family: 'Noto Chess', 'Noto Sans';
}

u8t draw {
  margin-left: 1ch;
  font-weight: normal;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.chat__members, .rclock .tour-rank, .round__now-playing .now-playing {
  color: #999999;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .rcontrols .rematch.fbt, #powerTip .forecast-info .title {
  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;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  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;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: #161512;
  border: 1px solid #3c3934;
  display: inline-block;
  padding: 0.5em;
}

.mchat__tab input:checked {
  background: #3b5c16;
  border-color: #4f7a1d;
}

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

.context-streamer, .mchat__tab {
  white-space: nowrap;
  overflow: hidden;
}

.mchat__tab span, .game__meta .user-tv {
  white-space: nowrap;
}

.mchat__messages {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .game__meta .user-tv, .crosstable__users, .ruser a {
  overflow: hidden;
  text-overflow: ellipsis;
}

.cmn-toggle + label::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;
}

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

.expiration, .rclock .tour-rank,
.rclock .moretime,
.rclock .berserked, .rcontrols .suggestion, .round__now-playing .switcher {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .chat__members__number, .game__meta__infos, .ruser .line, .material, .rcontrols .pending, .rcontrols .negotiation, .rcontrols .rematch-decline, .keyboard-move {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.round__now-playing h3 {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .mchat, .mchat__content, .round__side, rm6, .rcontrols .follow-up {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .crosstable, .mchat, .game__meta {
  border-radius: 3px;
}

.crosstable, .mchat, .game__meta {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.crosstable .sep {
  border-radius: 3px 0 0 3px;
}

.round__app__table, .rcontrols .rematch-decline {
  border-radius: 0 3px 3px 0;
}

.mchat__tab, .rclock-top .time {
  border-radius: 3px 3px 0 0;
}

.context-streamer, .rclock-bottom .time {
  border-radius: 0 0 3px 3px;
}

.crosstable, .mchat, .game__meta, .context-streamer, .round__app__table, .rclock .time, rm6 .buttons, .rcontrols .rematch-decline {
  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: '';
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
  flex-wrap: wrap;
  /* ─── Tab bar (full width first row, rest unwrapped on second row) ─── */
  /* ─── Filtered view: hide non-matching povs ─── */
}

.crosstable fill,
.crosstable povs {
  background: #262421;
  flex: 1 1 auto;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup {
  text-align: center;
}

.crosstable__tabs {
  flex: 0 0 100%;
  display: flex;
  background: #262421;
  border-bottom: 1px solid #404040;
}

.crosstable__tab {
  flex: 1 1 50%;
  text-align: center;
  padding: 0.2em 0.5em;
  cursor: pointer;
  font-size: 0.85em;
  color: #999999;
  transition: background 0.15s, color 0.15s;
}

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

.crosstable__tab.active {
  background: #3692e7;
  color: #fff;
  font-weight: bold;
}

.crosstable--filtered povs:not(.matching) {
  display: none !important;
}

.crosstable__users {
  max-width: 40vw;
  text-align: left;
}

.crosstable__users a {
  padding-left: 2vmin;
}

.crosstable__score {
  flex: 0 0 auto;
  font-weight: bold;
}

.crosstable__score span {
  padding: 0 2vmin;
}

.crosstable__matchup {
  flex: 1 1 auto;
  font-weight: bold;
  background: #293a49;
}

.crosstable povs a {
  color: #999999;
  flex: 0 0 50%;
}

.crosstable povs:hover a {
  opacity: 1 !important;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

.crosstable povs.current a {
  background: #a1420a;
  color: #fff;
  opacity: 1 !important;
}

.crosstable povs.new {
  border: #404040;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

@media (max-width: 649px) {
  .crosstable povs {
    display: none;
  }
  .crosstable povs:nth-last-child(-n + 12) {
    display: flex;
  }
}

.crosstable .sep {
  border-left: 1px solid #404040;
  margin-left: 0.3em;
}

.crosstable .win {
  font-weight: bold;
  color: #629924;
}

.crosstable .loss {
  color: #cc3333;
}

.crosstable .unavailable {
  margin-top: 40px;
  opacity: 0.7;
}

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

@keyframes bar-glider-anim {
  0% {
    transform: translateX(-1300px);
  }
  100% {
    transform: translateX(2100px);
  }
}

.bar-glider {
  position: relative;
  overflow: hidden;
}

.bar-glider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 70px;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
  animation: bar-glider-anim 3s linear infinite;
}

.now-playing {
  display: grid;
  --np-min-width: 200px;
  grid-template-columns: repeat(auto-fill, minmax(var(--np-min-width), 1fr));
}

@media (max-width: 499px) {
  .now-playing {
    --np-min-width: 50%;
  }
}

.now-playing > a {
  color: #bababa;
  padding: 0.3em;
}

.now-playing .indicator {
  color: #d64f00;
  margin-top: -3px;
  display: block;
}

.now-playing cg-board {
  box-shadow: none;
}

.context-streamers {
  max-height: 20vh;
  overflow-y: auto;
}

.context-streamer {
  height: 2.2em;
  color: #fff !important;
  background: #44641d;
  transition: all 150ms;
}

.context-streamer::before {
  font-size: 1.3em;
  margin-left: 0.4em;
}

.context-streamer:hover {
  background: #537e20;
}

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

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  background: rgba(230, 230, 230, 0.2);
  width: 100%;
  height: 12.5%;
  content: '';
  position: absolute;
  left: 0;
  z-index: 1;
  pointer-events: none;
}

.variant-racingKings .cg-wrap.orientation-white cg-container::before {
  top: 0;
}

.variant-racingKings .cg-wrap.orientation-black cg-container::before {
  bottom: 0;
}

.variant-kingOfTheHill cg-container::before {
  width: 25%;
  height: 25%;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
  background: rgba(230, 230, 230, 0.2);
  content: '';
  position: absolute;
  top: 37.5%;
  left: 37.5%;
  z-index: 1;
  pointer-events: none;
}

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

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

.mchat__tabs {
  flex: 0 0 auto;
  display: flex;
}

.mchat__tab {
  flex: 1 1 auto;
  text-align: center;
  padding: 0.4em 10px;
  cursor: pointer;
  color: #999999;
  transition: all 150ms;
}

.mchat__tab:hover {
  background: #412b1c;
}

.mchat__tab-active {
  color: #bababa;
  background: #262421 !important;
}

.mchat__tab input {
  cursor: pointer;
  display: none;
}

.mchat__tab-active input {
  display: block;
}

.mchat__tab:last-child {
  border-right: none;
}

.mchat-optional .mchat__tab.discussion {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chat__members {
  font-size: 0.9em;
  height: 100%;
  overflow: hidden;
}

.chat__members__inner {
  display: flex;
  align-items: flex-start;
}

.chat__members__number {
  margin-right: 1ch;
}

.chat__members__number::before {
  font-size: 1em;
  color: #999999;
  margin-right: 0.2ch;
}

.mchat__messages {
  flex: 1 1 auto;
  max-height: 50vh;
  overflow-y: auto;
  overflow-x: hidden;
  cursor: initial;
  font-size: 0.9em;
}

@media (min-width: 1260px) {
  .mchat__messages {
    max-height: none;
  }
}

.mchat__messages li {
  position: relative;
  padding: 0.5em 5px 0.5em 10px;
  line-height: 1.2em;
  overflow-y: hidden;
  user-select: text;
}

.mchat__messages li.me {
  border-left: 3px solid #4f7a1d;
  padding-left: 7px;
}

.mchat__messages li.host {
  background-color: rgba(79, 122, 29, 0.4);
}

.mchat__messages .deleted {
  opacity: 0.5;
}

.mchat__messages .system {
  display: block;
  opacity: 0.8;
  font-style: italic;
  font-size: 0.9em;
  margin-left: 0;
  text-align: center;
}

.mchat__messages .announcement {
  display: block;
  font-size: 1.1em;
  margin-left: 0;
  text-align: center;
  font-weight: bold;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #999999;
  letter-spacing: -1px;
  padding-right: 0.4em;
  max-width: 110px;
  text-overflow: ellipsis;
  display: inline-block;
  vertical-align: bottom;
}

.mchat__messages line.patron {
  font-size: 1.1em;
  width: 1.2em;
  text-align: left;
  color: #bf811d;
}

.mchat__messages .utitle {
  margin-right: 3px;
}

.mchat__messages i {
  display: none;
  position: absolute;
  top: 5px;
  right: 0;
  cursor: pointer;
  margin-right: 3px;
  padding: 1px 5px;
  opacity: 0.7;
  color: #d64f00;
}

.mchat__messages i:hover {
  opacity: 1;
}

.mchat__messages li:hover i {
  display: block;
  text-shadow: 0 0 2px #262421, 0 0 5px #262421, 0 0 10px #262421;
}

.mchat__messages li.me i {
  display: none !important;
}

.mchat__say {
  flex: 0 0 auto;
  border: 0;
  border-top: 1px solid #404040;
  border-radius: 0;
  padding: 3px 20px 3px 4px;
}

@media (hover: none) {
  .mchat__say {
    font-size: 16px;
  }
}

.mchat__say.whisper {
  color: #629924;
  font-weight: bold;
  font-style: italic;
}

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #384722;
  }
  60% {
    background: #2b455d;
  }
  70% {
    background: none;
  }
}

.palantir {
  flex: 0 1 auto;
  animation: palantir-glowing 1.5s ease-in-out infinite;
  border-radius: 0 3px 0 0;
}

.palantir-slot {
  animation: none;
  opacity: 0.6;
}

.palantir-slot:hover {
  opacity: 1;
}

.palantir-off {
  animation: none;
}

.palantir-on {
  background: #629924;
  color: #fff;
  animation: none;
}

.palantir-on:hover {
  background: #cc3333 !important;
  color: #fff !important;
}

.palantir::after {
  top: 1px;
  left: 0;
  right: auto;
  background: none;
  box-shadow: none;
}

.mchat {
  grid-area: chat;
  justify-content: stretch;
  min-height: 15em;
}

.mchat__content {
  background: #262421;
  flex: 1 1 auto;
  overflow: hidden;
}

.mchat__content.note textarea {
  font-size: 0.9em;
  flex-grow: 1;
  border: none;
  background-color: transparent;
  line-height: 1.7em;
  outline: none;
  resize: none;
}

@media (hover: none) {
  .mchat__content.note textarea {
    font-size: 16px;
  }
}

.mchat__presets {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  flex-flow: row nowrap;
  line-height: 1.4em;
  user-select: none;
}

.mchat__presets span {
  flex: 1 1 auto;
  text-align: center;
  display: block;
  opacity: 0.8;
  border: 1px solid #404040;
  border-width: 1px 1px 0 0;
  font-size: 0.9em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 150ms;
}

.mchat__presets span.disabled {
  background: #412b1c;
  color: transparent;
  cursor: default;
}

.mchat__presets span:not(.disabled):hover {
  background: #d64f00;
  color: #fff;
  opacity: 1;
}

#main-wrap {
  --main-max-width: auto;
}

@media (max-width: 799px) and (orientation: portrait) {
  #main-wrap {
    --main-max-width: calc(
      100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 100px - 3.5em
    );
  }
}

.round {
  grid-area: main;
  display: grid;
  grid-gap: 2vmin;
  grid-template-areas: 'app' 'under' 'side' 'uchat';
}

.round__app {
  grid-area: app;
}

.round__side {
  grid-area: side;
}

.round__underboard {
  grid-area: under;
}

.round__pgn {
  margin-top: 1em;
  padding: 0 0.5em;
}

.round__pgn strong {
  display: block;
  margin-bottom: 0.3em;
  font-size: 0.9em;
  text-transform: uppercase;
  opacity: 0.7;
}

.round__pgn textarea {
  width: 100%;
  height: 6em;
  font-family: monospace;
  font-size: 0.82em;
  resize: vertical;
}

.round__underchat {
  grid-area: uchat;
}

.round__puzzle-matches {
  overflow-x: auto;
  overflow-y: auto;
}

.round__puzzle-matches__list {
  display: flex;
}

.round__puzzle-match-container {
  margin-right: 10px;
}

.round__puzzle-match {
  display: block;
  width: 200px;
  height: 200px;
}

.round__puzzle-match__board--success::before {
  position: absolute;
  display: inline-block;
  content: " ";
  background: url("/assets/images/CoinFlip.gif") no-repeat 0 0;
  background-size: 30px 30px;
  width: 30px;
  height: 30px;
  right: -2px;
  top: -33px;
  z-index: 999;
}

@media (min-width: 800px), (orientation: landscape) {
  .round {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto fit-content(0) fit-content(0);
    grid-template-areas: 'app   app' 'under side' 'under uchat';
  }
  .round__app {
    justify-self: center;
  }
}

@media (min-width: 1260px) {
  .round {
    grid-template-columns: minmax(230px, 20vw) minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'side  app   app' 'uchat under .';
  }
  .round .crosstable__users {
    flex: 7 1 auto;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round .crosstable {
    display: none;
  }
}

.rcontrols {
  grid-area: controls;
}

.material-top {
  grid-area: mat-top;
}

.material-bottom {
  grid-area: mat-bot;
}

.expiration-top {
  grid-area: expi-top;
}

.expiration-bottom {
  grid-area: expi-bot;
}

.ruser-top {
  grid-area: user-top;
}

.ruser-bottom {
  grid-area: user-bot;
}

.rclock-top {
  grid-area: clock-top;
}

.rclock-bottom {
  grid-area: clock-bot;
}

.mascot-bottom {
  position: absolute;
  top: 12px;
  z-index: 50;
  align-self: flex-start;
}

rm6,
.col1-rmoves-preload {
  grid-area: moves;
}

.keyboard-move {
  grid-area: kb-move;
}

.round__app {
  display: grid;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__app {
    grid-template-rows: auto auto 30px 20px auto auto 20px 30px auto;
    grid-template-areas: 'moves' 'pocket-top' 'user-top' 'mat-top' 'board' 'expi-bot' 'mat-bot' 'masc-bot' 'user-bot' 'pocket-bot' 'kb-move' 'controls';
  }
  .round__app .rclock-top {
    grid-area: 3 / 1 / 5 / 2;
  }
  .round__app .rclock-bottom {
    grid-area: 7 / 1 / 9 / 2;
  }
  .round__app cg-board {
    box-shadow: none;
  }
  .round__app .expiration-top {
    display: none;
  }
  .round__app__table {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-areas: 'board .' 'board mat-top' 'board clock-top' 'board expi-top' 'board user-top' 'board moves' 'board controls' 'board user-bot' 'board expi-bot' 'board clock-bot' 'board pgr-counter' 'board pgr-howto' 'board pgr-arrow-tog' 'board mat-bot' 'board masc-bot' 'board .' 'kb-move .';
    grid-column-gap: 2vmin;
  }
  .round__app__table {
    grid-area: 4 / 2 / 10 / 3;
  }
  .round__app .expiration-top {
    display: flex;
  }
  .round__app rm6 {
    margin-bottom: 1px;
  }
  .round__app l4x {
    display: none;
    background: none;
  }
  .round__app .keyboard-move {
    margin-top: 2vmin;
  }
}

@media (min-width: 800px) and (min-height: 500px), (orientation: landscape) and (min-height: 500px) {
  .round__app l4x {
    display: flex;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(55vmin), calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin)) minmax(200px, 240px);
    grid-column-gap: 3vmin;
  }
}

.round__app__board {
  grid-area: board;
}

.mascot {
  width: 400px;
  height: 260px;
  position: relative;
  overflow: hidden;
  pointer-events: auto;
}

/* wrapper that moves left/right */
.mascot-sprite {
  position: absolute;
  left: 0;
  top: 0;
  will-change: transform;
  /* ✅ pacing by default (moves + sets facing at bounds) */
  animation: mascotPace 6s linear infinite;
}

/* video flips based on CSS var set by mascotPace
   (JS tag-chase can override with inline transform; clear inline on chase end) */
.mascot-video {
  display: block;
  width: 280px;
  height: auto;
  will-change: transform;
  transform: scaleX(var(--mascot-flip, 1));
}

/* during tag: pause CSS pacing so JS can translate wrapper */
.mascot--paused .mascot-sprite {
  animation-play-state: paused !important;
}

@keyframes mascotPace {
  /* Move right, facing right */
  0% {
    transform: translateX(0);
    --mascot-flip: 1;
  }
  49% {
    transform: translateX(calc(400px - 280px));
    --mascot-flip: 1;
  }
  /* Flip at the right edge */
  50% {
    transform: translateX(calc(400px - 280px));
    --mascot-flip: -1;
  }
  /* Move left, facing left */
  99% {
    transform: translateX(0);
    --mascot-flip: -1;
  }
  /* Flip back at the left edge */
  100% {
    transform: translateX(0);
    --mascot-flip: 1;
  }
}

.mascot-bubble {
  position: absolute;
  left: 50%;
  top: 0px;
  transform: translateX(-50%);
  display: none;
  padding: 6px 10px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
}

.mascot-bubble::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -6px;
  transform: translateX(-50%) rotate(45deg);
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.95);
  border-left: 1px solid rgba(0, 0, 0, 0.15);
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

body.playing.zen .round__underboard, body.playing.zen .round__underchat, body.playing.zen #friend_box,
body.playing.zen .site-title-nav,
body.playing.zen .site-buttons, body.playing.zen .round__side, body.playing.zen .mchat, body.playing.zen .ruser, body.playing.zen .rclock .tour-rank, .rclock body.playing.zen .tour-rank,
body.playing.zen .rclock .moretime, .rclock body.playing.zen .moretime,
body.playing.zen .rclock .berserked, .rclock body.playing.zen .berserked, body.playing.zen l4x > :not(.result-wrap) {
  display: none;
}

body.playing.zen .ricons {
  margin: 0.5em 0 1em 0;
}

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

.round__side .game__meta {
  flex: 0 0 auto;
}

.round__side .game__meta__players .team {
  margin-left: 1.7em;
}

.mchat {
  flex: 1 1 0;
  margin-top: 2vmin;
}

/* shared with analysis */
.game__meta {
  background: #262421;
  padding: 1.4vmin 2vmin;
}

.game__meta section:not(:last-child) {
  border-bottom: 1px solid #404040;
  margin-bottom: 1.33333vmin;
  padding-bottom: 1.33333vmin;
}

.game__meta__infos {
  position: relative;
  /* for bookmark */
}

.game__meta__infos::before {
  font-size: 3rem;
  margin-right: 4%;
}

.game__meta__infos p {
  margin: 0;
}

.game__meta__infos time {
  opacity: 1;
}

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

.game__meta__players {
  margin-top: 0.3rem;
  font-size: 90%;
}

.game__meta .bookmark {
  position: absolute;
  right: 0;
  z-index: 2;
  color: #999999;
}

.game__meta .bookmark ::before {
  font-size: 1.3em;
}

.game__meta .bookmark:not(.bookmarked) .on,
.game__meta .bookmark.bookmarked .off {
  display: none;
}

.game__meta .user-tv {
  font-size: 1.2em;
}

.game__tournament .clock {
  font-size: 2em;
  text-align: center;
  margin-top: 0.2em;
}

@media (hover: hover) {
  .game__meta .bookmark {
    display: none;
  }
  .game__meta:hover .bookmark {
    display: block;
  }
}

.round__app__table {
  background: #262421;
}

.round__app .draw-yes span {
  font-size: 1.2em;
}

.expiration {
  font-size: 0.9rem;
  justify-content: center;
  line-height: 2;
  background: #629924;
  color: #fff;
}

.expiration-top {
  border-top-right-radius: 3px;
}

.expiration-bottom {
  border-bottom-right-radius: 3px;
}

.expiration.emerg {
  background: #cc3333;
}

.expiration strong {
  font-size: 1rem;
  margin-right: 0.3em;
}

.ruser {
  display: flex;
  justify-content: left;
  font-size: 1.2em;
  padding: 0 0.3em;
}

.ruser:hover {
  color: #bababa;
}

.ruser a {
  color: #bababa;
}

.ruser.long a {
  letter-spacing: -0.5px;
}

.ruser rating {
  flex: 0 0 auto;
  margin: 0 0.25em 0 0.3em;
  color: #999999;
  letter-spacing: -0.5px;
}

.ruser .line {
  justify-content: center;
}

@keyframes connecting {
  0% {
    opacity: 0.1;
  }
  50% {
    opacity: 0.3;
  }
  100% {
    opacity: 0.1;
  }
}

.ruser.connecting .line {
  animation: connecting 0.9s ease-in-out infinite;
}

.ruser .rp {
  margin-right: 0.2em;
}

@media (min-width: 800px), (orientation: landscape) {
  .ruser {
    padding: 0.5em 0.5em 0.5em 0.3em;
    line-height: inherit;
  }
  .ruser a {
    flex: 1 1 auto;
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  .ruser-top {
    align-self: flex-end;
  }
  .ruser-bottom {
    align-self: flex-start;
  }
}

.ruser .premove-toggle {
  flex: 0 0 auto;
  font-size: 0.65em;
  font-weight: bold;
  padding: 0.15em 0.4em;
  border-radius: 3px;
  cursor: pointer;
  user-select: none;
  align-self: center;
  margin: 0 0.2em;
  transition: background 0.15s, color 0.15s;
}

.ruser .premove-toggle.premove-on {
  background: #4caf50;
  color: #fff;
}

.ruser .premove-toggle.premove-off {
  background: #f44336;
  color: #fff;
}

.rclock {
  position: relative;
  display: flex;
  justify-content: flex-end;
  user-select: none;
  /* overflow: hidden; is not possible because of clock bars and shadows */
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock {
    /* that weird shit is required so the clock goes above the player since they share the same grid cell */
    justify-self: flex-end;
    z-index: 1;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock {
    justify-content: space-between;
  }
  .rclock-bottom {
    /* over the table shadow */
    z-index: 0;
  }
}

.rclock-turn {
  align-self: center;
  line-height: 50px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock-turn__text {
    background: #262421;
    padding: 0 2vmin;
    font-weight: bold;
    white-space: nowrap;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-turn {
    height: 2.2em;
    line-height: 2.2em;
  }
}

.rclock .bar {
  display: none;
}

.rclock .bar.berserk {
  background: #cc3333;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .bar {
    display: block;
    position: absolute;
    width: 100%;
    height: 4px;
    background: #629924;
    transform-origin: left;
  }
  .with-expiration .rclock .bar {
    display: none;
  }
  .rclock-top .bar {
    bottom: -4px;
  }
  .rclock-bottom .bar {
    top: -4px;
  }
}

.rclock .time {
  background: #262421;
  min-width: 3em;
  font-size: 2.8em;
  line-height: 50px;
  font-weight: bold;
  padding: 0 2vmin;
  white-space: nowrap;
  /* ensure updates don't redraw other parts of the document */
  will-change: transform;
  z-index: -1;
  display: flex;
}

.rclock .time.hour {
  font-size: 2.3em;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock .time {
    border-radius: 0;
    box-shadow: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .time {
    align-items: flex-end;
    line-height: 1.2em;
  }
}

@media (min-width: 500px) and (min-height: 600px) {
  .rclock .time {
    font-size: 3.6em;
    letter-spacing: 0.12em;
  }
  .rclock .time.hour {
    font-size: 2.9em;
    letter-spacing: 0.1em;
  }
}

.rclock-correspondence .time {
  font-size: 1.6em;
  letter-spacing: inherit;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-correspondence .time {
    line-height: 1.5em;
  }
}

@media (min-width: 500px) {
  .rclock-correspondence .time {
    font-size: 1.9em;
  }
}

.rclock tenths {
  font-size: 70%;
  margin-bottom: -0.18em;
}

.rclock huns {
  font-size: 80%;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock huns {
    display: none;
    /* since clock is right-aligned, huns shift it left on every move */
  }
}

.rclock sep {
  opacity: 0.5;
  font-size: 0.8em;
}

.rclock sep.low {
  opacity: 0.15;
}

.rclock.running .time {
  background: #384722;
  color: #e3e3e3;
}

.rclock.emerg .time,
.rclock.outoftime .time {
  background-color: #502826;
}

.rclock.emerg.running .time {
  background-color: #792c2a;
  color: #e3e3e3;
}

.rclock .go-berserk {
  font-size: 2.2em;
  padding: 0 0.3em;
}

.rclock .go-berserk:hover {
  color: #d64f00 !important;
  background: none !important;
}

.rclock .tour-rank,
.rclock .moretime,
.rclock .berserked {
  display: none;
}

@media (min-width: 500px) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: -1;
    display: flex;
    flex: 0 1 auto;
    font-size: 1.7em;
    padding: 0 0.3em;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: inherit;
  }
}

.rclock .tour-rank {
  opacity: 0.65;
}

.rclock .moretime {
  opacity: 0.4;
}

.rclock .moretime:hover {
  opacity: 1;
}

.rclock .berserked {
  font-size: 2.2em;
  color: #d64f00;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  background-size: cover;
  display: inline-block;
}

.material mpiece.pawn {
  background-image: url(../piece/mono/P.svg);
}

.material mpiece.bishop {
  background-image: url(../piece/mono/B.svg);
}

.material mpiece.knight {
  background-image: url(../piece/mono/N.svg);
}

.material mpiece.rook {
  background-image: url(../piece/mono/R.svg);
}

.material mpiece.queen {
  background-image: url(../piece/mono/Q.svg);
}

.material mpiece.king {
  background-image: url(../piece/mono/K.svg);
}

.material score {
  font-family: 'Roboto';
}

.material {
  align-self: center;
  height: 40px;
  line-height: 0;
  white-space: nowrap;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  width: 32px;
  height: 32px;
  background-size: cover;
  display: inline-block;
}

.material mpiece.pawn {
  margin-left: -15px;
}

.material score {
  font-family: 'Roboto';
  line-height: 32px;
  vertical-align: top;
}

@media (max-width: 799px) and (orientation: portrait) {
  .material {
    height: 20px;
    margin-left: 3vmin;
  }
  .material div {
    margin-left: 8px;
  }
  .material mpiece {
    width: 15px;
    height: 15px;
    margin-left: -8px !important;
  }
}

rm6 {
  /* context: .rmoves */
  /* context: rm6 */
}

rm6 .buttons {
  flex: 0 0 auto;
  display: flex;
  justify-content: stretch;
  background: #302e2c;
  font-size: 0.9em;
  order: 2;
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 .buttons {
    order: 0;
  }
}

rm6 .fbt,
rm6 .noop {
  padding: 5px 0;
  flex: 0 0 calc(100% / 6);
  text-align: center;
}

rm6 l4x,
rm6 .message {
  flex: 0 0 7.4rem;
}

@media (max-width: 799px) and (orientation: portrait) {
  rm6 {
    overflow: hidden;
  }
  rm6 .col1-moves {
    flex: 0 0 3.5em;
    display: flex;
    justify-content: space-between;
  }
  rm6 .col1-moves .fbt {
    flex: 0 0 auto;
    padding: 0 1.3em;
  }
  body.playing.zen rm6 .col1-moves {
    visibility: hidden;
  }
  rm6 l4x {
    flex: 1 1 100%;
    display: flex;
    align-items: stretch;
    white-space: nowrap;
    overflow-x: scroll;
    color: #999999;
    box-shadow: 0 4px 12px #000 inset;
  }
  rm6 l4x::-webkit-scrollbar {
    height: 0px;
  }
  rm6 l4x > :first-child {
    margin-left: auto !important;
  }
  rm6 i5z,
  rm6 u8t,
  rm6 .result-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.3rem;
  }
  rm6 i5z {
    padding-right: 0.15em;
  }
  rm6 u8t {
    font-size: 1.1em;
    cursor: pointer;
  }
  rm6 u8t.a1t, rm6 u8t:hover {
    background: #302e2c;
  }
  rm6 u8t.a1t {
    color: #e3e3e3;
  }
  rm6 .buttons {
    display: none;
  }
  rm6 .result {
    margin: 0;
    font-weight: bold;
    font-size: 1.1em;
  }
  rm6 .message {
    flex: 0 0 3.5em;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.2;
  }
  rm6 .message br {
    display: none;
  }
  rm6 .message strong {
    margin-left: 0.5em;
  }
  rm6 .message::before {
    margin-right: 0.3em;
  }
  body.playing.zen rm6 .message {
    visibility: hidden;
  }
  rm6 .status {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 {
    background: #262421;
  }
  rm6 l4x {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    position: relative;
    /* required by autoScroll */
    overflow-y: auto;
    align-content: flex-start;
    will-change: scroll-position;
    user-select: none;
    line-height: 1.7;
    font-size: 1.1em;
  }
  rm6 l4x::-webkit-scrollbar {
    width: 0px;
  }
  rm6 i5z {
    /* Edge 18: flex: 0 0 calc(100% / 6); causes wrap */
    flex: 0 0 16.666%;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    background: #302e2c;
  }
  rm6 u8t {
    /* Edge 18: flex: 0 0 calc(100% * 5 / 12); causes wrap */
    flex: 0 0 41.666%;
    padding-left: 0.7em;
    cursor: pointer;
  }
  rm6 u8t:hover {
    background: #3692e7;
    color: #fff;
  }
  rm6 u8t.a1t {
    font-weight: bold;
    background: #293a49;
    color: #cccccc;
  }
  rm6 u8t span {
    cursor: pointer;
    margin-right: 0.35em;
  }
  rm6 u8t span:hover {
    color: #fff;
    background: #3692e7;
  }
  rm6 u8t span.a1t {
    font-weight: bold;
    background: #293a49;
    color: #cccccc;
  }
  rm6 div.pgr {
    display: flex;
    align-items: flex-start;
    width: 100%;
  }
  rm6 div.pgr i5z {
    flex: 0 0 10%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    background: #302e2c;
    align-self: stretch;
  }
  rm6 div.pgr .pgr-sym {
    flex: 0 0 10%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    font-size: 1.1em;
  }
  rm6 div.pgr .pgr-cnt {
    flex: 0 0 12%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    color: #999999;
    font-size: 0.85em;
  }
  rm6 div.pgr u8t {
    flex: 1;
    align-self: flex-start;
  }
  rm6 .message {
    display: flex;
    align-items: center;
    margin: 1em;
  }
  rm6 .message::before {
    color: #999999;
    font-size: 3em;
    margin-right: 12px;
  }
  rm6 .result-wrap {
    width: 100%;
    text-align: center;
  }
  rm6 .result {
    border-top: 1px solid #404040;
    font-weight: bold;
    font-size: 1.2em;
    padding: 5px 0 3px 0;
    margin: 0;
  }
  rm6 .status {
    font-style: italic;
    margin-bottom: 0.5em;
  }
}

@media (min-width: 800px) and (min-width: 800px), (orientation: landscape) and (min-width: 800px), (min-width: 800px) and (orientation: landscape), (orientation: landscape) and (orientation: landscape) {
  .pgr-counter {
    grid-area: pgr-counter;
    width: 100%;
    padding: 1.2em 0.8em 0.5em;
    background: #262421;
    border-top: 1px solid #404040;
    display: flex;
    align-items: center;
    gap: 0.6em;
  }
  .pgr-counter__label {
    font-size: 1.1em;
    color: #999999;
    flex-shrink: 0;
  }
  .pgr-counter__pips {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
  }
  .pgr-counter__pip {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #4caf50;
    opacity: 1;
  }
  .pgr-counter__pip.used {
    background: #c9a227;
    opacity: 0.6;
  }
  .pgr-arrow {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-left: auto;
    flex-shrink: 0;
    pointer-events: none;
    transition: color 0.3s;
  }
  .pgr-arrow--green {
    color: #4caf50;
  }
  .pgr-arrow--yellow {
    color: #ffc107;
  }
  .pgr-arrow__shaft {
    width: 8px;
    height: 28px;
    background: currentColor;
    border-radius: 2px;
  }
  .pgr-arrow__head {
    width: 0;
    height: 0;
    border-left: 13px solid transparent;
    border-right: 13px solid transparent;
  }
  .pgr-arrow--up .pgr-arrow__head {
    border-bottom: 18px solid currentColor;
  }
  .pgr-arrow--down .pgr-arrow__head {
    border-top: 18px solid currentColor;
    order: 1;
  }
  .pgr-arrow--down .pgr-arrow__shaft {
    order: -1;
  }
  .pgr-how-to-play {
    grid-area: pgr-howto;
  }
  .pgr-arrow-toggle {
    grid-area: pgr-arrow-tog;
    width: 100%;
    padding: 0.5em 0.8em;
    background: #262421;
    border-top: 1px solid #404040;
    display: flex;
    align-items: center;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 .pgr-how-to-play {
    grid-area: pgr-howto;
    width: 100%;
    padding: 0.6em 0.8em 0.8em;
    font-size: 0.82em;
    color: #999999;
    background: #262421;
    border-radius: 0 0 3px 3px;
  }
  rm6 .pgr-how-to-play strong {
    display: block;
    font-size: 1.05em;
    color: #bababa;
    margin-bottom: 0.35em;
  }
  rm6 .pgr-how-to-play ol {
    margin: 0 0 0.4em 1.2em;
    padding: 0;
    line-height: 1.6;
  }
  rm6 .pgr-how-to-play p {
    margin: 0;
    line-height: 1.5;
  }
  rm6 .pgr-arrow-toggle {
    grid-area: pgr-arrow-tog;
    width: 100%;
    padding: 0.5em 0.8em;
    background: #262421;
    border-radius: 0 0 3px 3px;
  }
  rm6 .pgr-arrow-toggle__switcher {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }
  rm6 .pgr-arrow-toggle__switcher label:first-child {
    cursor: default;
    font-size: 0.9em;
    color: #999999;
  }
  rm6 .pgr-arrow-toggle__switcher .switch {
    display: flex;
    align-items: center;
    gap: 0.5em;
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  .col1-rmoves-preload {
    height: 2.5em;
  }
}

.rcontrols {
  text-align: center;
  width: 100%;
}

.rcontrols p {
  margin: 0;
}

.rcontrols .disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.rcontrols .ddloader {
  margin: 20px auto 10px auto;
}

.rcontrols .suggestion,
.rcontrols .pending,
.rcontrols .negotiation {
  padding: 0.5em 3%;
  background: #302e2c;
  border: 1px solid #404040;
  border-width: 0 1px;
}

.rcontrols .suggestion {
  justify-content: space-around;
}

.rcontrols .suggestion p {
  width: 100%;
}

.rcontrols .suggestion .button {
  margin: 0.5em 0 0 0;
}

.rcontrols .pending p {
  flex: 3 1;
  margin-right: 7px;
}

.rcontrols .pending .button {
  flex: 1 1;
}

@keyframes flash-once {
  from {
    background: #d64f00;
    color: #fff;
  }
  to {
    background: #302e2c;
    color: #bababa;
  }
}

.rcontrols .negotiation {
  animation: flash-once 1s ease-in;
  padding: 1px;
}

.rcontrols .negotiation p {
  flex: 3 1 auto;
}

.rcontrols .negotiation a {
  flex: 1 0 3rem;
  font-size: 1.5em;
  line-height: 3em;
  background: #262421;
}

.rcontrols .negotiation .accept {
  color: #629924;
  margin-right: 1px;
}

.rcontrols .negotiation .decline {
  color: #cc3333;
}

.rcontrols .negotiation a:hover {
  color: #fff;
  background: #629924;
}

.rcontrols .negotiation a.decline:hover {
  background: #cc3333;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .negotiation {
    padding: 3px;
  }
  .rcontrols .negotiation a {
    line-height: 1.6em;
    flex: 0 0 2.5rem;
    padding: 0 1.2em;
  }
}

.rcontrols .glowing:hover {
  animation: none;
}

.rcontrols .follow-up {
  border-bottom: 1px solid #404040;
  position: relative;
  /* for rematch-decline */
}

.rcontrols .follow-up .fbt {
  padding: 12px 0;
  margin: 1px 1px 0 1px;
}

.rcontrols .follow-up > .fbt:first-child {
  margin-top: 0;
}

.rcontrols .follow-up .fbt.strong {
  padding: 2em 0;
  font-size: 1.2em;
}

.rcontrols .follow-up .weak {
  font-weight: normal;
  padding: 6px 0;
}

.rcontrols .follow-up .weak::before {
  opacity: 0.7;
}

.rcontrols .follow-up form .fbt {
  width: 100%;
}

.rcontrols .follow-up .spinner {
  width: 40px;
  height: 40px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .follow-up {
    margin-top: 2vmin;
  }
}

.rcontrols .analysis {
  display: none;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .analysis {
    display: block;
    margin-left: 2em;
  }
}

.rcontrols .rematch.fbt {
  font-size: 1.2em;
  height: 6rem;
  transition: all 150ms;
}

.rcontrols .rematch.me {
  background: #337cc0;
}

@keyframes rubber-band {
  from {
    transform: scale3d(1, 1, 1);
  }
  6% {
    transform: scale3d(1.25, 0.75, 1);
  }
  8% {
    transform: scale3d(0.75, 1.25, 1);
  }
  10% {
    transform: scale3d(1.15, 0.85, 1);
  }
  13% {
    transform: scale3d(0.95, 1.05, 1);
  }
  15% {
    transform: scale3d(1.05, 0.95, 1);
  }
  20% {
    transform: scale3d(1, 1, 1);
  }
}

@keyframes button-glowing {
  0% {
    opacity: 0;
  }
  60% {
    opacity: 0.2;
  }
  85% {
    opacity: 0;
  }
}

.rcontrols .rematch.glowing {
  position: relative;
  animation: none;
  color: #cccccc;
}

.rcontrols .rematch.glowing::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background: #3692e7;
  opacity: 0;
  animation: button-glowing 2s ease-in-out infinite;
}

.rcontrols .rematch.glowing span {
  display: block;
  animation: rubber-band 5s infinite;
}

.rcontrols .rematch.fbt:not(.disabled):hover {
  background: #3171ac;
  color: #fff;
  animation: none;
}

.rcontrols .rematch-decline {
  background: #302e2c;
  justify-content: center;
  position: absolute;
  top: 0;
  right: -25px;
  width: 25px;
  height: 6rem;
  border: 0;
  opacity: 0.7;
  background: #792c2a;
  transition: all 150ms;
  display: none;
}

@media (min-width: 800px), (orientation: landscape) {
  .rcontrols .rematch-decline {
    display: block;
  }
}

.rcontrols .rematch-decline:hover {
  background: #cc3333;
  color: #fff;
  right: -36px;
  width: 35px;
}

.ricons {
  display: flex;
  justify-content: center;
  margin-top: 10px;
}

.ricons .fbt {
  font-size: 1.4em;
  padding: 0.1em 1em;
}

.ricons.confirm > button {
  visibility: hidden;
}

.ricons .act-confirm {
  visibility: visible;
  position: relative;
  width: 60px;
}

.ricons .act-confirm .fbt.no {
  padding: 0.1em 0;
  width: 30px;
  text-align: center;
  position: absolute;
  top: 0;
  right: -34px;
}

.ricons .act-confirm .fbt.yes {
  position: absolute;
  right: 0;
  top: -3px;
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  background: #d64f00;
  border-bottom: 5px solid #963700;
  text-shadow: 0 -1px #963700;
  transition: all 150ms;
  transform: translate(0px, 0px);
}

.ricons .act-confirm .fbt.yes:hover {
  filter: brightness(1.07);
}

.ricons .act-confirm .fbt.yes:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #963700;
  filter: brightness(1);
}

.round__now-playing h3 {
  margin: 1em 0 0.5em 0;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__now-playing h3 {
    margin: 1em 2vmin 0.5em 2vmin;
  }
}

.round__now-playing .simul span {
  font-weight: bold;
  margin: 0 0.5em;
}

.round__now-playing .simul .win {
  color: #629924;
}

.round__now-playing .simul .draw {
  color: #bf811d;
}

.round__now-playing .simul .loss {
  color: #cc3333;
}

.round__now-playing .switcher label {
  cursor: pointer;
}

.round__now-playing .switcher .switch {
  margin-left: 10px;
}

.keyboard-move input {
  width: 4.5em;
  font-size: 1.1em;
  font-weight: bold;
  margin-right: 1rem;
  border: 1px solid #404040;
  transition: all 150ms;
}

.keyboard-move input.wrong {
  background: #cc3333;
  color: #fff;
}

.keyboard-move em {
  color: #999999;
}

#powerTip .forecast-info .title {
  display: block;
  padding: 0.7em;
  border-bottom: 1px solid #404040;
  text-align: center;
}

#powerTip .forecast-info .content {
  display: block;
  padding: 1em;
}

@keyframes round-goat-run-ltr {
  from {
    transform: translateX(-200px) translateY(-50%);
  }
  to {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
}

@keyframes round-goat-run-rtl {
  from {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
  to {
    transform: translateX(-200px) translateY(-50%);
  }
}

@keyframes round-goat-fly-ltr {
  0% {
    transform: translateX(-200px) translateY(-50%) rotate(0deg);
  }
  45% {
    transform: translateX(45vw) translateY(-50%) rotate(-4deg);
    animation-timing-function: cubic-bezier(0.4, 0, 0.9, 0.45);
  }
  100% {
    transform: translateX(calc(100vw + 600px)) translateY(calc(-50% - 38vh)) rotate(-12deg);
  }
}

@keyframes round-goat-fly-rtl {
  0% {
    transform: translateX(calc(100vw + 260px)) translateY(calc(-50% - 34vh)) rotate(10deg);
    animation-timing-function: cubic-bezier(0.3, 0.5, 0.5, 1);
  }
  40% {
    transform: translateX(58vw) translateY(-50%) rotate(0deg);
    animation-timing-function: linear;
  }
  100% {
    transform: translateX(-420px) translateY(-50%) rotate(0deg);
  }
}

@keyframes round-goat-wing-flap-near {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(-16deg);
  }
}

@keyframes round-goat-wing-flap-far {
  from {
    transform: scaleX(-1) rotate(0deg);
  }
  to {
    transform: scaleX(-1) rotate(-16deg);
  }
}

.round__goat-run {
  position: fixed;
  top: 50%;
  left: 0;
  z-index: 9999;
  pointer-events: none;
}

.round__goat-run--ltr {
  animation: round-goat-run-ltr 4.5s linear forwards;
}

.round__goat-run--rtl {
  animation: round-goat-run-rtl 4.5s linear forwards;
}

.round__goat-run--winged.round__goat-run--ltr {
  animation-name: round-goat-fly-ltr;
}

.round__goat-run--winged.round__goat-run--rtl {
  animation-name: round-goat-fly-rtl;
}

.round__goat-run__img {
  height: 143px;
  display: block;
  position: relative;
  z-index: 1;
}

.round__goat-run__img--flipped {
  transform: scaleX(-1);
}

.round__goat-run__wings {
  position: absolute;
  inset: 0;
  transform-origin: center;
}

.round__goat-run__wing {
  position: absolute;
  bottom: 50%;
  right: 50%;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  font-size: 86px;
  line-height: 1;
  color: #e8bd3c;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
  transform-origin: 94% 62%;
  animation: round-goat-wing-flap-near 0.22s ease-in-out infinite alternate;
}

.round__goat-run__wing--far {
  animation-name: round-goat-wing-flap-far;
  opacity: 0.85;
}

button.fbt.goat .goat-icon {
  height: 22px;
  vertical-align: middle;
}

button.fbt.goat.goat--winged .goat-icon {
  filter: drop-shadow(0 0 3px rgba(255, 210, 90, 0.85));
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQvY3NzL2J1aWxkL3JvdW5kLmRhcmsuY3NzIiwic291cmNlcyI6WyJyb3VuZC9jc3MvYnVpbGQvcm91bmQuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJyb3VuZC9jc3MvYnVpbGQvX3JvdW5kLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC1yZXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb2xvci1pY29uLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY3Jvc3N0YWJsZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZidC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2dsb3dpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbm93LXBsYXlpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250ZXh0LXN0cmVhbWVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9femVuLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19jbW4tdG9nZ2xlLnNjc3MiLCJjaGVzcy9jc3MvX3ZhcmlhbnQtc3R5bGUuc2NzcyIsImNoZXNzL2Nzcy9fcHJvbW90aW9uLnNjc3MiLCJjaGVzcy9jc3MvX2JsaW5kZm9sZC5zY3NzIiwiY2hhdC9jc3MvX2NoYXQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwiY2hhdC9jc3MvX3ByZXNldC5zY3NzIiwicm91bmQvY3NzL19yb3VuZC5zY3NzIiwicm91bmQvY3NzL19jb25zdGFudHMuc2NzcyIsInJvdW5kL2Nzcy9fbGF5b3V0LnNjc3MiLCJyb3VuZC9jc3MvX2FwcC1sYXlvdXQuc2NzcyIsInJvdW5kL2Nzcy9femVuLnNjc3MiLCJyb3VuZC9jc3MvX3NpZGUuc2NzcyIsInJvdW5kL2Nzcy9fbWV0YS5zY3NzIiwicm91bmQvY3NzL190YWJsZS5zY3NzIiwicm91bmQvY3NzL191c2VyLnNjc3MiLCJyb3VuZC9jc3MvX2Nsb2NrLnNjc3MiLCJyb3VuZC9jc3MvX21hdGVyaWFsLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbWF0ZXJpYWwuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMtY29sMS5zY3NzIiwicm91bmQvY3NzL19tb3Zlcy1jb2wyLnNjc3MiLCJyb3VuZC9jc3MvX2NvbnRyb2wuc2NzcyIsInJvdW5kL2Nzcy9faWNvbi5zY3NzIiwicm91bmQvY3NzL19ub3ctcGxheWluZy5zY3NzIiwicm91bmQvY3NzL19rZXlib2FyZC1tb3ZlLnNjc3MiLCJyb3VuZC9jc3MvX2ZvcmVjYXN0LWluZm8uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2RhcmsnO1xuQGltcG9ydCAncm91bmQnO1xuIiwiQGltcG9ydCAnZGVmYXVsdCc7XG5cbiR0aGVtZTogJ2RhcmsnO1xuJGNvbG9yLXNjaGVtZTogJ2RhcmsnO1xuJHRoZW1lLWxpZ2h0OiBmYWxzZTtcbiR0aGVtZS1kYXJrOiB0cnVlO1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOCUpO1xuJGMtYmctaGlnaDogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMTQlKTtcbiRjLWJnLWxvdzogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIlKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE4JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIzJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCAxNiUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDczJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA2MCUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNDIlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCA4OSUpO1xuJGMtc2hhZGU6IGMtbGlnaHQoJGMtZm9udCwgMzAlKTtcbiRjLWZvbnQtcGFnZTogJGMtZm9udC1kaW07XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc5JSwgNTYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5LCAxNSUpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQzJSk7XG5cbi8qIE51bWJlciBkcmF3biBvbiB0aGUgc3RyZWFrIHdpbmdzOiBzaWx2ZXIgd2l0aCBhIGhpZ2hsaWdodCBhYm92ZSBhbmQgYSBzaGFkZVxuICAgYmVsb3csIHNvIGl0IHJlYWRzIGFzIGJydXNoZWQgbWV0YWwgcmF0aGVyIHRoYW4gZmxhdCBncmV5LiBHcmFkaWVudCB0ZXh0IGlzIG5vdFxuICAgYW4gb3B0aW9uIC0gYmFja2dyb3VuZC1jbGlwOnRleHQgcGFpbnRzIGFsbW9zdCBub3RoaW5nIGluc2lkZSB0aGUgZmxleC1jb250YWluZXJcbiAgIHBzZXVkbyB0aGF0IGRyYXdzIHRoaXMgbnVtYmVyLiBjb2hlbmNoZXNzIGFuZCB0cmFuc3AgQGltcG9ydCB0aGlzIGZpbGUuICovXG4kYy1zdHJlYWs6ICNkNWQ5ZGY7XG4kYy1zdHJlYWstc2hhZG93OiAwIC0wLjVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIDAgMC43cHggMC4zNXB4IHJnYmEoMCwgMCwgMCwgMC44KTtcbi8qIFRoZSBzaGluZSB0cmVhdG1lbnQgY2xpcHMgdGhlIGdyYWRpZW50IHRvIHRoZSBnbHlwaHMsIGFuZCBhIHRleHQtc2hhZG93IHdvdWxkXG4gICBwYWludCBvdmVyIHRoYXQgY2xpcHBlZCBiYWNrZ3JvdW5kIC0gc28gdGhlIHNhbWUgYmV2ZWwgaXMgZXhwcmVzc2VkIGFzIGEgZmlsdGVyLiAqL1xuJGMtc3RyZWFrLWZpbHRlcjogZHJvcC1zaGFkb3coMCAtMC40NXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpKSBkcm9wLXNoYWRvdygwIDAuNXB4IDAuNHB4IHJnYmEoMCwgMCwgMCwgMC43NSkpO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYyJSwgNDglKTtcblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMjUlKTtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgMTMlKTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWxvdztcbiRjLXBvcHVwOiAkYy1mb250LWNsZWFyO1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctYm94O1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgMjUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDIyJSk7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4kYy1mb250LXNoYWRvdzogYmxhY2s7XG4kdGV4dC1zaGFkb3c6IG5vbmU7XG5cbkBtaXhpbiBtZXRhbC1iZyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyKSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTkpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjUpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMikgMTAwJSk7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge1xufVxuIiwiQGltcG9ydCAnLi4vYWJzdHJhY3QvZnVuY3Rpb25zJztcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3NyUsIDQ2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6IGhzbCgyMiwgMTAwJSwgNDIlKTtcbiRjLWFjY2VudC1kaW06IGMtZGltbWVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtY2xlYXI6IGMtY2xlYXJlcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBhY2NlbnQgYmFja2dyb3VuZCAqL1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDglKTtcbiRjLWJyYWctb3ZlcjogI2ZmZjtcblxuLyogTnVtYmVyIGRyYXduIG9uIHRoZSBzdHJlYWsgd2luZ3MuIERhcmsgaW5rIHJlYWRzIGFnYWluc3QgdGhlIGdvbGQ7IGRhcmsgdGhlbWVzXG4gICAoZGFyaywgY29oZW5jaGVzcywgdHJhbnNwKSBvdmVycmlkZSB0aGlzIHBhaXIgd2l0aCBtZXRhbGxpYyBzaWx2ZXIuICovXG4kYy1zdHJlYWs6ICMwMDA7XG4kYy1zdHJlYWstc2hhZG93OiBub25lO1xuLyogU2FtZSBiZXZlbCBhZ2FpbiwgZm9yIGJyb3dzZXJzIHRoYXQgdGFrZSB0aGUgZ3JhZGllbnQtY2xpcCBwYXRoLiAqL1xuJGMtc3RyZWFrLWZpbHRlcjogbm9uZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBFcnJvcjogcmVkICovXG4kYy1yZWQ6IGhzbCgwLCA2MCUsIDUwJSk7XG4kYy1lcnJvcjogJGMtcmVkO1xuJGMtZXJyb3Itb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEhlYXJ0OiByZWQgKi9cbiRjLWhlYXJ0OiAkYy1lcnJvcjtcbiRjLWhlYXJ0LW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjElLCA2MiUpO1xuJGMtZmFuY3ktb3Zlcjogd2hpdGU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDM1JSk7XG4kYy1saW5rLW92ZXI6ICRjLXByaW1hcnktb3ZlcjtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgOTglKTtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDg1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCA4MCUpO1xuXG4kYy1wYWdlLW1hc2s6IGhzbGEoMCwgMCwgMCUsIDAuNik7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1oaWdoO1xuJGMtcG9wdXA6ICRjLWZvbnQ7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1mb250LXNoYWRvdzogd2hpdGU7XG4kdGV4dC1zaGFkb3c6IDAgMXB4IDAgJGMtZm9udC1zaGFkb3c7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWxvdztcblxuLyogQm9yZGVycyAqL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHg7XG4kYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbi8qIFNoYWRvd3MgKi9cblxuJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE1Nyk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCcjeyRpbWctcGF0aH0vI3skcGF0aH0nKTtcbn1cbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvcGx1Z2luJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL2Nvb3Jkcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2xheW91dC91bmlib2FyZCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ib2FyZC1yZXNpemUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29sb3ItaWNvbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jcm9zc3RhYmxlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2ZidCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9nbG93aW5nJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Jhci1nbGlkZXInO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvbm93LXBsYXlpbmcnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29udGV4dC1zdHJlYW1lcic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC96ZW4tdG9nZ2xlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvZm9ybS9jbW4tdG9nZ2xlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy92YXJpYW50LXN0eWxlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy9wcm9tb3Rpb24nO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hlc3MvY3NzL2JsaW5kZm9sZCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGF0L2Nzcy9jaGF0JztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoYXQvY3NzL3ByZXNldCc7XG5AaW1wb3J0ICcuLi9yb3VuZCc7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIENTUyBtb2R1bGVzICovXG5cbkBpbXBvcnQgJy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludCc7XG5cbkBpbXBvcnQgJ2Fic3RyYWN0L2FsbCc7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIkBpbXBvcnQgJ2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd6LWluZGV4JztcbkBpbXBvcnQgJ21lZGlhLXF1ZXJpZXMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ3VuaWJvYXJkJztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICdleHRlbmRzJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYm94JztcbkBpbXBvcnQgJ2ZsdWlkLXNpemUnO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcbiAgJ2NnX19wcm9tb3Rpb24nOiAyMDUsXG4gICdjZ19fcGllY2UuZHJhZ2dpbmcnOiAyMDQsXG4gICdjZ19fYm9hcmQub3ZlcmxheSc6IDEwMCxcbiAgJ2NnX19waWVjZS5hbmltJzogMyxcbiAgJ2NnX19zdmcuY2ctc2hhcGVzJzogMixcbiAgJ2NnX19zdmcuY2ctY3VzdG9tLXN2Z3MnOiA0LFxuICAnY2dfX3BpZWNlJzogMixcbiAgJ2NnX19waWVjZS5mYWRpbmcnOiAxLFxuICAncG93ZXJ0aXAnOiAxMjAsXG4gICdjb21wbGV0ZSc6IDExMixcbiAgJ2lucXVpcnknOiAxMTEsXG4gICd6ZW4tdG9nZ2xlJzogMTEwLFxuICAnbW9kYWwnOiAxMTAsXG4gICdtc2VsZWN0JzogMTEwLFxuICAndG9wbmF2JzogMTEwLFxuICAnZnVsbHNjcmVlbi1tYXNrJzogMTA5LFxuICAnZHJvcGRvd24nOiAxMDgsXG4gICdjb250ZXh0LW1lbnUnOiAxMDcsXG4gICdzaXRlLWhlYWRlcic6IDEwNixcbiAgJ3JlY29ubmVjdGluZyc6IDEwNSxcbiAgJ3RvdXItcmVtaW5kZXInOiAxMDQsXG4gICdtei1tZW51JzogNCxcbiAgJ2Fib3ZlLWxpbmstb3ZlcmxheSc6IDMsXG4gICdmcmllbmQtYm94JzogMixcbiAgJ2xpbmstb3ZlcmxheSc6IDIsXG4gICdnYW1lLWJvb2ttYXJrJzogMixcbiAgJ3N1Ym5hdi1zaWRlJzogMixcbiAgJ2RlZmF1bHQnOiAwLFxuKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC1sYXJnZTogbWF4LXdpZHRoIDExMTlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6ICdob3ZlcjogaG92ZXInO1xuJG1xLWhvdmVyLW5vOiBob3ZlciBub25lO1xuXG4vKiBBbGlhc2VzICovXG5cbiRtcS1tYWluLW1hcmdpbjogJG1xLXNtYWxsO1xuXG4kbXEtdG9wbmF2LXZpc2libGU6ICRtcS1tZWRpdW07XG4kbXEtdG9wbmF2LWhpZGRlbjogJG1xLW5vdC1tZWRpdW07XG5cbiRtcS1zaXRlLWhlYWRlci10YWxsOiAkbXEtdGFsbDtcblxuJG1xLXN1Ym5hdi10b3A6ICRtcS1ub3Qtc21hbGw7XG4kbXEtc3VibmF2LXNpZGU6ICRtcS1zbWFsbDtcblxuJG1xLXpvb20tZW5hYmxlZDogJG1xLXNtYWxsICRtcS1zaG9ydDtcbiIsIiRkZWJ1ZzogZmFsc2U7XG5cbiRmb250LXBhdGg6ICcuLi9mb250JztcbiRpbWctcGF0aDogJy4uL2ltYWdlcyc7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKFxuICAxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc31cbik7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6IDVyZW07XG4iLCJAbWl4aW4gYm94LXJhZGl1cyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBib3gtbmVhdCB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBkZWJ1Zy16b29tLWlucHV0IHtcbiAgI3pvb20taW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYm90dG9tOiAzcHg7XG4gICAgICByaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDEwdnc7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wOiBhbGwsICRkdXI6ICR0cmFuc2l0aW9uLWR1cmF0aW9uKSB7XG4gIHRyYW5zaXRpb246ICRwcm9wICRkdXI7XG59XG5cbkBtaXhpbiBob3ZlcmZsb3cge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpub3QoOmhvdmVyKSB7XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhpZGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLWxhcmdlIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiA3IDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1zbWFsbCB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGJvZHktZml4ZWQtc2Nyb2xsIHtcbiAgYm9keSB7XG4gICAgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGlja2VyIHdoZW4gZHJhZ2dpbmcgYSBwaWVjZSBvdXQgKi9cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIiViYXNlLWZvbnQtZmFsbGJhY2sge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiViYXNlLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8ge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8tZmF0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4lY2hlc3MtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcycsICdOb3RvIFNhbnMnO1xufVxuXG4lc2FuIHtcbiAgQGV4dGVuZCAlY2hlc3MtZm9udDtcblxuICAucGllY2UtbGV0dGVyICYge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcbiAgfVxuXG4gIGRyYXcge1xuICAgIEBleHRlbmQgJXJvYm90bztcbiAgICBtYXJnaW4tbGVmdDogMWNoO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IGJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbiAgYWxpZ24taXRlbXM6IG5vcm1hbDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbTtcblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeS1kaW1tZXI7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1zZWNvbmRhcnktZGltO1xuICB9XG59XG5cbiVmb2N1cy1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAkYy1mb250LWRpbTtcbn1cblxuJXphbGdvdmVyZmxvdyB7XG4gIC8vIG1pdGlnYXRlIHphbGdvIHRleHRcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1oaWRkZW4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWVsbGlwc2lzIHtcbiAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuJWJveC1wYWRkaW5nIHtcbiAgcGFkZGluZzogNXZoIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJveC1wYWRkaW5nLWhvcml6IHtcbiAgcGFkZGluZzogMCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVicmVhay13b3JkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLXdvcmQtaGFyZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAvKiBzdXBwb3J0OiBmaXJlZm94ICovXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay1ub3BlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbiVlbGxpcHNpcyB7XG4gIEBpbmNsdWRlIGVsbGlwc2lzO1xufVxuXG4lc3F1YXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbiV2aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcblxuICAvKiAxNi85ICovXG4gIC8vIHBhZGRpbmctYm90dG9tOiA3NSU7IC8qIDQvMyAqL1xuICB3aWR0aDogMTAwJTtcblxuICA+ICoge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuJWdhbWUtZW1iZWQge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTYwJTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooJ2Z1bGxzY3JlZW4tbWFzaycpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooJ2xpbmstb3ZlcmxheScpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuJWRvdWJsZS10YXAge1xuICAvLyBwcmV2ZW50IGlQYWQgc2FmYXJpIGZyb20gem9vbWluZyBpbiBvbiBkb3VibGUgdGFwXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYyhcbiAgICAgICAgICAjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKlxuICAgICAgICAgICAgKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiY29vcmRzIHtcbiAgLyogaGFuZGxlIGhpZGRlbiBjb29yZHMgKi9cbiAgLmNvb3Jkcy1ubyAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLyogaGFuZGxlIGlubmVyIGNvb3JkcyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDhweCwgMTJweCk7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4ICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICYucmFua3Mge1xuICAgIGZsZXgtZmxvdzogY29sdW1uLXJldmVyc2U7XG4gICAgdG9wOiAxcHg7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICAvLyBhIG5lZ2F0aXZlIHZhbHVlIGNyZWF0ZXMgZW1wdHkgc3BhY2Ugb24gdGhlIHJpZ2h0IHNpZGUgaW4gbW9iaWxlIGJyb3dzZXJzXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAwLjhlbTtcblxuICAgICYuYmxhY2sge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgJi5maWxlcyB7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgbGVmdDogMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZsZXgtZmxvdzogcm93O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMS40ZW07XG5cbiAgICAmLmJsYWNrIHtcbiAgICAgIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gICAgfVxuXG4gICAgY29vcmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgfVxuICB9XG5cbiAgY29vcmQge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLyogbmVnYXRlIGlubmVyIGNvb3JkcyBjb2xvcnMgKi9cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzIGNvb3JkIHtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggIzAwMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzLmZpbGVzIHtcbiAgICBib3R0b206IGNhbGMoMXB4IC0gMi41JSk7XG5cbiAgICBjb29yZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgICB9XG4gIH1cbn1cblxuQGltcG9ydCAnY29vcmRzLWNvbG9ycyc7XG5cbi8qIGhhbmRsZSBvdXRlciBjb29yZHMgKi9cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQpIHtcbiAgLmNvb3Jkcy1vdXQgY29vcmRzIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcblxuICAgICYucmFua3Mge1xuICAgICAgcmlnaHQ6IC0xNXB4O1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEycHg7XG5cbiAgICAgIGNvb3JkIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQyJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxlcyB7XG4gICAgICBib3R0b206IC0xNXB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuY29vcmRzLW91dCBjb29yZHMucmFua3MsXG4gIC5jb29yZHMtb3V0IC5pczJkIGNvb3Jkcy5maWxlcyB7XG4gICAgY29vcmQge1xuICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiJGNvb3JkLWNvbG9yLWRlZmF1bHQ6ICNmZmY7XG4kY29vcmQtc2hhZG93LWRlZmF1bHQ6IDAgMXB4IDJweCAjMDAwO1xuXG5jb29yZHMge1xuICB0ZXh0LXNoYWRvdzogdmFyKC0tY2ctY3MsICRjb29yZC1zaGFkb3ctZGVmYXVsdCk7XG59XG5cbi5vcmllbnRhdGlvbi13aGl0ZSAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSksXG4ub3JpZW50YXRpb24td2hpdGUgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24tYmxhY2sgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpIHtcbiAgY29sb3I6IHZhcigtLWNnLWNjdywgJGNvb3JkLWNvbG9yLWRlZmF1bHQpO1xufVxuXG4ub3JpZW50YXRpb24td2hpdGUgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24td2hpdGUgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSxcbi5vcmllbnRhdGlvbi1ibGFjayAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKSB7XG4gIGNvbG9yOiB2YXIoLS1jZy1jY2IsICRjb29yZC1jb2xvci1kZWZhdWx0KTtcbn1cbiIsImJvZHkge1xuICAtLWJvYXJkLXNjYWxlOiAxO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgIC8vIC0tem9vbTogODA7IGRlZmluZWQgaW4gdGhlIEhUTUwsIGxvYWRlZCBmcm9tIHNlcnZlclxuICAgIC0tYm9hcmQtc2NhbGU6IGNhbGMoKHZhcigtLXpvb20pIC8gMTAwKSAqIDAuNyArIDAuMyk7XG4gIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMS11bmlib2FyZCkge1xuICBib2R5IHtcbiAgICAtLWNvbDE6IDE7XG4gIH1cblxuICAubWFpbi1ib2FyZCBjZy1ib2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxufVxuIiwiYm9keS5yZXNpemluZyB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5jZy1yZXNpemUge1xuICAkcmVzaXplLXdpZHRoOiAyMnB4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtYm9hcmQtcmVzaXphYmxlKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAjezEzcHggLSAkcmVzaXplLXdpZHRofTtcbiAgICBib3R0b206ICN7MTNweCAtICRyZXNpemUtd2lkdGh9O1xuICAgIHdpZHRoOiAkcmVzaXplLXdpZHRoO1xuICAgIGhlaWdodDogJHJlc2l6ZS13aWR0aDtcbiAgICBjdXJzb3I6IG53c2UtcmVzaXplO1xuICAgIHotaW5kZXg6IDEwO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHdpZHRoOiA1cHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg3cHgsIDhweCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMXB4LCA2cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjUpO1xuICAgIH1cblxuICAgIC5yZXNpemluZyAmIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC41KTtcbiAgICB9XG4gIH1cbn1cbiIsIi5jb2xvci1pY29uIHtcbiAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC9JztcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC9JztcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Avic7XG4gICAgfVxuICB9XG5cbiAgJi5yYW5kb206OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6Bnyc7XG4gIH1cbn1cbiIsIkBpbmNsdWRlIGNyb3NzdGFibGUtc21hbGw7XG5cbi5jcm9zc3RhYmxlIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIGxpbmUtaGVpZ2h0OiAxLjllbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuXG4gIGZpbGwsXG4gIHBvdnMge1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIHBvdnMsXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSxcbiAgJl9fbWF0Y2h1cCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAvKiDilIDilIDilIAgVGFiIGJhciAoZnVsbCB3aWR0aCBmaXJzdCByb3csIHJlc3QgdW53cmFwcGVkIG9uIHNlY29uZCByb3cpIOKUgOKUgOKUgCAqL1xuICAmX190YWJzIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG5cbiAgJl9fdGFiIHtcbiAgICBmbGV4OiAxIDEgNTAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjJlbSAwLjVlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGNvbG9yIDAuMTVzO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAxMCUpO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG5cbiAgLyog4pSA4pSA4pSAIEZpbHRlcmVkIHZpZXc6IGhpZGUgbm9uLW1hdGNoaW5nIHBvdnMg4pSA4pSA4pSAICovXG4gICYtLWZpbHRlcmVkIHBvdnM6bm90KC5tYXRjaGluZykge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG4gIH1cblxuICAmX191c2VycyB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBtYXgtd2lkdGg6IDQwdnc7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX3Njb3JlIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX21hdGNodXAge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICBwb3ZzIHtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgIH1cblxuICAgICYuY3VycmVudCBhIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgNzAlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICYubmV3IHtcbiAgICAgIGJvcmRlcjogJGMtYm9yZGVyO1xuICAgIH1cblxuICAgIGEubG9zcyB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXgtc21hbGwpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICY6bnRoLWxhc3QtY2hpbGQoLW4gKyAxMikge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zZXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcblxuICAgIGJvcmRlci1sZWZ0OiAkYm9yZGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbiAgfVxuXG4gIC53aW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG5cbiAgLmxvc3Mge1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cblxuICAudW5hdmFpbGFibGUge1xuICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG59XG4iLCIuZmJ0IHtcbiAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG5cbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpob3Zlcjpub3QoLmRpc2FibGVkKTpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA3NSUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJltkaXNhYmxlZF0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgZ2xvd2luZyB7XG4gIDQyJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMjAlKTtcbiAgfVxuXG4gIDU4JSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4uZ2xvd2luZyB7XG4gIGFuaW1hdGlvbjogZ2xvd2luZyAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbiIsIkBrZXlmcmFtZXMgYmFyLWdsaWRlci1hbmltIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTMwMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMTAwcHgpO1xuICB9XG59XG5cbi5iYXItZ2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpKTtcbiAgICBhbmltYXRpb246IGJhci1nbGlkZXItYW5pbSAzcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgodmFyKC0tbnAtbWluLXdpZHRoKSwgMWZyKSk7XG5cbiAgPiBhIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwYWRkaW5nOiAwLjNlbTtcbiAgfVxuXG4gIC5pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGNnLWJvYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCIuY29udGV4dC1zdHJlYW1lcnMge1xuICBtYXgtaGVpZ2h0OiAyMHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uY29udGV4dC1zdHJlYW1lciB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLWJvdHRvbSwgJWJveC1zaGFkb3csICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgaGVpZ2h0OiAyLjJlbTtcbiAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDYwJSk7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuNGVtO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgODAlKTtcbiAgfVxufVxuIiwiI3plbnRvZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xuICBvcGFjaXR5OiAwLjU7XG4gIHotaW5kZXg6IHooJ3plbi10b2dnbGUnKTtcbiAgZGlzcGxheTogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG5cbiAgYm9keS5wbGF5aW5nLnplbiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbiIsIi5jbW4tdG9nZ2xlIHtcbiAgQGV4dGVuZCAlZG91YmxlLXRhcDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tbGVmdDogLTk5OTk5cHg7XG59XG5cbi5jbW4tdG9nZ2xlICsgbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHBhZGRpbmc6IDFweDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb250ZW50OiAnJztcbiAgICB3aWR0aDogMjJweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gIH1cblxuICAmOjpiZWZvcmUge1xuICAgIEBleHRlbmQgJWRhdGEtaWNvbjtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICB6LWluZGV4OiAxO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMi41cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICB9XG59XG5cbi5jbW4tdG9nZ2xlOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1mb250LWRpbW1lcjtcbn1cblxuLmNtbi10b2dnbGU6Y2hlY2tlZCArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtZ29vZDtcbn1cblxuLmNtbi10b2dnbGU6ZGlzYWJsZWQgKyBsYWJlbCB7XG4gIG9wYWNpdHk6IDYwJTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xufVxuXG4uY21uLXRvZ2dsZTpmb2N1czpub3QoOmRpc2FibGVkKSArIGxhYmVsIHtcbiAgQGV4dGVuZCAlZm9jdXMtc2hhZG93O1xufVxuXG4uY21uLXRvZ2dsZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICsgbGFiZWwge1xuICAgIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRyYW5zaXRpb246IG1hcmdpbiAkdHJhbnNpdGlvbi1kdXJhdGlvbiwgY29sb3IgJHRyYW5zaXRpb24tZHVyYXRpb247XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG1hcmdpbik7XG4gICAgfVxuICB9XG59XG5cbi5jbW4tdG9nZ2xlOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCB7XG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6Avyc7XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZS0tc3VidGxlOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCB7XG4gICY6OmJlZm9yZSB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICB9XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAn7oC4JztcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxufVxuIiwiLnZhcmlhbnQtcmFjaW5nS2luZ3MgLmNnLXdyYXAge1xuICAmLmNnLXdyYXAgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIEBleHRlbmQgJXBvcHVwLXNoYWRvdztcblxuICAgIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkwJSwgMC4yKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEyLjUlO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAmLm9yaWVudGF0aW9uLXdoaXRlIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICB0b3A6IDA7XG4gIH1cblxuICAmLm9yaWVudGF0aW9uLWJsYWNrIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBib3R0b206IDA7XG4gIH1cbn1cblxuLnZhcmlhbnQta2luZ09mVGhlSGlsbCBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gIHdpZHRoOiAyNSU7XG4gIGhlaWdodDogMjUlO1xuICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkwJSwgMC4yKTtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzNy41JTtcbiAgbGVmdDogMzcuNSU7XG4gIHotaW5kZXg6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuIiwiI3Byb21vdGlvbi1jaG9pY2Uge1xuICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1iZy1wYWdlLCAwLjMpO1xuICB6LWluZGV4OiB6KCdjZ19fcHJvbW90aW9uJyk7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogdmFyKC0tY2ctd2lkdGgsIDEwMCUpO1xuICBoZWlnaHQ6IHZhcigtLWNnLWhlaWdodCwgMTAwJSk7XG4gIHJpZ2h0OiAwO1xuXG4gIHNxdWFyZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiMGIwO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyNXB4IDNweCAjODA4MDgwO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgfVxuXG4gIHBpZWNlIHtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBvcGFjaXR5OiAxO1xuXG4gICAgLyogY2FuY2VscyBibGluZGZvbGQgKi9cbiAgfVxuXG4gIC5pczJkICYgcGllY2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gIH1cblxuICBzcXVhcmU6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA0OHB4IDhweCAkYy1hY2NlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMCU7XG4gIH1cblxuICAuaXMyZCAmIHNxdWFyZTpob3ZlciBwaWVjZSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4iLCIuYmxpbmRmb2xkIHtcbiAgJi5tYWluLWJvYXJkIHBpZWNlLFxuICAubm93LXBsYXlpbmcgcGllY2Uge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAmLm1haW4tYm9hcmQgLmNoZWNrIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyJztcblxuQGltcG9ydCAndGFiJztcbkBpbXBvcnQgJ21lbWJlcnMnO1xuQGltcG9ydCAnZGlzY3Vzc2lvbic7XG5AaW1wb3J0ICdwYWxhbnRpcic7XG5cbi5tY2hhdCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgZ3JpZC1hcmVhOiBjaGF0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYubm90ZSB0ZXh0YXJlYSB7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBsaW5lLWhlaWdodDogMS43ZW07XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgcmVzaXplOiBub25lO1xuXG4gICAgICAvLyBQcmV2ZW50IFNhZmFyaSBpT1MgYXV0by16b29tIHdoZW4gZm9jdXNlZCAodHJpZ2dlcmVkIHdoZW4gZm9udC1zaXplIDwgMTZweClcbiAgICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1pbi1oZWlnaHQ6IDE1ZW07XG59XG4iLCJib2R5Ojotd2Via2l0LXNjcm9sbGJhcixcbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gIHdpZHRoOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbn1cblxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX3RhYnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmX190YWIge1xuICAgIEBleHRlbmQgJXJvYm90bywgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLXRvcDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjRlbSAxMHB4O1xuXG4gICAgLy8gYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3ggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICBAZXh0ZW5kICVjaGVja2JveDtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSBpbnB1dCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtb3B0aW9uYWwgLm1jaGF0X190YWIuZGlzY3Vzc2lvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuIiwiLmNoYXRfX21lbWJlcnMge1xuICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgZm9udC1zaXplOiAwLjllbTtcblxuICAvLyBtaW4taGVpZ2h0OiA1ZW07XG4gIC8vIG1heC1oZWlnaHQ6IDllbTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICZfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB9XG5cbiAgJl9fbnVtYmVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAxY2g7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjJjaDtcbiAgICB9XG4gIH1cbn1cbiIsIi5tY2hhdCB7XG4gICZfX21lc3NhZ2VzIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWF4LWhlaWdodDogNTB2aDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMtdW5pYm9hcmQpIHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgfVxuXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgY3Vyc29yOiBpbml0aWFsO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgICBsaSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nOiAwLjVlbSA1cHggMC41ZW0gMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuXG4gICAgICAmLm1lIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkYy1zZWNvbmRhcnktZGltO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICAgIH1cblxuICAgICAgJi5ob3N0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYy1zZWNvbmRhcnktZGltLCAwLjQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kZWxldGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAuc3lzdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5hbm5vdW5jZW1lbnQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAuY29sb3IsXG4gICAgLnVzZXItbGluayB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNGVtO1xuICAgICAgbWF4LXdpZHRoOiAxMTBweDtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB9XG5cbiAgICBsaW5lLnBhdHJvbiB7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgd2lkdGg6IDEuMmVtO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgIC51dGl0bGUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgfVxuXG4gICAgYTpub3QoLnVzZXItbGluaykge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNXB4O1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICAgIHBhZGRpbmc6IDFweCA1cHg7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICBjb2xvcjogJGMtYWNjZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaTpob3ZlciBpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMCAycHggJGMtYmctYm94LCAwIDAgNXB4ICRjLWJnLWJveCwgMCAwIDEwcHggJGMtYmctYm94O1xuICAgIH1cblxuICAgIGxpLm1lIGkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICZfX3NheSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBwYWRkaW5nOiAzcHggMjBweCAzcHggNHB4O1xuXG4gICAgLy8gUHJldmVudCBTYWZhcmkgaU9TIGF1dG8tem9vbSB3aGVuIGlucHV0IGlzIGZvY3VzZWQgKHRyaWdnZXJlZCB3aGVuIGZvbnQtc2l6ZSA8IDE2cHgpXG4gICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cblxuICAgICYud2hpc3BlciB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgfVxufVxuIiwiQGtleWZyYW1lcyBwYWxhbnRpci1nbG93aW5nIHtcbiAgNDAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA2MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA3MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cbn1cblxuLnBhbGFudGlyIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIGFuaW1hdGlvbjogcGFsYW50aXItZ2xvd2luZyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICBib3JkZXItcmFkaXVzOiAwIDNweCAwIDA7XG5cbiAgJi1zbG90IHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogMC42O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gICYtb2ZmIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAmLW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlciAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICB0b3A6IDFweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLm1jaGF0IHtcbiAgJl9fcHJlc2V0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMS40ZW07XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICBzcGFuIHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgICBib3JkZXItd2lkdGg6IDFweCAxcHggMCAwO1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuXG4gICAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICAgICAgICBjb2xvcjogJGMtYWNjZW50LW92ZXI7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0ICdjb25zdGFudHMnO1xuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ2FwcC1sYXlvdXQnO1xuQGltcG9ydCAnemVuJztcbkBpbXBvcnQgJ3NpZGUnO1xuQGltcG9ydCAnbWV0YSc7XG5AaW1wb3J0ICd0YWJsZSc7XG5AaW1wb3J0ICd1c2VyJztcbkBpbXBvcnQgJ2Nsb2NrJztcbkBpbXBvcnQgJ21hdGVyaWFsJztcbkBpbXBvcnQgJ21vdmVzJztcbkBpbXBvcnQgJ2NvbnRyb2wnO1xuQGltcG9ydCAnaWNvbic7XG5AaW1wb3J0ICdub3ctcGxheWluZyc7XG5AaW1wb3J0ICdrZXlib2FyZC1tb3ZlJztcbkBpbXBvcnQgJ2ZvcmVjYXN0LWluZm8nO1xuXG4vLyBHb2F0IHJ1biBhbmltYXRpb24gKFNoaWZ0K0cgZm9yIG1yY29oZW5vcylcbkBrZXlmcmFtZXMgcm91bmQtZ29hdC1ydW4tbHRyIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwcHgpIHRyYW5zbGF0ZVkoLTUwJSk7IH1cbiAgdG8gICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgMjAwcHgpKSB0cmFuc2xhdGVZKC01MCUpOyB9XG59XG5cbkBrZXlmcmFtZXMgcm91bmQtZ29hdC1ydW4tcnRsIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgMjAwcHgpKSB0cmFuc2xhdGVZKC01MCUpOyB9XG4gIHRvICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMHB4KSB0cmFuc2xhdGVZKC01MCUpOyB9XG59XG5cbi8vIFdpbmdlZCBnb2F0LCBsZWcgMTogcnVucyA0NSUgb2YgdGhlIHdheSBhY3Jvc3MsIHRoZW4gY2xpbWJzIGF3YXkgYW5kIGxlYXZlc1xuLy8gdGhyb3VnaCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuIGF0IGEgc2hhbGxvdyBhbmdsZS5cbkBrZXlmcmFtZXMgcm91bmQtZ29hdC1mbHktbHRyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwcHgpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDBkZWcpO1xuICB9XG4gIDQ1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ1dncpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKC00ZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjksIDAuNDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEwMHZ3ICsgNjAwcHgpKSB0cmFuc2xhdGVZKGNhbGMoLTUwJSAtIDM4dmgpKSByb3RhdGUoLTEyZGVnKTtcbiAgfVxufVxuXG4vLyBXaW5nZWQgZ29hdCwgbGVnIDI6IGZsaWVzIGJhY2sgaW4gZnJvbSB0aGUgcmlnaHQgc2lkZSwgdG91Y2hlcyBkb3duIG9uIHRoZVxuLy8gZ3JvdW5kIGFuZCBydW5zIG9mZiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzY3JlZW4uXG5Aa2V5ZnJhbWVzIHJvdW5kLWdvYXQtZmx5LXJ0bCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygxMDB2dyArIDI2MHB4KSkgdHJhbnNsYXRlWShjYWxjKC01MCUgLSAzNHZoKSkgcm90YXRlKDEwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLjUsIDAuNSwgMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTh2dykgdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDIwcHgpIHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDBkZWcpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcm91bmQtZ29hdC13aW5nLWZsYXAtbmVhciB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICB0byAgIHsgdHJhbnNmb3JtOiByb3RhdGUoLTE2ZGVnKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHJvdW5kLWdvYXQtd2luZy1mbGFwLWZhciB7XG4gIGZyb20geyB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgcm90YXRlKDBkZWcpOyB9XG4gIHRvICAgeyB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgcm90YXRlKC0xNmRlZyk7IH1cbn1cblxuLnJvdW5kX19nb2F0LXJ1biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDk5OTk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICYtLWx0ciB7IGFuaW1hdGlvbjogcm91bmQtZ29hdC1ydW4tbHRyIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG4gICYtLXJ0bCB7IGFuaW1hdGlvbjogcm91bmQtZ29hdC1ydW4tcnRsIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG4gICYtLXdpbmdlZC5yb3VuZF9fZ29hdC1ydW4tLWx0ciB7IGFuaW1hdGlvbi1uYW1lOiByb3VuZC1nb2F0LWZseS1sdHI7IH1cbiAgJi0td2luZ2VkLnJvdW5kX19nb2F0LXJ1bi0tcnRsIHsgYW5pbWF0aW9uLW5hbWU6IHJvdW5kLWdvYXQtZmx5LXJ0bDsgfVxuXG4gICZfX2ltZyB7XG4gICAgaGVpZ2h0OiAxNDNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICAmLS1mbGlwcGVkIHsgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOyB9XG4gIH1cblxuICAvLyBXaW5ncyBzaXQgYmVoaW5kIHRoZSBnb2F0IHNwcml0ZSwgYW5jaG9yZWQgb24gaXRzIGJhY2suIFRoZXkgYXJlIHRoZSBzYW1lXG4gIC8vIHdpbmcgc3ltYm9sIHRoZSBhcmVuYSBzdGFuZGluZ3MgZHJhdyBuZXh0IHRvIGEgcGxheWVyIG9uIGEgd2luIHN0cmVhay5cbiAgJl9fd2luZ3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gIH1cblxuICAmX193aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA1MCU7XG4gICAgcmlnaHQ6IDUwJTtcbiAgICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogODZweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogI2U4YmQzYztcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC40NSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogOTQlIDYyJTtcbiAgICBhbmltYXRpb246IHJvdW5kLWdvYXQtd2luZy1mbGFwLW5lYXIgMC4yMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuXG4gICAgJi0tZmFyIHtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiByb3VuZC1nb2F0LXdpbmctZmxhcC1mYXI7XG4gICAgICBvcGFjaXR5OiAwLjg1O1xuICAgIH1cbiAgfVxufVxuXG5idXR0b24uZmJ0LmdvYXQge1xuICAuZ29hdC1pY29uIHtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuXG4gIC8vIHRoZSBzdW1tb25hYmxlIGdvYXQgaGFzIHdpbmdzIHdoaWxlIHRoZSBwbGF5ZXIgaXMgb24gYSB3aW4gc3RyZWFrXG4gICYuZ29hdC0td2luZ2VkIC5nb2F0LWljb24ge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDNweCByZ2JhKDI1NSwgMjEwLCA5MCwgMC44NSkpO1xuICB9XG59XG4iLCIvLyBsYXlvdXRcbiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtY29sMi11bmlib2FyZDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodDogNTBweDtcbiRjb2wxLXVzZXItaGVpZ2h0OiAkY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0ICogMyAvIDU7XG4kY29sMS1tYXQtaGVpZ2h0OiAkY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0ICogMiAvIDU7XG4kY29sMS1tb3Zlcy1oZWlnaHQ6IDMuNWVtO1xuJG1vdmUtdGFnOiAndTh0JztcbiRybW92ZXMtdGFnOiAncm02JztcbiRtb3Zlcy10YWc6ICdsNHgnO1xuJGluZGV4LXRhZzogJ2k1eic7XG4kYWN0aXZlLWNsYXNzOiAnYTF0JztcbiIsIiNtYWluLXdyYXAge1xuICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBjYWxjKFxuICAgICAgMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0ICogMn0gLSAjeyRjb2wxLW1vdmVzLWhlaWdodH1cbiAgICApO1xuICB9XG59XG5cbi5yb3VuZCB7XG4gIGdyaWQtYXJlYTogbWFpbjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1nYXA6ICRibG9jay1nYXA7XG5cbiAgJl9fYXBwIHtcbiAgICBncmlkLWFyZWE6IGFwcDtcbiAgfVxuXG4gICZfX3NpZGUge1xuICAgIGdyaWQtYXJlYTogc2lkZTtcbiAgfVxuXG4gICZfX3VuZGVyYm9hcmQge1xuICAgIEBleHRlbmQgJXplbjtcblxuICAgIGdyaWQtYXJlYTogdW5kZXI7XG4gIH1cblxuICAmX19wZ24ge1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICBwYWRkaW5nOiAwIDAuNWVtO1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC4zZW07XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICB0ZXh0YXJlYSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNmVtO1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogMC44MmVtO1xuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICB9XG4gIH1cblxuICAmX191bmRlcmNoYXQge1xuICAgIEBleHRlbmQgJXplbjtcblxuICAgIGdyaWQtYXJlYTogdWNoYXQ7XG4gIH1cblxuICAmX19wdXp6bGUtbWF0Y2hlcyB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICZfX2xpc3Qge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cblxuICAmX19wdXp6bGUtbWF0Y2gtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cblxuICAmX19wdXp6bGUtbWF0Y2gge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBoZWlnaHQ6IDIwMHB4O1xuXG4gICAgJl9fYm9hcmQtLXN1Y2Nlc3M6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2Fzc2V0cy9pbWFnZXMvQ29pbkZsaXAuZ2lmJykgbm8tcmVwZWF0IDAgMDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4O1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICByaWdodDogLTJweDtcbiAgICAgIHRvcDogLTMzcHg7XG4gICAgICB6LWluZGV4OiA5OTk7XG4gICAgfVxuICB9XG5cblxuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnYXBwJyAndW5kZXInICdzaWRlJyAndWNoYXQnO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGZpdC1jb250ZW50KDApIGZpdC1jb250ZW50KDApO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdhcHAgICBhcHAnICd1bmRlciBzaWRlJyAndW5kZXIgdWNoYXQnO1xuXG4gICAgJl9fYXBwIHtcbiAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wzLXVuaWJvYXJkLXNpZGUgJGNvbDMtdW5pYm9hcmQtd2lkdGggJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBmaXQtY29udGVudCgwKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnc2lkZSAgYXBwICAgYXBwJyAndWNoYXQgdW5kZXIgLic7XG5cbiAgICBAaW5jbHVkZSBjcm9zc3RhYmxlLWxhcmdlO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMi11bmlib2FyZC1zcXVlZXplKSB7XG4gICAgLmNyb3NzdGFibGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5yY29udHJvbHMge1xuICBncmlkLWFyZWE6IGNvbnRyb2xzO1xufVxuXG4ubWF0ZXJpYWwtdG9wIHtcbiAgZ3JpZC1hcmVhOiBtYXQtdG9wO1xufVxuXG4ubWF0ZXJpYWwtYm90dG9tIHtcbiAgZ3JpZC1hcmVhOiBtYXQtYm90O1xufVxuXG4uZXhwaXJhdGlvbi10b3Age1xuICBncmlkLWFyZWE6IGV4cGktdG9wO1xufVxuXG4uZXhwaXJhdGlvbi1ib3R0b20ge1xuICBncmlkLWFyZWE6IGV4cGktYm90O1xufVxuXG4ucnVzZXItdG9wIHtcbiAgZ3JpZC1hcmVhOiB1c2VyLXRvcDtcbn1cblxuLnJ1c2VyLWJvdHRvbSB7XG4gIGdyaWQtYXJlYTogdXNlci1ib3Q7XG59XG5cbi5yY2xvY2stdG9wIHtcbiAgZ3JpZC1hcmVhOiBjbG9jay10b3A7XG59XG5cbi5yY2xvY2stYm90dG9tIHtcbiAgZ3JpZC1hcmVhOiBjbG9jay1ib3Q7XG59XG5cbi5tYXNjb3QtYm90dG9tIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEycHg7XG4gIHotaW5kZXg6IDUwO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xufVxuXG4jeyRybW92ZXMtdGFnfSxcbi5jb2wxLXJtb3Zlcy1wcmVsb2FkIHtcbiAgZ3JpZC1hcmVhOiBtb3Zlcztcbn1cblxuLmtleWJvYXJkLW1vdmUge1xuICBncmlkLWFyZWE6IGtiLW1vdmU7XG59XG5cbi5yb3VuZF9fYXBwIHtcbiAgZGlzcGxheTogZ3JpZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gJGNvbDEtdXNlci1oZWlnaHQgJGNvbDEtbWF0LWhlaWdodCBhdXRvIGF1dG8gJGNvbDEtbWF0LWhlaWdodCAkY29sMS11c2VyLWhlaWdodCBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtb3ZlcycgJ3BvY2tldC10b3AnICd1c2VyLXRvcCcgJ21hdC10b3AnICdib2FyZCcgJ2V4cGktYm90JyAnbWF0LWJvdCcgJ21hc2MtYm90JyAndXNlci1ib3QnICdwb2NrZXQtYm90JyAna2ItbW92ZScgJ2NvbnRyb2xzJztcblxuICAgIC5yY2xvY2stdG9wIHtcbiAgICAgIGdyaWQtYXJlYTogMyAvIDEgLyA1IC8gMjtcbiAgICB9XG5cbiAgICAucmNsb2NrLWJvdHRvbSB7XG4gICAgICBncmlkLWFyZWE6IDcgLyAxIC8gOSAvIDI7XG4gICAgfVxuXG4gICAgY2ctYm9hcmQge1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG5cbiAgICAuZXhwaXJhdGlvbi10b3Age1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmX190YWJsZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXdpZHRoICRjb2wyLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdib2FyZCAuJyAnYm9hcmQgbWF0LXRvcCcgJ2JvYXJkIGNsb2NrLXRvcCcgJ2JvYXJkIGV4cGktdG9wJyAnYm9hcmQgdXNlci10b3AnICdib2FyZCBtb3ZlcycgJ2JvYXJkIGNvbnRyb2xzJyAnYm9hcmQgdXNlci1ib3QnICdib2FyZCBleHBpLWJvdCcgJ2JvYXJkIGNsb2NrLWJvdCcgJ2JvYXJkIHBnci1jb3VudGVyJyAnYm9hcmQgcGdyLWhvd3RvJyAnYm9hcmQgcGdyLWFycm93LXRvZycgJ2JvYXJkIG1hdC1ib3QnICdib2FyZCBtYXNjLWJvdCcgJ2JvYXJkIC4nICdrYi1tb3ZlIC4nO1xuICAgIGdyaWQtY29sdW1uLWdhcDogJGJsb2NrLWdhcDtcblxuICAgICZfX3RhYmxlIHtcbiAgICAgIGdyaWQtYXJlYTogNCAvIDIgLyAxMCAvIDM7XG4gICAgfVxuXG4gICAgLmV4cGlyYXRpb24tdG9wIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgI3skcm1vdmVzLXRhZ30ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgIH1cblxuICAgICN7JG1vdmVzLXRhZ30ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxuXG4gICAgLmtleWJvYXJkLW1vdmUge1xuICAgICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaG9ydCkge1xuICAgICAgI3skbW92ZXMtdGFnfSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMi11bmlib2FyZC1zcXVlZXplKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoICRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU7XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAjeyRibG9jay1nYXAgKiAzIC8gMn07XG4gIH1cblxuICAmX19ib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiBib2FyZDtcbiAgfVxufVxuXG4ubWFzY290IHtcbiAgd2lkdGg6IDQwMHB4O1xuICBoZWlnaHQ6IDI2MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4vKiB3cmFwcGVyIHRoYXQgbW92ZXMgbGVmdC9yaWdodCAqL1xuLm1hc2NvdC1zcHJpdGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcblxuICAvKiDinIUgcGFjaW5nIGJ5IGRlZmF1bHQgKG1vdmVzICsgc2V0cyBmYWNpbmcgYXQgYm91bmRzKSAqL1xuICBhbmltYXRpb246IG1hc2NvdFBhY2UgNnMgbGluZWFyIGluZmluaXRlO1xufVxuXG4vKiB2aWRlbyBmbGlwcyBiYXNlZCBvbiBDU1MgdmFyIHNldCBieSBtYXNjb3RQYWNlXG4gICAoSlMgdGFnLWNoYXNlIGNhbiBvdmVycmlkZSB3aXRoIGlubGluZSB0cmFuc2Zvcm07IGNsZWFyIGlubGluZSBvbiBjaGFzZSBlbmQpICovXG4ubWFzY290LXZpZGVvIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAyODBweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuXG4gIHRyYW5zZm9ybTogc2NhbGVYKHZhcigtLW1hc2NvdC1mbGlwLCAxKSk7XG59XG5cbi8qIGR1cmluZyB0YWc6IHBhdXNlIENTUyBwYWNpbmcgc28gSlMgY2FuIHRyYW5zbGF0ZSB3cmFwcGVyICovXG4ubWFzY290LS1wYXVzZWQgLm1hc2NvdC1zcHJpdGUge1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7XG59XG5cbkBrZXlmcmFtZXMgbWFzY290UGFjZSB7XG4gIC8qIE1vdmUgcmlnaHQsIGZhY2luZyByaWdodCAqL1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIC0tbWFzY290LWZsaXA6IDE7XG4gIH1cbiAgNDklIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYyg0MDBweCAtIDI4MHB4KSk7XG4gICAgLS1tYXNjb3QtZmxpcDogMTtcbiAgfVxuXG4gIC8qIEZsaXAgYXQgdGhlIHJpZ2h0IGVkZ2UgKi9cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYyg0MDBweCAtIDI4MHB4KSk7XG4gICAgLS1tYXNjb3QtZmxpcDogLTE7XG4gIH1cblxuICAvKiBNb3ZlIGxlZnQsIGZhY2luZyBsZWZ0ICovXG4gIDk5JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIC0tbWFzY290LWZsaXA6IC0xO1xuICB9XG5cbiAgLyogRmxpcCBiYWNrIGF0IHRoZSBsZWZ0IGVkZ2UgKi9cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIC0tbWFzY290LWZsaXA6IDE7XG4gIH1cbn1cblxuLm1hc2NvdC1idWJibGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiAwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAyO1xufVxuXG4ubWFzY290LWJ1YmJsZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIGJvdHRvbTogLTZweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG4iLCIlemVuIHtcbiAgYm9keS5wbGF5aW5nLnplbiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbmJvZHkucGxheWluZy56ZW4ge1xuICAucmljb25zIHtcbiAgICBtYXJnaW46IDAuNWVtIDAgMWVtIDA7XG4gIH1cblxuICAjdG9wIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4jZnJpZW5kX2JveCxcbi5zaXRlLXRpdGxlLW5hdixcbi5zaXRlLWJ1dHRvbnMge1xuICBAZXh0ZW5kICV6ZW47XG59XG4iLCIucm91bmRfX3NpZGUge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbiwgJXplbjtcblxuICAuZ2FtZV9fbWV0YSB7XG4gICAgZmxleDogMCAwIGF1dG87XG5cbiAgICAmX19wbGF5ZXJzIC50ZWFtIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxLjdlbTtcbiAgICB9XG4gIH1cbn1cblxuLm1jaGF0IHtcbiAgQGV4dGVuZCAlemVuO1xuXG4gIGZsZXg6IDEgMSAwO1xuICBtYXJnaW4tdG9wOiAkYmxvY2stZ2FwO1xufVxuIiwiLyogc2hhcmVkIHdpdGggYW5hbHlzaXMgKi9cbi5nYW1lX19tZXRhIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAjeyRibG9jay1nYXAgKiAwLjd9ICRibG9jay1nYXA7XG5cbiAgc2VjdGlvbjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIG1hcmdpbi1ib3R0b206ICN7JGJsb2NrLWdhcCAqIDIgLyAzfTtcbiAgICBwYWRkaW5nLWJvdHRvbTogI3skYmxvY2stZ2FwICogMiAvIDN9O1xuICB9XG5cbiAgJl9faW5mb3Mge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC8qIGZvciBib29rbWFyayAqL1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDQlO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIHRpbWUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAuc3RhdHVzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX19wbGF5ZXJzIHtcbiAgICBtYXJnaW4tdG9wOiAwLjNyZW07XG4gICAgZm9udC1zaXplOiA5MCU7XG4gIH1cblxuICAuYm9va21hcmsge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiB6KCdnYW1lLWJvb2ttYXJrJyk7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICB9XG5cbiAgICAmOm5vdCguYm9va21hcmtlZCkgLm9uLFxuICAgICYuYm9va21hcmtlZCAub2ZmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLnVzZXItdHYge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cbn1cblxuLmdhbWVfX3RvdXJuYW1lbnQge1xuICAuY2xvY2sge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAwLjJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAuZ2FtZV9fbWV0YSAuYm9va21hcmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuZ2FtZV9fbWV0YTpob3ZlciAuYm9va21hcmsge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iLCIucm91bmRfX2FwcCB7XG4gICZfX3RhYmxlIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLXJpZ2h0LCAlYm94LXNoYWRvdztcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgfVxuXG4gIC5kcmF3LXllcyBzcGFuIHtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICB9XG59XG5cbi5leHBpcmF0aW9uIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMjtcbiAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgY29sb3I6ICNmZmY7XG5cbiAgJi10b3Age1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xuICB9XG5cbiAgJi1ib3R0b20ge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xuICB9XG5cbiAgJi5lbWVyZyB7XG4gICAgYmFja2dyb3VuZDogJGMtYmFkO1xuICB9XG5cbiAgc3Ryb25nIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbiAgfVxufVxuIiwiLnJ1c2VyIHtcbiAgQGV4dGVuZCAlemVuO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgcGFkZGluZzogMCAwLjNlbTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gIH1cblxuICAmLmxvbmcgYSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgfVxuXG4gIHJhdGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luOiAwIDAuMjVlbSAwIDAuM2VtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuNXB4O1xuICB9XG5cbiAgLmxpbmUge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgQGtleWZyYW1lcyBjb25uZWN0aW5nIHtcbiAgICAwJSB7XG4gICAgICBvcGFjaXR5OiAwLjE7XG4gICAgfVxuXG4gICAgNTAlIHtcbiAgICAgIG9wYWNpdHk6IDAuMztcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICB9XG4gIH1cblxuICAmLmNvbm5lY3RpbmcgLmxpbmUge1xuICAgIGFuaW1hdGlvbjogY29ubmVjdGluZyAwLjlzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICB9XG5cbiAgLnJwIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMmVtO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIHBhZGRpbmc6IDAuNWVtIDAuNWVtIDAuNWVtIDAuM2VtO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuXG4gICAgYSB7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICYtdG9wIHtcbiAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgIH1cbiAgICAmLWJvdHRvbSB7XG4gICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgfVxuXG4gIC5wcmVtb3ZlLXRvZ2dsZSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZm9udC1zaXplOiAwLjY1ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZzogMC4xNWVtIDAuNGVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIG1hcmdpbjogMCAwLjJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzLCBjb2xvciAwLjE1cztcblxuICAgICYucHJlbW92ZS1vbiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNGNhZjUwO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuXG4gICAgJi5wcmVtb3ZlLW9mZiB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjQ0MzM2O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG59XG4iLCIucmNsb2NrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgLyogdGhhdCB3ZWlyZCBzaGl0IGlzIHJlcXVpcmVkIHNvIHRoZSBjbG9jayBnb2VzIGFib3ZlIHRoZSBwbGF5ZXIgc2luY2UgdGhleSBzaGFyZSB0aGUgc2FtZSBncmlkIGNlbGwgKi9cbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xuICAgIHotaW5kZXg6IDE7XG4gIH1cblxuICAvKiBvdmVyZmxvdzogaGlkZGVuOyBpcyBub3QgcG9zc2libGUgYmVjYXVzZSBvZiBjbG9jayBiYXJzIGFuZCBzaGFkb3dzICovXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAmLWJvdHRvbSB7XG4gICAgICAvKiBvdmVyIHRoZSB0YWJsZSBzaGFkb3cgKi9cbiAgICAgIHotaW5kZXg6IDA7XG4gICAgfVxuICB9XG5cbiAgJi10dXJuIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6ICRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxLXVuaWJvYXJkKSB7XG4gICAgICAmX190ZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgICAgICBwYWRkaW5nOiAwICRibG9jay1nYXA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIGhlaWdodDogMi4yZW07XG4gICAgICBsaW5lLWhlaWdodDogMi4yZW07XG4gICAgfVxuICB9XG5cbiAgLmJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuYmVyc2VyayB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIC5iYXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG5cbiAgICAgIC53aXRoLWV4cGlyYXRpb24gJiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi10b3AgLmJhciB7XG4gICAgICBib3R0b206IC00cHg7XG4gICAgfVxuXG4gICAgJi1ib3R0b20gLmJhciB7XG4gICAgICB0b3A6IC00cHg7XG4gICAgfVxuICB9XG5cbiAgLnRpbWUge1xuICAgIEBleHRlbmQgJXJvYm90bywgJWJveC1zaGFkb3c7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgbWluLXdpZHRoOiAzZW07XG4gICAgZm9udC1zaXplOiAyLjhlbTtcbiAgICBsaW5lLWhlaWdodDogJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiAwICRibG9jay1nYXA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC8qIGVuc3VyZSB1cGRhdGVzIGRvbid0IHJlZHJhdyBvdGhlciBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgKi9cbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAmLmhvdXIge1xuICAgICAgZm9udC1zaXplOiAyLjNlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwgJG1xLXRhbGwpIHtcbiAgICAgIGZvbnQtc2l6ZTogMy42ZW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4xMmVtO1xuXG4gICAgICAmLmhvdXIge1xuICAgICAgICBmb250LXNpemU6IDIuOWVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi10b3AgLnRpbWUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtdG9wO1xuICB9XG5cbiAgJi1ib3R0b20gLnRpbWUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuICB9XG5cbiAgJi1jb3JyZXNwb25kZW5jZSAudGltZSB7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgZm9udC1zaXplOiAxLjllbTtcbiAgICB9XG4gIH1cblxuICB0ZW50aHMge1xuICAgIGZvbnQtc2l6ZTogNzAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0wLjE4ZW07XG4gIH1cblxuICBodW5zIHtcbiAgICBmb250LXNpemU6IDgwJTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIC8qIHNpbmNlIGNsb2NrIGlzIHJpZ2h0LWFsaWduZWQsIGh1bnMgc2hpZnQgaXQgbGVmdCBvbiBldmVyeSBtb3ZlICovXG4gICAgfVxuICB9XG5cbiAgc2VwIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcblxuICAgICYubG93IHtcbiAgICAgIG9wYWNpdHk6IDAuMTU7XG4gICAgfVxuICB9XG5cbiAgJi5ydW5uaW5nIC50aW1lIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgfVxuXG4gICYuZW1lcmcgLnRpbWUsXG4gICYub3V0b2Z0aW1lIC50aW1lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDI1JSk7XG4gIH1cblxuICAmLmVtZXJnLnJ1bm5pbmcgLnRpbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgNTAlKTtcbiAgICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICB9XG5cbiAgLmdvLWJlcnNlcmsge1xuICAgIGZvbnQtc2l6ZTogMi4yZW07XG4gICAgcGFkZGluZzogMCAwLjNlbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWFjY2VudCAhaW1wb3J0YW50O1xuICAgICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC50b3VyLXJhbmssXG4gIC5tb3JldGltZSxcbiAgLmJlcnNlcmtlZCB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXIsICV6ZW47XG5cbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICAgIG9yZGVyOiAtMTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgIGZvbnQtc2l6ZTogMS43ZW07XG4gICAgICBwYWRkaW5nOiAwIDAuM2VtO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG9yZGVyOiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG4gIC50b3VyLXJhbmsge1xuICAgIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICAgIG9wYWNpdHk6IDAuNjU7XG4gIH1cblxuICAubW9yZXRpbWUge1xuICAgIG9wYWNpdHk6IDAuNDtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAuYmVyc2Vya2VkIHtcbiAgICBmb250LXNpemU6IDIuMmVtO1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L21hdGVyaWFsJztcblxuLm1hdGVyaWFsIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIGRpdiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgbXBpZWNlIHtcbiAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgJi5wYXduIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgICB9XG4gIH1cblxuICBzY29yZSB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgaGVpZ2h0OiAkY29sMS1tYXQtaGVpZ2h0O1xuICAgIG1hcmdpbi1sZWZ0OiAzdm1pbjtcblxuICAgIGRpdiB7XG4gICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgIH1cblxuICAgIG1waWVjZSB7XG4gICAgICB3aWR0aDogJGNvbDEtbWF0LWhlaWdodCAqIDMvNDtcbiAgICAgIGhlaWdodDogJGNvbDEtbWF0LWhlaWdodCAqIDMvNDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIubWF0ZXJpYWwge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgZGl2IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICBtcGllY2Uge1xuICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICYucGF3biB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9QLnN2Zyk7XG4gICAgfVxuXG4gICAgJi5iaXNob3Age1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vQi5zdmcpO1xuICAgIH1cblxuICAgICYua25pZ2h0IHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL04uc3ZnKTtcbiAgICB9XG5cbiAgICAmLnJvb2sge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUi5zdmcpO1xuICAgIH1cblxuICAgICYucXVlZW4ge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUS5zdmcpO1xuICAgIH1cblxuICAgICYua2luZyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9LLnN2Zyk7XG4gICAgfVxuXG4gICAgQGlmICR0aGVtZSA9PSAndHJhbnNwJyB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBkcm9wLXNoYWRvdygwIDFweCAxcHggIzAwMCk7XG4gICAgfVxuICB9XG5cbiAgc2NvcmUge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgfVxufVxuIiwiI3skbW92ZXMtdGFnfSA+IDpub3QoLnJlc3VsdC13cmFwKSB7XG4gIEBleHRlbmQgJXplbjtcbn1cblxuI3skaW5kZXgtdGFnfSB7XG4gIEBleHRlbmQgJXJvYm90bztcbn1cblxuI3skbW92ZS10YWd9IHtcbiAgQGV4dGVuZCAlc2FuO1xufVxuXG4jeyRybW92ZXMtdGFnfSB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uLCAlZG91YmxlLXRhcDtcblxuICAuYnV0dG9ucyB7XG4gICAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgb3JkZXI6IDI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAuZmJ0LFxuICAubm9vcCB7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgZmxleDogMCAwIGNhbGMoMTAwJSAvIDYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICN7JG1vdmVzLXRhZ30sXG4gIC5tZXNzYWdlIHtcbiAgICBmbGV4OiAwIDAgNy40cmVtO1xuICB9XG5cbiAgQGltcG9ydCAnbW92ZXMtY29sMSc7XG4gIEBpbXBvcnQgJ21vdmVzLWNvbDInO1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gIC5jb2wxLXJtb3Zlcy1wcmVsb2FkIHtcbiAgICBoZWlnaHQ6IDIuNWVtO1xuICB9XG59XG4iLCIvKiBjb250ZXh0OiAucm1vdmVzICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLmNvbDEtbW92ZXMge1xuICAgIGZsZXg6IDAgMCAkY29sMS1tb3Zlcy1oZWlnaHQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAuZmJ0IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgcGFkZGluZzogMCAxLjNlbTtcbiAgICB9XG5cbiAgICBib2R5LnBsYXlpbmcuemVuICYge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICN7JG1vdmVzLXRhZ30ge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggNHB4IGMtbGlnaHQoJGMtYmctcGFnZSwgNzglKSBpbnNldDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggIzAwMCBpbnNldDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBoZWlnaHQ6IDBweDtcbiAgICB9XG5cbiAgICA+IDpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICN7JGluZGV4LXRhZ30sXG4gICN7JG1vdmUtdGFnfSxcbiAgLnJlc3VsdC13cmFwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAwLjNyZW07XG4gIH1cblxuICAjeyRpbmRleC10YWd9IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjE1ZW07XG4gIH1cblxuICAjeyRtb3ZlLXRhZ30ge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi4jeyRhY3RpdmUtY2xhc3N9LFxuICAgICY6aG92ZXIge1xuICAgICAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGhzbCgkYy1zaXRlLWh1ZSwgMjAlLCA4NSUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuI3skYWN0aXZlLWNsYXNzfSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICAgIH1cbiAgfVxuXG4gIC5idXR0b25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnJlc3VsdCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gIH1cblxuICAubWVzc2FnZSB7XG4gICAgZmxleDogMCAwICRjb2wxLW1vdmVzLWhlaWdodDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcblxuICAgIGJyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgc3Ryb25nIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbiAgICB9XG5cbiAgICBib2R5LnBsYXlpbmcuemVuICYge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0dXMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8qIGNvbnRleHQ6ICN7JHJtb3Zlcy10YWd9ICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcblxuICAjeyRtb3Zlcy10YWd9IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvKiByZXF1aXJlZCBieSBhdXRvU2Nyb2xsICovXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHdpbGwtY2hhbmdlOiBzY3JvbGwtcG9zaXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBmb250LXNpemU6IDEuMWVtO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IDBweDtcbiAgICB9XG4gIH1cblxuICAjeyRpbmRleC10YWd9IHtcbiAgICAvKiBFZGdlIDE4OiBmbGV4OiAwIDAgY2FsYygxMDAlIC8gNik7IGNhdXNlcyB3cmFwICovXG4gICAgZmxleDogMCAwIDE2LjY2NiU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICAjeyRtb3ZlLXRhZ30ge1xuICAgIC8qIEVkZ2UgMTg6IGZsZXg6IDAgMCBjYWxjKDEwMCUgKiA1IC8gMTIpOyBjYXVzZXMgd3JhcCAqL1xuICAgIGZsZXg6IDAgMCA0MS42NjYlO1xuICAgIHBhZGRpbmctbGVmdDogMC43ZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuXG4gICAgJi4jeyRhY3RpdmUtY2xhc3N9IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMjAlKTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgIH1cblxuICAgIC8vIFByb2dyZXNzaXZlIENoZXNzOiBlYWNoIG1vdmUgaW4gYSBzZXJpZXMgaXMgYSBzcGFuIHdpdGggZGF0YS1wbHlcbiAgICBzcGFuIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMC4zNWVtO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICB9XG5cbiAgICAgICYuI3skYWN0aXZlLWNsYXNzfSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcm9ncmVzc2l2ZSBDaGVzcyByb3cgd3JhcHBlciDigJQgb25lIHNlcmllcyBwZXIgcm93OiBpbmRleCB8IHBhd24gfCBjb3VudCB8IG1vdmVzXG4gIGRpdi5wZ3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAjeyRpbmRleC10YWd9IHtcbiAgICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLXRvcDogMC4yZW07XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgLnBnci1zeW0ge1xuICAgICAgZmxleDogMCAwIDEwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmctdG9wOiAwLjJlbTtcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgfVxuXG4gICAgLnBnci1jbnQge1xuICAgICAgZmxleDogMCAwIDEyJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmctdG9wOiAwLjJlbTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgIH1cblxuICAgICN7JG1vdmUtdGFnfSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICB9XG4gIH1cblxuICAubWVzc2FnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbjogMWVtO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5yZXN1bHQtd3JhcCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLnJlc3VsdCB7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIHBhZGRpbmc6IDVweCAwIDNweCAwO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC5zdGF0dXMge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgfVxuXG4gIEBhdC1yb290IHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICAucGdyLWNvdW50ZXIge1xuICAgICAgICBncmlkLWFyZWE6IHBnci1jb3VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMS4yZW0gMC44ZW0gMC41ZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICAgICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjZlbTtcblxuICAgICAgICAmX19sYWJlbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmX19waXBzIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGdhcDogNXB4O1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3BpcCB7XG4gICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjNGNhZjUwO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgICAgICAmLnVzZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2M5YTIyNztcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnBnci1hcnJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7XG5cbiAgICAgICAgJi0tZ3JlZW4geyBjb2xvcjogIzRjYWY1MDsgfVxuICAgICAgICAmLS15ZWxsb3cgeyBjb2xvcjogI2ZmYzEwNzsgfVxuXG4gICAgICAgICZfX3NoYWZ0IHtcbiAgICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJl9faGVhZCB7XG4gICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMTNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXVwICZfX2hlYWQge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDE4cHggc29saWQgY3VycmVudENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tZG93biAmX19oZWFkIHtcbiAgICAgICAgICBib3JkZXItdG9wOiAxOHB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRvd24gJl9fc2hhZnQge1xuICAgICAgICAgIG9yZGVyOiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAucGdyLWhvdy10by1wbGF5IHtcbiAgICAgICAgZ3JpZC1hcmVhOiBwZ3ItaG93dG87XG4gICAgICB9XG5cbiAgICAgIC5wZ3ItYXJyb3ctdG9nZ2xlIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBwZ3ItYXJyb3ctdG9nO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41ZW0gMC44ZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICAgICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucGdyLWhvdy10by1wbGF5IHtcbiAgICBncmlkLWFyZWE6IHBnci1ob3d0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjZlbSAwLjhlbSAwLjhlbTtcbiAgICBmb250LXNpemU6IDAuODJlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4O1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxLjA1ZW07XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuMzVlbTtcbiAgICB9XG5cbiAgICBvbCB7XG4gICAgICBtYXJnaW46IDAgMCAwLjRlbSAxLjJlbTtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG4gIH1cblxuICAucGdyLWFycm93LXRvZ2dsZSB7XG4gICAgZ3JpZC1hcmVhOiBwZ3ItYXJyb3ctdG9nO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNWVtIDAuOGVtO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDtcblxuICAgICZfX3N3aXRjaGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICBsYWJlbDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgfVxuXG4gICAgICAuc3dpdGNoIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5yY29udHJvbHMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAuZGRsb2FkZXIge1xuICAgIG1hcmdpbjogMjBweCBhdXRvIDEwcHggYXV0bztcbiAgfVxuXG4gIC5zdWdnZXN0aW9uLFxuICAucGVuZGluZyxcbiAgLm5lZ290aWF0aW9uIHtcbiAgICBwYWRkaW5nOiAwLjVlbSAzJTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDFweDtcbiAgfVxuXG4gIC5zdWdnZXN0aW9uIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuXG4gICAgcCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIG1hcmdpbjogMC41ZW0gMCAwIDA7XG4gICAgfVxuICB9XG5cbiAgLnBlbmRpbmcge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgIHAge1xuICAgICAgZmxleDogMyAxO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBmbGV4OiAxIDE7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBmbGFzaC1vbmNlIHtcbiAgICBmcm9tIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgIH1cbiAgfVxuXG4gIC5uZWdvdGlhdGlvbiB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuICAgIGFuaW1hdGlvbjogZmxhc2gtb25jZSAxcyBlYXNlLWluO1xuXG4gICAgcGFkZGluZzogMXB4O1xuXG4gICAgcCB7XG4gICAgICBmbGV4OiAzIDEgYXV0bztcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIGZsZXg6IDEgMCAzcmVtO1xuICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzZW07XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgfVxuXG4gICAgLmFjY2VwdCB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIG1hcmdpbi1yaWdodDogMXB4O1xuICAgIH1cblxuICAgIC5kZWNsaW5lIHtcbiAgICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgYTpob3ZlciB7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgfVxuXG4gICAgYS5kZWNsaW5lOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBhIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgICAgICBmbGV4OiAwIDAgMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDEuMmVtO1xuICAgICAgfVxuXG4gICAgICBwYWRkaW5nOiAzcHg7XG4gICAgfVxuICB9XG5cbiAgLmdsb3dpbmc6aG92ZXIge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gIC5mb2xsb3ctdXAge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvKiBmb3IgcmVtYXRjaC1kZWNsaW5lICovXG4gICAgLmZidCB7XG4gICAgICBwYWRkaW5nOiAxMnB4IDA7XG4gICAgICBtYXJnaW46IDFweCAxcHggMCAxcHg7XG4gICAgfVxuXG4gICAgPiAuZmJ0OmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLmZidC5zdHJvbmcge1xuICAgICAgcGFkZGluZzogMmVtIDA7XG4gICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIH1cblxuICAgIC53ZWFrIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICBwYWRkaW5nOiA2cHggMDtcbiAgICB9XG5cbiAgICAud2Vhazo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICBmb3JtIC5mYnQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLnNwaW5uZXIge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAuYW5hbHlzaXMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1sZWZ0OiAyZW07XG4gICAgfVxuICB9XG5cbiAgLnJlbWF0Y2gge1xuICAgICYuZmJ0IHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgaGVpZ2h0OiA2cmVtO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICAgIH1cblxuICAgICYubWUge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgODAlKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJ1YmJlci1iYW5kIHtcbiAgICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDYlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMjUsIDAuNzUsIDEpO1xuICAgICAgfVxuXG4gICAgICA4JSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAxLjI1LCAxKTtcbiAgICAgIH1cblxuICAgICAgMTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMTUsIDAuODUsIDEpO1xuICAgICAgfVxuXG4gICAgICAxMyUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45NSwgMS4wNSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDE1JSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAwLjk1LCAxKTtcbiAgICAgIH1cblxuICAgICAgMjAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgYnV0dG9uLWdsb3dpbmcge1xuICAgICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgfVxuICAgICAgNjAlIHtcbiAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgfVxuICAgICAgODUlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmdsb3dpbmcge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBhbmltYXRpb246IGJ1dHRvbi1nbG93aW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGFuaW1hdGlvbjogcnViYmVyLWJhbmQgNXMgaW5maW5pdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mYnQ6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgNzAlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYtZGVjbGluZSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVib3gtcmFkaXVzLXJpZ2h0LCAlYm94LXNoYWRvdztcblxuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAtMjVweDtcbiAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCA1MCUpO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmFkO1xuICAgICAgICBjb2xvcjogJGMtYmFkLW92ZXI7XG4gICAgICAgIHJpZ2h0OiAtMzZweDtcbiAgICAgICAgd2lkdGg6IDM1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIucmljb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG5cbiAgLmZidCB7XG4gICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICBwYWRkaW5nOiAwLjFlbSAxZW07XG4gIH1cblxuICAmLmNvbmZpcm0gPiBidXR0b24ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC5hY3QtY29uZmlybSB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDYwcHg7XG5cbiAgICAuZmJ0Lm5vIHtcbiAgICAgIHBhZGRpbmc6IDAuMWVtIDA7XG4gICAgICB3aWR0aDogMzBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAtMzRweDtcbiAgICB9XG5cbiAgICAuZmJ0LnllcyB7XG4gICAgICAkYWN0LWNvbmZpcm0tc2hhZGU6IG1peCgjMDAwLCAkYy1hY2NlbnQsIDMwJSk7XG5cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgdG9wOiAtM3B4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgJGFjdC1jb25maXJtLXNoYWRlO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgLTFweCAkYWN0LWNvbmZpcm0tc2hhZGU7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgMHB4KTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA3KTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDVweCk7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAkYWN0LWNvbmZpcm0tc2hhZGU7XG4gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5yb3VuZF9fbm93LXBsYXlpbmcge1xuICBoMyB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgbWFyZ2luOiAxZW0gMCAwLjVlbSAwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgbWFyZ2luOiAxZW0gJGJsb2NrLWdhcCAwLjVlbSAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gIC5zaW11bCB7XG4gICAgc3BhbiB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIG1hcmdpbjogMCAwLjVlbTtcbiAgICB9XG5cbiAgICAud2luIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgIC5kcmF3IHtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgIC5sb3NzIHtcbiAgICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgfVxuICB9XG5cbiAgLnN3aXRjaGVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGxhYmVsIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc3dpdGNoIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cbiAgfVxuXG4gIC5ub3ctcGxheWluZyB7XG4gICAgQGV4dGVuZCAlcGFnZS10ZXh0O1xuICB9XG59XG4iLCIua2V5Ym9hcmQtbW92ZSB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBpbnB1dCB7XG4gICAgd2lkdGg6IDQuNWVtO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIGJvcmRlcjogJGJvcmRlcjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmLndyb25nIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlcjtcbiAgICB9XG4gIH1cblxuICBlbSB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG59XG4iLCIjcG93ZXJUaXAge1xuICAuZm9yZWNhc3QtaW5mbyB7XG4gICAgLnRpdGxlIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IDAuN2VtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FFRUEsWUFBWTtBQWtCWiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBTW5CLGtDQUFrQztBQUVsQyxzQkFBc0I7QUFNdEIsb0NBQW9DO0FBRXBDLG9CQUFvQjtBQU1wQixpQ0FBaUM7QUFFakMsZ0JBQWdCO0FBSWhCO3lFQUN5RTtBQUd6RSxzRUFBc0U7QUFHdEUsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsZ0JBQWdCO0FBSWhCLGlCQUFpQjtBQUlqQiwrQkFBK0I7QUE4Qi9CLGFBQWE7QUFNYixhQUFhO0FEbkhiLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFLbkIsc0JBQXNCO0FBS3RCLGdCQUFnQjtBQUdoQjs7OzZFQUc2RTtBQUc3RTtzRkFDc0Y7QUFHdEYsaUJBQWlCO0FBR2pCLGlCQUFpQjtBQUlqQixrQkFBa0I7QUFJbEIsY0FBYztBSW5FZCx3Q0FBd0M7QXNCQXhDLFlBQVk7QUFnQlosYUFBYTtBQVNiLGtCQUFrQjtBQUtsQixrQkFBa0I7QUFLbEIsYUFBYTtBRW5DYixzREFBc0Q7QUFPdEQsdUVBQXVFO0FFaUJyRSxBQXBCRixhQW9CZSxDdUNoQmYsR0FBRyxDdkNKUTtFQUNULFdBQVcsRUFBRSx1QkFBdUI7Q0FDckM7O0F1Q0VELEF2Q0FBLEd1Q0FHLEN2Q29CRCxJQUFJLEVzQnRCSCxXQUFLLEVFTEws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 */
